Starck
17.Март.2018 11:31:54
1
В log-файле обнаружил вот такую запись, которая периодически повторяется:
wirenboard-ARAXKJYF user.info kernel: [2552924.427081] w1_master_driver w1_bus_master1: Family 79 for 79.997c6fd96b5d.04 is not registered.
Как я понимаю, это связано с 1-wire датчиками. Да, они отвалились на время, а теперь я их вновь вижу, но обращение к ним из правил выдает ошибку:
ECMAScript error: TypeError: call target not an object
duk_js_executor.c:2761
anon /etc/wb-rules/heating.js:84 preventsyield
call native strict preventsyield
anon /usr/share/wb-rules-system/scripts/lib.js:177 preventsyield
Вот строка в коде, где ошибка стала возникать:
var delta_t = dev[“wb-w1”][“10-000802bc9fab”].toFixed(1)-dev[“Adjustment_Floor_Temperature2”][“volume”];
Такого давно не припомню с ними. Что это было и что стало причиной?
шум на шине 1-Wire, проверяйте физическое подключение
Конкретно wb-w1/10-000802bc9fab у вас есть в Devices или MQTT Channels в веб-интерфейсе?
Интересно. А перезагрузка wb-rules помогает?
service wb-rules restart
Starck
17.Март.2018 12:47:47
5
Попробовал. В web интерфейсе они присутствуют как бы, но значения не меняются.
А через правила не видны по-прежнему.
Я перегрузил контроллер, тогда все заработало. Пришлось, хотя я этого избегал как мог.
чудеса. А сделайте пожалуйста
mqtt-get-dump /devices/wb-w1/#uncategorized
на контроллере, пришлите вывод
Starck
17.Март.2018 20:07:29
7
root@wirenboard-ARAXKJYF:~# mqtt-get-dump /devices/wb-w1/Без категории
Traceback (most recent call last):
File “/usr/bin/mqtt-get-dump”, line 68, in
client.publish(retain_hack_topic, ‘1’)
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 778, in publish
rc = self._send_publish(local_mid, topic, local_payload, qos, retain, False)
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 1592, in _send_publish
return self._packet_queue(PUBLISH, packet, mid, qos)
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 1760, in _packet_queue
return self.loop_write()
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 986, in loop_write
rc = self._packet_write()
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 1380, in _packet_write
write_length = self._sock.send(packet.packet[packet.pos:])
socket.error: [Errno 32] Broken pipe
ужас. Давайте лучше так:
mosquitto_sub -v -t /devices/wb-w1/#
Starck
17.Март.2018 20:25:19
9
root@wirenboard-ARAXKJYF:~# mosquitto_sub -v -t /devices/wb-w1/#
/devices/wb-w1/meta/name 1-wire Thermometers
/devices/wb-w1/controls/28-041650c631ff 62.187
/devices/wb-w1/controls/28-041650c631ff/meta/type temperature
/devices/wb-w1/controls/10-000802bb9742 18.937
/devices/wb-w1/controls/10-000802bb9742/meta/type temperature
/devices/wb-w1/controls/10-000802bc9fab 22.562
/devices/wb-w1/controls/10-000802bc9fab/meta/type temperature
/devices/wb-w1/controls/10-000802bbd9d5 23.25
/devices/wb-w1/controls/10-000802bbd9d5/meta/type temperature
/devices/wb-w1/controls/28-031644d155ff 50.187
/devices/wb-w1/controls/28-031644d155ff/meta/type temperature
/devices/wb-w1/controls/28-000006aad7ae 17.937
/devices/wb-w1/controls/28-000006aad7ae/meta/type temperature
/devices/wb-w1/controls/28-031644efc4ff 25.812
/devices/wb-w1/controls/28-031644efc4ff/meta/type temperature
/devices/wb-w1/controls/28-041650c631ff 62.187
/devices/wb-w1/controls/10-000802bb9742 18.937
/devices/wb-w1/controls/10-000802bc9fab 22.562
/devices/wb-w1/controls/10-000802bbd9d5 23.25
/devices/wb-w1/controls/28-031644d155ff 50.187
/devices/wb-w1/controls/28-000006aad7ae 17.937
/devices/wb-w1/controls/28-031644efc4ff 25.812
/devices/wb-w1/controls/28-041650c631ff 62.125
/devices/wb-w1/controls/10-000802bb9742 18.937
/devices/wb-w1/controls/10-000802bc9fab 22.562
/devices/wb-w1/controls/10-000802bbd9d5 23.25
/devices/wb-w1/controls/28-031644d155ff 50.312
/devices/wb-w1/controls/28-000006aad7ae 17.937
/devices/wb-w1/controls/28-031644efc4ff 25.812
/devices/wb-w1/controls/28-041650c631ff 62.187
/devices/wb-w1/controls/10-000802bb9742 18.937
/devices/wb-w1/controls/10-000802bc9fab 22.625
/devices/wb-w1/controls/10-000802bbd9d5 23.25
Вывод как остановить?
странно. А попробуйте в правиле написать
log(dev[“wb-w1/10-000802bc9fab”]);
и посмотреть, что оно выведет в окошке отладки в интерфейсе (такой с гаечным ключом)
то есть отлично правила видят ваш датчика. Значит не в этой строчке у вас ошибка получается
Starck
17.Март.2018 21:58:16
14
Я же написал ранее, что вынужден был перегрузить контроллер. После чего все работает вновь. Мне не понятно что произошло до этого, почему значения отображались в devices, а при обращении к ним в правилах, возникали ошибки. Это касалось абсолютно всех датчиков, подключённых к контроллеру по одной шине.
Речь только про 1-wire? Т.е. вывод команды mosquitto_sub был уже после того, как всё заработало?
Starck
30.Март.2018 13:30:51
17
Евгений, ситуация вновь повторилась, та что в этой теме.
Вот результат команды:
root@wirenboard-ARAXKJYF:~# mqtt-get-dump /devices/wb-w1/Без категории
Traceback (most recent call last):
File “/usr/bin/mqtt-get-dump”, line 71, in
rc = client.loop()
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 720, in loop
rc = self.loop_read(max_packets)
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 961, in loop_read
rc = self._packet_read()
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 1292, in _packet_read
command = self._sock.recv(1)
socket.error: [Errno 104] Connection reset by peer
После выполнения этой команды:
root@wirenboard-ARAXKJYF:~# mosquitto_sub -v -t /devices/wb-w1/#
/devices/wb-w1/meta/name 1-wire Thermometers
Дальше дело не пошло. Терминал молчит.
Так а что именно повторилось?
Starck
30.Март.2018 18:40:35
20
Как что? Опять все то же, что я писал вначале темы. Исчезли показания датчиков температуры в виртуальных устройствах и скрипты стали ошибку выдавать при обращении к ним. Показания датчиков замерли и не меняются в devices.