Беспроводной датчик температуры digoo dg-r8h

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
kostya4000
Сообщения: 39
Зарегистрирован: Чт ноя 16, 2017 7:47 am
Благодарил (а): 13 раз
Поблагодарили: 12 раз

Беспроводной датчик температуры digoo dg-r8h

Сообщение kostya4000 » Чт июл 23, 2020 10:25 am

Беспроводной датчик температуры digoo dg-r8h рабочающий на частоте 433.
Подключил его через sonoff rf bridge в режиме прослушивания, от него приходит информация в виде AAA60601DD1A103F0855.
Нашел скрипт на python для преобразования в нормальные значения температуры и влажности.

Код: Выделить всё

data= "AAA60601DD0A6F3F0855"

id_s    = data[9]+data[8]
flag_s  = data[11]

temp_s  = data[10]+data[13]+data[12]
const_s = data[15]
hum_s   = data[14]+data[12]

id      = int(id_s, 16)
flag    = int(flag_s, 16)
battery = flag>>3
channel = (flag&0x3)+1
const   = int(const_s, 16)
temp    = int(temp_s   , 16)/10.
hum     = int(hum_s    , 16)

print "data    %s" % (data)
print "id      %x" % (id)
print "flag    %x" % (flag)
print "battery %d" % (battery)
print "channel %d" % (channel)
print "cons    %x" % (const)
print "temp    %.1f" % (temp)
print "hum     %d" % (hum)
Это значение прилетает по mqtt, может кто подсказать можно как то эти значения получить в нормальных значениях в majordomo?
или только переписывать этот скрипт на php? В php не силен.
Может если кому-то будет интересно, то могу расписать как его прикрутить к sonoff rf bridge.
kostya4000
Сообщения: 39
Зарегистрирован: Чт ноя 16, 2017 7:47 am
Благодарил (а): 13 раз
Поблагодарили: 12 раз

Re: Беспроводной датчик температуры digoo dg-r8h

Сообщение kostya4000 » Пн авг 03, 2020 9:34 am

Вообщем сделал метод на python, все работает.
Как теперь сделать, что бы метод срабатывал после обновления свойств?

Код: Выделить всё

data= mjdm.gg("temp_vlaga_uliga.priletaet_433")

id_s    = data[9]+data[8]
flag_s  = data[11]

temp_s  = data[10]+data[13]+data[12]
const_s = data[15]
hum_s   = data[14]+data[12]

id      = int(id_s, 16)
flag    = int(flag_s, 16)
battery = flag>>3
channel = (flag&0x3)+1
const   = int(const_s, 16)
temp    = int(temp_s   , 16)/10.
hum     = int(hum_s    , 16)

#print "data    %s" % (data)
#print "id      %x" % (id)
#print "flag    %x" % (flag)
#print "battery %d" % (battery)
#print "channel %d" % (channel)
#print "cons    %x" % (const)

mjdm.sg("temp_vlaga_uliga.hum", hum)
mjdm.sg("temp_vlaga_uliga.temp", temp)
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Беспроводной датчик температуры digoo dg-r8h

Сообщение Chainik » Пн авг 03, 2020 9:52 am

kostya4000 писал(а):
Пн авг 03, 2020 9:34 am
Вообщем сделал метод на python, все работает.
Как теперь сделать, что бы метод срабатывал после обновления свойств?
Так есть же в настройках свойства "Запускать метод при изменении". Просто ссылаетесь в этом пункте на нужный метод.
kostya4000
Сообщения: 39
Зарегистрирован: Чт ноя 16, 2017 7:47 am
Благодарил (а): 13 раз
Поблагодарили: 12 раз

Re: Беспроводной датчик температуры digoo dg-r8h

Сообщение kostya4000 » Пн авг 03, 2020 9:55 am

нашел уже, это только в том случае если свойство создано в классе
kostya4000
Сообщения: 39
Зарегистрирован: Чт ноя 16, 2017 7:47 am
Благодарил (а): 13 раз
Поблагодарили: 12 раз

Re: Беспроводной датчик температуры digoo dg-r8h

Сообщение kostya4000 » Пн авг 03, 2020 10:25 am

но почему то другой прикол, если свойство создано в классе то при линке из mqtt данные в него не попадают.
img-2020-08-03-12-23-02.png
img-2020-08-03-12-23-02.png (53.43 КБ) 2477 просмотров
и в mqtt линк есть
img-2020-08-03-12-24-46.png
img-2020-08-03-12-24-46.png (30.2 КБ) 2477 просмотров
Не могу понять где косяк.
kostya4000
Сообщения: 39
Зарегистрирован: Чт ноя 16, 2017 7:47 am
Благодарил (а): 13 раз
Поблагодарили: 12 раз

Re: Беспроводной датчик температуры digoo dg-r8h

Сообщение kostya4000 » Пн авг 03, 2020 10:54 am

Пришлось пересоздать свойства класса с новыми названиями, заново привязать линк mqtt и все заработало.
Последний раз редактировалось kostya4000 Пн авг 03, 2020 11:04 am, всего редактировалось 1 раз.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Беспроводной датчик температуры digoo dg-r8h

Сообщение Chainik » Пн авг 03, 2020 11:02 am

Что-то у вас с синтаксисом. Не думаю, что в наименовании "Объект.Свойства" допускается использовать больше, чем одна точка.
Если hum -- это переменная, то тогда правильная запись выглядит как $hum.
kostya4000
Сообщения: 39
Зарегистрирован: Чт ноя 16, 2017 7:47 am
Благодарил (а): 13 раз
Поблагодарили: 12 раз

Re: Беспроводной датчик температуры digoo dg-r8h

Сообщение kostya4000 » Пн авг 03, 2020 11:05 am

вот сейчас с таким методом заработало:

Код: Выделить всё

#print("This is Python script code")
#print(mjdm.gg("temp_vlaga_uliga.priletaet_433"))
data= mjdm.gg("temp_vlaga_uliga.data_433")

id_s    = data[9]+data[8]
flag_s  = data[11]

temp_s  = data[10]+data[13]+data[12]
const_s = data[15]
hum_s   = data[14]+data[12]

id      = int(id_s, 16)
flag    = int(flag_s, 16)
battery = flag>>3
channel = (flag&0x3)+1
const   = int(const_s, 16)
temp    = int(temp_s   , 16)/10.
hum     = int(hum_s    , 16)

#print "data    %s" % (data)
#print "id      %x" % (id)
#print "flag    %x" % (flag)
#print "battery %d" % (battery)
#print "channel %d" % (channel)
#print "cons    %x" % (const)

mjdm.sg("temp_vlaga_uliga.hum", hum)
mjdm.sg("temp_vlaga_uliga.temp", temp)
Ответить