Gratis verzending vanaf €74,95 NL (€99,95 BE/DE)

Voor 16:00 besteld = morgen in huis

Express voor 13:00 besteld = vanavond in huis*

14 dagen gratis terugsturen*


Land

Raspberry Pi project: Weervoorspellingsbot

Met dit project zal je Raspberry Pi 5 in staat zijn om je dagelijks een weerbericht te sturen via Telegram. Dit weerbericht bevat informatie zoals de huidige weersomstandigheden en de temperatuur voor een door jou ingestelde stad. Dit project biedt een geweldige gelegenheid om te leren hoe je de Raspberry Pi kunt gebruiken voor praktische toepassingen en om kennis te maken met Python-programmering. Ook leer je hoe je een API gebruikt. Het is ook mogelijk om dit project te maken met de Raspberry Pi 4B.

 Deze handleiding behandeld: 

  • Benodigdheden
  • Telgram bot en API-sleutel verkrijgen
  • Python bibliotheken installeren
  • Code
  • Code uitvoeren
  • Beginner 40% 40%
  • 30-45 min 45% 45%
  • Kosten €105,81 55% 55%

Stap 1: Benodigdheden:

Stap 2: Telegram bot en API-sleutel verkrijgen

a. Maak een Telegram-bot aan door contact op te nemen met de BotFather in Telegram.

b. Noteer de bot-token die je van de BotFather krijgt.

c. Registreer je op de OpenWeatherMap-website en verkrijg een gratis API-sleutel

Afbeelding van een AstroPi

Stap 3: Python bibliotheken installeren

Voordat je de code kunt uitvoeren, moet je ervoor zorgen dat de benodigde Python-bibliotheken zijn geïnstalleerd op je Raspberry Pi 5. Je kunt deze bibliotheken installeren met behulp van pip, de Python-pakketbeheerder. Open een terminal op je Raspberry Pi 5 en voer de volgende commando’s uit om python en pip te installeren:

sudo apt-get update
sudo apt-get upgrade
sudo apt install python3
sudo apt install python3-pip

Installeer nu de python bibliotheken

pip install requests
pip install python-telegram-bot

Ten slotte herstart je de Raspberry Pi om om de installatie te voltooien:

sudo reboot

Stap 4: Code

Kopieer en plak de code in Thonny. Vervang de placeholders in de code (zoals ‘JE_BOT_TOKEN’ en ‘JE_OPENWEATHERMAP_API_KEY’) door de daadwerkelijke bot-token en API-sleutel die je hebt verkregen.

import requests
import datetime
from telegram import Bot
import time
import asyncio

 

 

# Vervang ‘JE_BOT_TOKEN’ door je eigen Telegram bot token
bot_token = ‘JE_BOT_TOKEN_HIER’

# Vervang ‘STAD’ door de naam van de stad waarvoor je het weer wilt ophalen
stad = ‘Amersfoort’

# Vervang ‘JE_OPENWEATHERMAP_API_KEY’ door je eigen gratis OpenWeatherMap API-sleutel
api_key = ‘JE_OPENWEATHERMAP_API_KEY_HIER’

 

# Functie om het weerbericht op te halen
async def get_weer():
    base_url = ‘http://api.openweathermap.org/data/2.5/weather’
    params = {
        ‘q’: stad,
        ‘appid’: api_key,

        ‘units’: ‘metric’ # Gebruik ‘imperial’ voor Fahrenheit in plaats van Celsius
     }
    response = requests.get(base_url, params=params)
    weer_data = response.json()

    if response.status_code == 200:
        weer_beschrijving = weer_data[‘weather’][0][‘description’]
        temperatuur = weer_data[‘main’][‘temp’]
        return f’Het weer in {stad} vandaag: {weer_beschrijving}, Temperatuur: {temperatuur}°C’
    else:
        return ‘Het weerbericht kon niet worden opgehaald.’

 

 

# Functie om een Telegram-bericht te versturen
async def send_telegram_bericht(bericht):
    bot = Bot(token=bot_token)
    chat_id = ‘JE_CHAT_ID_HIER’ # Vervang dit door je eigen chat-ID

    await bot.send_message(chat_id=chat_id, text=bericht)

    # Code continu uitvoeren

 

 

async def main():

    while True:
        now = datetime.datetime.now()
        if now.hour == 14 and now.minute == 5: # Vervang dit door je gewenste tijd
            weer_rapport = await get_weer()
            await send_telegram_bericht(weer_rapport)

            # Wacht even om te voorkomen dat er snel achter elkaar meerdere berichten worden verstuurd
            await asyncio.sleep(60) # Wacht 60 seconden (pas aan indien nodig)
        else:
            # Wacht even voordat de tijd opnieuw wordt gecontroleerd
            await asyncio.sleep(60) # Wacht 60 seconden (pas aan indien nodig)

 

 

if __name__ == “__main__”:
    asyncio.run(main())

Stap 5: Code uitvoeren

a. Sla het Python-script op met een passende naam, bijvoorbeeld weer_project.py.

b. Navigeer naar de map waarin je het Python-script hebt opgeslagen.

c. Voer het script uit met het volgende commando:

python weer_project.py

Het script begint te draaien en controleert elke minuut of het tijd is om het weerbericht op te halen en naar je Telegram-chat te sturen. Om te testen als het goed werkt kan je de tijd aanpassen naar een tijd die over 2 minuten is en dan de code runnen.

 En dat was het! Is het niet gelukt? Kijk even terug in de vorige stappen om te kijken wat er fout is gegaan. Is het wel gelukt? Neem dan een kijkje bij onze projecten!

De waardering van www.elektronicavoorjou.nl bij WebwinkelKeur Reviews is 9.3/10 gebaseerd op 5566 reviews.