WirenBoard 6 и панель ZenTec Z033


#1

ой, заработала!

конфиг wb_mqtt_serial :

        {
            "path": "/dev/ttyRS485-2",
            "devices": [
                {
                    "slave_id": "33",
                    "name": "zt-z033",
                    "id": "z033_33",
                    "enabled": true,
                    "channels": [
                        {
                            "name": "temp_room",
                            "type": "value",
                            "reg_type": "holding",
                            "address": "0x117",
                            "format": "u16",
                            "channel_readonly": false,
                            "poll_interval": 200
                        },
                        {
                            "name": "temp_set",
                            "type": "value",
                            "reg_type": "holding",
                            "address": "0x115",
                            "format": "u16"
                        }
                    ],
                    "poll_interval": 200,
                    "protocol": "modbus",
                    "guard_interval_us": 10000
                }
            ],
            "port_type": "serial",
            "baud_rate": 9600,
            "parity": "N",
            "data_bits": 8,
            "stop_bits": 1,
            "poll_interval": 30,
            "enabled": true,
            "response_timeout_ms": 500
        }

пока читаю только два регистра, текущая температура и установленная.
в принципе мне пока больше и не надо.

Остальные регистры почти все имеют побитовый функционал, пока не хочу морочиться.

И вот что интересно, все работает без ошибок, хот я так и не объединил земли. А вот WB-MR6C родной постоянно пишет про шибку тения регистра, хотя и земли объединены и установлен он в 10 см от контроллера и соединен экранированным специальным кабелем, в отличи от панели висящей на десятиметровой компьютерной витой паре.
Парадокс.

Update 1.
параметр “poll_interval” пришлось увеличить до 30ms, иначе контроллер вообще почему то переставал ее опрашивать и панель уходила в ошибку связи…

Update 2.
земли все-таки объединил :slight_smile: на всякий случай


#2

рано радовался :frowning:
почему контроллер просто перестает опрашивать панель, в логах вообще тишина :frowning:
место на диске есть :slight_smile:


#3

Никогда пожалуйста так не делайте, это заставляет контроллер бесконечно ждать ответа по Modbus. Когда-нибудь мы это запретим в драйвере, а сейчас это просто документированное поведение.


#4

я кстати тоже с подозрением смотрю на этот параметр, но в 0 это не я его ставил, просто включил его отображение и он уже был установлен в 0. Подумал что может я чего не понимаю и производитель так задумал.


#5

вопрос, в конфиге я описал два регистра. ,один читается нормально, а по второму в журнал стал выводить ошибки

failed to read 1 holding(s) @ 279 of device modbus:33: Serial protocol error: request timed out

почему так может быть? может я что-то не так описал? Хотя все равно данные рано или поздно возращает.
Чувствую что-то с гребаными таймаутами. Так бы и не волновало, но журнал забивается.

поставил в конфиге для всего устройства 2000ms, все равно пишет эту ошибку.
Подскажите, может с опросом регистров что-то подкрутить? но про них я точно информацию не найду, производитель скорее всего пошлет.


#6

пока поставил “guard_interval_us”: 10000
вроде ошибка не появляется. Если не сложно, вообще про этот параметр можно поподробнее, есть ли какее рекомендации? а то там микросекунды, это уже вообще выше моего понимания :slight_smile:


#7

блин, теперь проблема в скрипте.

Может кто сказать, какое значение выдает панель. В списке устройств она выглядит так:

/devices/z033_33/controls/temp_room

но когда я пишу

var t1=dev["/devices/z033_33/controls/temp_room"];

получаю фиг знает чего :frowning:
хотя в виджетах вроде все правильно отображается.

переменная имеет типа object, а как из нее значение достать не пойму


#8

Неправильно пишите
var t1=dev['z033_33']['temp_room'];


#9

а почему с датчиками wire-1 нормально проходит?


#10

не должно там ничего проходить, может вам кажется :slight_smile:


#11

сказали бы просто убери device и control :slight_smile:


#12

В общем тему подключения панели Z033 к WirenBoard можно считать закрытой. Коннект есть, регистры читаются и даже наверное пишутся. Есть свои заморочки разделения регистров на биты по функционалу, но это вполне решаемо. Если надо записать какие то биты, читаем весь регистр, по маске меняем биты как надо пишем назад. Правильно это или нет ,не знаю, но других вариантов пока нет.

Конфиг устройства в топике обновил, с такими параметрами связь вроде ок. Обращаем внимание, что стоп бит 1, и в настройках панели изменить это нельзя, только скорость и четность.

С виду панель вполне себе нормально выглядит, обещают ее обновление как по дизайну так и по функционалу, станет полноценным ПЛК :slight_smile: На знаю зачем ПЛК на стене, но сейчас это можно стало. Правда датчик меряет температуру только до длесятых долей, но для комнаты этого вполне достаточно.
Я ее использую только для управления отоплением, для этого она даже избыточна. Но мне хотелось и возможность регулировки и чтобы внутри был датчик температуры, а не просто щелкающий термостат.

Теперь можно начать ваять логику работы.


#13

В дополнение.
Панелька умеет пищать и выводить код ошибки по сигналу через modbus. Весьма удобная штука в дополнение к алармам по SMS. По крайней мере если что-то ночью случится, а телефон выключен или в беззвучном режиме, она разбудит того кто рядом.

Датчик температуры перепаивать не стал, см. тему про альтернативу DS18S20.

Вообще задумался на тему скостромячить кастомную панель на какой-нибудь дешевой альтернативе распбери с экранчиком и связью по modbas. Но пока нет времени.