sa

 avatar
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