sa
unknown
python
2 years ago
2.5 kB
19
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