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%
- 30-45 min 45%
- Kosten €105,81 55%
Stap 1: Benodigdheden:
- Raspberry Pi 5 4GB / 8GB RAM
- Raspberry Pi 4B voeding / 27W USB-C PD Voedingsadapter
- Micro-SD-kaart met Raspberry Pi OS
- Micro-HDMI naar HDMI kabel
- Muis
- Toetsenbord
- Monitor
- Telegram-account: Je hebt een Telegram-account nodig om Telegram-meldingen te ontvangen
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
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!