Bot Telegram sederhana untuk menerima informasi melalui MQTT

Bot ini dirancang untuk melihat informasi di server mqtt di dalam jaringan lokal. Ia dapat bekerja di komputer yang sama dengan server mqtt (termasuk Raspberry PI atau serupa) atau secara terpisah. Tugas kendali jarak jauh tidak diatur, hanya penyediaan akses ke data.





Protokol MQTT dirancang khusus untuk digunakan di berbagai perangkat otomasi, sangat mudah untuk mengatur telemetri dan pengumpulan data di dalamnya. Protokol ini didukung oleh perangkat rumah pintar dan banyak pengontrol industri. Ada juga banyak proyek di ESP8266, ESP32 atau platform serupa.





Data telemetri dari berbagai sensor dipublikasikan di server mqtt - misalnya, ini adalah stasiun cuaca dan termometer di rumah kaca. Untuk melihatnya di desktop, saya biasa membuat widget, -, . , , . - ICQ , ICQRemote AutoIt Winamp . , - . . , -, .





, -. Python. Windows, - python-telegram-bot paho-mqtt .





ini . TELEGRAM , MQTT / mqtt , ( - , ). mqtt . . alldata, :





{
'greenhouse/1/temp': '24.76',
'greenhouse/1/upd': '22.04 18:20:30',
'greenhouse/2/temp': '22.95',
'greenhouse/3/temp': '28.91',
'air/outdoor/1/temp': '17.32',
'air/outdoor/1/upd': '22.04 18:21:25',
'air/outdoor/1/pressure': '739',
'air/outdoor/1/humidity': '58.3'
}
      
      



tree - . maketree.





def maketree(group, items, path):
    def sep(s):
        return s.split('/', 1)

    head = [i for i in items if len(sep(i)) == 2]
    tail = [i for i in items if len(sep(i)) == 1]
    if len(tail) == 1:
        return group, tail[0]
    gv = groupby(sorted(head), lambda i: sep(i)[0])
    return group, dict([(i, path) for i in tail] + [maketree(g, [sep(i)[1] for i in v], '') for g, v in gv])

      
      



:





{
    "air": {
        "outdoor": {
            "1": {
                "humidity": "58.3",
                "pressure": "739",
                "temp": "17.32",
                "upd": "22.04 18:21:25"
            }
        }
    },
    "greenhouse": {
        "1": {
            "temp": "24.76",
            "upd": "22.04 18:20:30"
        },
        "2": {
            "temp": "22.95"
        },
        "3": {
            "temp": "28.91"
        }
    }
}

      
      



. , 1 tree[greenhouse][1][temp]. , , . .





. - , Long Polling . python-telegram-bot 12.8, 13 - . pip3 install python-telegram-bot==12.8





: , . , get_keyb:





def get_keyb():
    return [[InlineKeyboardButton('', callback_data='1'),
            InlineKeyboardButton('', callback_data='2')]]
 
      
      



, :





keys = {'': '1', '': '2', '': '3'}
      
      



"" , "40"





Opsi dialog

.





Pada prinsipnya, bot semacam itu dapat digunakan untuk mengontrol sesuatu, misalnya, dengan menerbitkan perintah dalam topik mqtt yang sama - ini hanya dibatasi oleh imajinasi Anda. Tetapi kemudian Anda perlu menambahkan otorisasi dan daftar kontak. Kode bot lengkap di GitHub








All Articles