Ошибка ИК в WB-MSW v3

А BrainRoot может показать свой лог, что бы убедиться, что только у двоих есть ошибки?

root@wirenboard-AMUIIC6I:~# service wb-mqtt-serial stop
root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a1 -t5 -r5301 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][05][14][B5][FF][00][98][2C]
Waiting for a confirmation…
ERROR Resource temporarily unavailable: read
ERROR occured!
root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a1 -t5 -r5301 0
Data to write: 0x0
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][05][14][B5][00][00][D9][DC]
Waiting for a confirmation…
<1A><1A><01><01><00>
ERROR CRC received 100 != CRC calculated 9AA7
ERROR occured!

Попробуйте все же от 24 питать датчик.
И даже если линия короткая - надо ее исключить. Подключите датчик на другой порт - чтобы был один.

Влезу в обсуждение.
По нашему опыту с WB-MIR v2 при низком напряжении, включая 12В, ИК команды не всегда выполняются. Всегда настраиваем ~18В.

У меня запитано, правда линия длинная.

С датчика приходят все данные, движение свет, качество воздуха. Датчик пищит и моргает. Я правильно понимаю, что если питание проседает или данные теряются, все устройства продолжают работать кроме ИК?

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

Скажите пожалуйста какой командой прочитать эти регистры?

Поправьте порт и адрес под свои:

export DEV_PORT=/dev/ttyRS485-2
export DEV_ADDR=55
modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r104 -c2

root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -pnone -s2 -pnone /dev/ttyRS485-1 -a1 -t3 -r104 -с2
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘2’
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][03][00][68][00][01][05][D6]
Waiting for a confirmation…
<30><24><04><04><00>
ERROR CRC received 400 != CRC calculated 6B0C
ERROR occured!
root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -pnone -s2 -pnone /dev/ttyRS485-1 -a2 -t3 -r104 -с2
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘2’
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[02][03][00][68][00][01][05][E5]
Waiting for a confirmation…
ERROR Resource temporarily unavailable: read
<05>ERROR occured!
root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -pnone -s2 -pnone /dev/ttyRS485-1 -a3 -t3 -r104 -с2
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘2’
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[03][03][00][68][00][01][04][34]
Waiting for a confirmation…
ERROR Resource temporarily unavailable: read
ERROR occured!
root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -pnone -s2 -pnone /dev/ttyRS485-1 -a4 -t3 -r104 -с2
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘▒’
modbus_client: invalid option – ‘2’
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[04][03][00][68][00][01][05][83]
Waiting for a confirmation…
ERROR Resource temporarily unavailable: read
<04>ERROR occured!
root@wirenboard-AMUIIC6I:~#

не должно быть. Возможно вы копируете что-то с служебными символами?

Я на работе, датчик дома ))))) Давайте посмотрим, что куда копируется? Как это сделать?

Просто наберите команду вручную.

root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485 -1 -a1 -t3 -r104 -c2
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][03][00][68][00][02][45][D7]
Waiting for a confirmation…
<01><03><04><00><00><01><9C>
SUCCESS: read 2 of elements:
Data: 0x0000 0x019c
root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t5 -r5101 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][05][13][ED][FF][00][18][8B]
Waiting for a confirmation…
ERROR Resource temporarily unavailable: read
<01><01>ERROR occured!
root@wirenboard-AMUIIC6I:~# modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t3 -r104 -c2
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][03][00][68][00][02][45][D7]
Waiting for a confirmation…
<25><01><01><00><5B><78>
Message length not corresponding to the computed length (6 != 9)
ERROR occured!

То есть совсем недавно запущен. Вы его перезапускали?

да делал полную перезагрузку

Периодически читайте регистры, значения не должны уменьшаться. Проблема все же скорее всего в линии.
И что возвращает регистр 121?

Не совсем понятно, проблема в линии питания или в линии передачи данных?
По питанию: у меня питание 24v до датчика доходит 23.5-23.4 изменение по вольтажу 0.1v. Это критично?
По лиги данных: на лини весят устройства от них от всех приходят данные и они работают «скажем в штатных условиях”. То есть с датчика получаю данные по качеству воздуха содержание пыли и углекислого газа, по линии все передаётся, а вот пульт не работает??? Сам датчик являешься исполнительным устройством он коды для передачи не берет с внешнего устройства. Получаеться что я могу отправить команду включить и выключить сирену, а вот записать и воспроизвести ик не могу.
Вы говорили что датчик может перезагружаться. Прошу пояснить что значит перезагрузка и что именно перезагружаешься. Допустим я включаю сирену, отправляю команду считать или воспроизвести ик, произошла перезагрузка датчика. Сирена продолжает работать? Или она должна перезагрузится?

