Датчики TUYA: различия между версиями

Материал из MajorDoMo инфо
(Новая страница: «Category:Датчики Bluetooth Temp & Humidity Sensor, Model: THB2, BTH01 слева|BTH01 датчик температуры слева https://github.com/pvvx/THB2/blob/master/README.md Данная прошивка позволяет отвязать датчик от облака. Через скрипт на Python можно забирать данные. <pre> from bluepy.btle import Scanner,...»)
 
м (Алексей переименовал страницу Категория:Датчики в Датчики TUYA)
 
(нет различий)

Текущая версия от 20:45, 22 января 2024

Bluetooth Temp & Humidity Sensor, Model: THB2, BTH01

BTH01 датчик температуры
THB2.jpg


https://github.com/pvvx/THB2/blob/master/README.md

Данная прошивка позволяет отвязать датчик от облака.

Через скрипт на Python можно забирать данные.

from bluepy.btle import Scanner, DefaultDelegate, UUID, Peripheral
import time
from struct import unpack
import json
import requests
class ScanDelegate(DefaultDelegate):
    def __init__(self):
        DefaultDelegate.__init__(self)

    def handleDiscovery(self, dev, isNewDev, isNewData):
        if isNewDev:
            print ("Discovered device", dev.addr)
        elif isNewData:
            print ("Received new data from", dev.addr)


while True:
  scanner = Scanner()
  devices = scanner.scan(5.0)   
  for dev in devices:
    print ("Device %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi))
    CurrentDevAddr = dev.addr
    for (adtype, desc, value) in dev.getScanData():
        if 'd2fc' in value:        
         print ("  %s = %s = %s" % (desc, value, CurrentDevAddr))
         data = bytes(bytearray.fromhex(value))        
         xvalue = data[8:10]
         (temp,) = unpack("<h", xvalue)
         temp=str(temp / 100)
         xvalue = data[11:13]
         (humi,) = unpack("<h", xvalue)
         humi=str(humi / 100)
         bat=str(data[6])
         data='&temp='+temp+'&humi='+humi+'&bat='+bat
         url = 'http://IP/objects/?script=TUYA'+data
         response=requests.get(url)
         print(response.url)
         print(response.text)
         print(response.status_code)

Скрипт можно запускать из самого MJDM или оформить как сервис