Умный дом

Умный дом


pip install aiogram paho-mqtt


sudo apt update

sudo apt install mosquitto mosquitto-clients


sudo systemctl enable mosquitto

sudo systemctl start mosquitto


# Управление светом

import paho.mqtt.publish as publish

from aiogram import Bot, Dispatcher, types

import asyncio


# 🔑 Вставьте ваш Telegram API-ключ

TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"

bot = Bot(token=TOKEN)

dp = Dispatcher(bot)


# 📌 Настройки MQTT

MQTT_BROKER = "mqtt.example.com" # Замените на ваш MQTT-сервер

MQTT_PORT = 1883 # Стандартный порт

MQTT_TOPIC_LIGHT = "home/light"


# 📌 Команда для включения света

@dp.message_handler(commands=["light_on"])

async def light_on(message: types.Message):

  publish.single(MQTT_TOPIC_LIGHT, "ON", hostname=MQTT_BROKER, port=MQTT_PORT)

  await message.reply("💡 Свет включен!")


# 📌 Команда для выключения света

@dp.message_handler(commands=["light_off"])

async def light_off(message: types.Message):

  publish.single(MQTT_TOPIC_LIGHT, "OFF", hostname=MQTT_BROKER, port=MQTT_PORT)

  await message.reply("💡 Свет выключен!")


# 📌 Запуск бота

async def main():

  await dp.start_polling()


asyncio.run(main())


# Код для устройства

import paho.mqtt.client as mqtt

import RPi.GPIO as GPIO # Для Raspberry Pi


# 📌 Настройки

MQTT_BROKER = "mqtt.example.com"

MQTT_TOPIC_LIGHT = "home/light"

RELAY_PIN = 17 # Подключаем реле к пину GPIO 17


# 📌 Настраиваем Raspberry Pi

GPIO.setmode(GPIO.BCM)

GPIO.setup(RELAY_PIN, GPIO.OUT)


# 📌 Функция обработки сообщений MQTT

def on_message(client, userdata, msg):

  command = msg.payload.decode()

  if command == "ON":

    GPIO.output(RELAY_PIN, GPIO.HIGH) # Включаем свет

    print("💡 Свет включен")

  elif command == "OFF":

    GPIO.output(RELAY_PIN, GPIO.LOW) # Выключаем свет

    print("💡 Свет выключен")


# 📌 Подключаемся к MQTT

client = mqtt.Client()

client.on_message = on_message

client.connect(MQTT_BROKER)


# 📌 Подписываемся на топик и ждем сообщения

client.subscribe(MQTT_TOPIC_LIGHT)

client.loop_forever()

Report Page