sa
unknown
python
2 years ago
2.5 kB
7
Indexable
import time from lywsd03mmc import Lywsd03mmcClient from telegram import Bot, ParseMode from telegram.ext import Updater, CommandHandler, CallbackContext # Telegram bot tokenini buraya ekleyin TELEGRAM_BOT_TOKEN = "6658264251:AAEhvAbj6_Qu261dOWWdJ8szQyGDaFCVE0U" # Cihaz MAC adresini buraya ekleyin DEVICE_MAC_ADDRESS = "A4:C1:38:05:2F:DD" # Telegram chat ID'sini buraya ekleyin TELEGRAM_CHAT_ID = "6501915641" # Sıcaklık eşiği (örneğin, 33 derece) TEMPERATURE_THRESHOLD = 33 # Telegram botunu oluştur bot = Bot(token=TELEGRAM_BOT_TOKEN) # LYWSD03MMC cihazını temsil eden sınıf class SensorData: def __init__(self, temperature=None, humidity=None, battery=None, units=None): self.temperature = temperature self.humidity = humidity self.battery = battery self.units = units # LYWSD03MMC cihazından veri al def get_sensor_data(): client = Lywsd03mmcClient(DEVICE_MAC_ADDRESS) data = client.data return SensorData(temperature=data.temperature, humidity=data.humidity, battery=data.battery, units=client.units) # Telegram'a mesaj gönder def send_message(context: CallbackContext): sensor_data = get_sensor_data() message = f"Sıcaklık: {sensor_data.temperature}\nNem: {sensor_data.humidity}\nPil: {sensor_data.battery}\nEkran birimleri: {sensor_data.units}" # Mesajı gönder bot.send_message(chat_id=TELEGRAM_CHAT_ID, text=message, parse_mode=ParseMode.MARKDOWN) # Sıcaklık eşiğinin altındaysa ve acil mesaj sayısı 10'dan azsa acil mesaj gönder if sensor_data.temperature is not None and sensor_data.temperature < TEMPERATURE_THRESHOLD: send_emergency_messages() # Acil mesajları gönder def send_emergency_messages(): for _ in range(10): bot.send_message(chat_id=TELEGRAM_CHAT_ID, text="ACİL: Sıcaklık çok düşük!") # Telegram komutu: /start def start(update, context): update.message.reply_text("Bot başlatıldı. Bilgiler her 5 dakikada bir güncellenecek.") def main(): updater = Updater(token=TELEGRAM_BOT_TOKEN, use_context=True) dp = updater.dispatcher # /start komutu dp.add_handler(CommandHandler("start", start)) # Belirli aralıklarla mesaj gönderme job_queue = updater.job_queue job_queue.run_repeating(send_message, interval=300, first=0) updater.start_polling() updater.idle() if __name__ == "__main__": main()
Editor is loading...
Leave a Comment