Как я писал выше. Вы можете показать свои логи, что у вас работает? Что бы исключить впринципи не правильную работу датчика с ик. Так как в сообществе многие пытались работать с ик и после долгих мучений просто на него забивали. Спасибо.

Да согласен бывают нюансы, но в спецификации к v3 чёрным по белому написано что напряжение питания от 9 до 28 v. Соотвественно покупаю данное устройство я должен получит полную работу и от 9 v а не подбирать работающий вольтаж. Не все обращаются к интеграторам, а делают сами в соответсвии с заявлений документацией производителя. Если брать этот датчик в полном фарше, перемножит на число комнат, получаеться не хилая сумма.
И ой вы знаете а в такой комплектации нужно не 12 а 24 Вольта, сори. Если вас не устраивает можете вернуть датчики. А что делать человеку сотовый заложил провода, сделал дырки в стенах. Вообщем у меня рефлексия )

Регистры 104-105. В них хранится время с начала работы. Если они внезапно меньше чем были - то перезагрузился.

Да. Все так и есть. Но при подключении тонким проводом бывает всякое.

А вот это - с радостью. Итак, достаем наш любимый терминал, подключаемся и тушим wb-mqtt-serial.
Определим переменные:

export DEV_PORT=/dev/ttyRS485-2
export DEV_ADDR=55

Для начала оценим: Есть ли вообще в каком-то банке команда?

#Длина команды:
for b in {5400..5431}
do
modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r$b | grep Data:
done

Возвращается:

oot@wirenboard-ACAX3M6K:~# for b in {5400..5439}
> do
> modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r$b | grep Data:
> done
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x0033 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 
	Data: 0x00c9 
	Data: 0x0191 

То есть !0, что-то записано.
Пробуем воспрроизвести:

modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x05 -r5100 1
Data to write: 0x1
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[37][05][13][EC][FF][00][4C][DD]
Waiting for a confirmation...
<37><05><13><EC><FF><00><4C><DD>
SUCCESS: written 1 elements!
root@wirenboard-ACAX3M6K:~# modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x05 -r5100 1
Data to write: 0x1
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[37][05][13][EC][FF][00][4C][DD]
Waiting for a confirmation...
<37><05><13><EC><FF><00><4C><DD>
SUCCESS: written 1 elements!
root@wirenboard-ACAX3M6K:~# modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x05 -r5100 1
Data to write: 0x1
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[37][05][13][EC][FF][00][4C][DD]
Waiting for a confirmation...
<37><05><13><EC><FF><00><4C><DD>
SUCCESS: written 1 elements!

Камерой телефона можно “смотреть” на светодиод и увидеть что моргает.

Добрый день!

Там же ещё написано:


При пиковом потреблении на проводах может падать большее напряжение, чем вы видите мультиметром или в регистрах датчика. Его можно увидеть осциллографом - или просто заранее всё посчитать и сделать с запасом.
Мы тоже сожалеем, что у вас есть проблемы с датчиком, мы пытаемся их продиагностировать. Пока вообще непонятно, связаны ли ваши проблемы с питанием датчика, но лучше проверить, чтобы исключить такую возможность.

Поставили инженеру задачу проверить. Когда будут результаты, напишу.

1 лайк

К сожалению, походу придется покупать блок питание на 24В, а ваш в топку…
У меня он через раз отвечает.

root@wirenboard-AYTB4NYV:~# export DEV_PORT=/dev/ttyRS485-1
root@wirenboard-AYTB4NYV:~# export DEV_ADDR=57
root@wirenboard-AYTB4NYV:~# for b in {5400…5431}
do
modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r$b | grep Data:
done
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
Data: 0x0000
Data: 0x0000
Data: 0x0000
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
Received function not corresponding to the request (4 != 3)
ERROR Connection timed out: select
ERROR Connection timed out: select
Data: 0x0000
Data: 0x0000
Data: 0x0000
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
Message length not corresponding to the computed length (6 != 7)
ERROR CRC received 336F != CRC calculated C041
ERROR Connection timed out: select
Received function not corresponding to the request (4 != 3)
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select
ERROR Connection timed out: select

Команду посылает, через командную строку, но часто отвечает ошибкой. Иногда совсем не посылает.

root@wirenboard-AYTB4NYV:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a57 -t5 -r5101 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[39][05][13][ED][FF][00][1C][33]
Waiting for a confirmation…
ERROR Connection timed out: select