Страница 1 из 4

RS485 Термостат для теплого пола

Добавлено: 30 янв 2015, 19:47
non100p
Здравствуйте!
Помогите разобраться пожалуйста, ситуация следующая. Купил для пробы себе вот такой термостат с интерфейсом RS485\modbus http://ru.aliexpress.com/item/BHT-1000- ... dVersion=1. Прислали описание (см вложение). Вроде как все понятно.
Купил USB переходник на RS485. Скачал для теста программу ModBusPoll установил на Windows 7. Проверил - все работает: отправляю команду A0 10 00 00 00 00 00 15 получаю в ответ 50 10 00 12 10 00 16 0A 28 24 24 B7. Вроде бы все хорошо, ну думаю запущу все на Raspberry Pi.
Взял за основу скрипт на php с вашего сайта.
Код ниже

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

<?php
exec('stty -F /dev/ttyUSB0 cs8 2400 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts');

// $fd = dio_open('/dev/ttyUSB0', O_RDWR | O_NOCTTY | O_NDELAY);
$fd = dio_open('/dev/ttyUSB0', O_RDWR );

// dio_fcntl($fd, F_SETFL, O_SYNC);
// dio_tcsetattr($fd, array(
//   'baud' => 2400,
//   'bits' => 8,
//   'stop'  => 1,
//   'parity' => 0
// )); 
dio_write($fd, "\xA0\x10\x00\x00\x00\x00\x00\x15");
// dio_write($fd, "\xA4\x10\x00\x00\x00\x00\x00\x11", 8); #turn off
// dio_write($fd, "\xA4\x10\x00\x10\x00\x00\x00\x11", 8); #turn on
print "writing   ";
print "";
// usleep(4 * 1000);
$result = dio_read($fd);
print $result;
print "";
// var_dump($result);
?>
Выдает какую-то несуразицу.

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

pi@raspberrypi /var/www $ php php.php 
writing   P 
($$?pi@raspberrypi /var/www $ 


Куда дальше копать идеи кончались

Re: RS485 Термостат для теплого пола

Добавлено: 31 янв 2015, 14:41
non100p
Коллеги),
Может у кого-нить есть идеи что нужно сделать или проверить. Может какие-нибудь тесты сделать?

Re: RS485 Термостат для теплого пола

Добавлено: 31 янв 2015, 19:30
non100p
Пользуюсь вот таким адаптером http://www.aliexpress.com/store/product ... 14570.html, может он по разному в Windows и в Debian работатет?

Re: RS485 Термостат для теплого пола

Добавлено: 31 янв 2015, 19:56
aurodionov
так можно глянуть как он определился

а можно вопрос, чем он у Вас рулит. котёл? электро тёплый пол?

Re: RS485 Термостат для теплого пола

Добавлено: 31 янв 2015, 20:38
non100p
Идея следующая. Независимо от температуры котла рулить сервоприводами водяного теплого пола в каждой комнате с помощью термостата. Но чтобы в любой момент времени можно было быстро и просто сбросить температуру с комфортной до 18С, для экономии энергоносителя. Делать это предполагаю как раз через web страничку на raspberry pi с использованием RS485. Собственно команды успешно отправляются, устройство их принимает и например меняет температуру, но вот в обратку не отправляет ответ в виде HEX. Как я уже писал в винде с ModBusPoll все показывает и то что отправил и то что вернулось. Может быть я как-то недонастроил stty, или вообще не в том направлении смотрю.
Т.е. На данный момент у меня по какой-то причине не получается прочитать ответ от термостата.
Что касается как определился:

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

pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

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

pi@raspberrypi ~ $ dmesg | grep USB0
[    7.068784] usb 1-1.2: ch341-uart converter now attached to ttyUSB0

Re: RS485 Термостат для теплого пола

Добавлено: 27 фев 2015, 22:58
karlismoto
Здравствуйте!
мне было интересно Как Удачи с этим проекoм. Есть ли успех?
Я также ищу хороший комнатного термостат.

Re: RS485 Термостат для теплого пола

Добавлено: 27 фев 2015, 23:36
non100p
Нет, пока все глухо. Проблема не в термостате а в ПО. Решил пока отложить и заказать на проверку другой USB адаптер с другим чипом, может быть с ним получится. В любом случае управлять термостатом я могу, проблема только в получении ответа от термостата.

Re: RS485 Термостат для теплого пола

Добавлено: 28 фев 2015, 00:24
Evgeniy
Если работает с ModbusPoll то железка в норме.
Где-то косяк в пакете данных. Я когда то делал по другому... поднимал ser2net. этим превращал ком порт с переходником в сетевой порт и на этом же компе используя от это https://code.google.com/p/phpmodbus/ реализуем хотелки!

Re: RS485 Термостат для теплого пола

Добавлено: 01 мар 2015, 21:26
Kopylov
Попробуйте с симулятором модбас-слэйва - без термостата, только RPi и комп с симулятором.
Симулятор бесплатный: http://www.plcsimulator.org/

Re: RS485 Термостат для теплого пола

Добавлено: 07 мар 2015, 22:50
D D D
Друзья, вопрос не совсем по теме но может подскажете. Имею терморегулятор электрического теплого пола с датчиком температуры DS18B20. Можно ли его датчик параллельно использовать для считывание системой управления домом. Питание управляющей схемы терморегулятора через встроенный делитель и стабилизатор от 220в. Опасаюсь пробоя высокого напряжения в сеть 1-wire в случае нарушения работы этого стабилизатора и вообще возможно ли получать данные от одного датчика DS18B20 двумя разными системами опроса (сам термостат и система управления УД). Может выход защитить DS9503?

Re: RS485 Термостат для теплого пола

Добавлено: 12 мар 2015, 17:01
YVN
non100p писал(а):Коллеги),
Может у кого-нить есть идеи что нужно сделать или проверить. Может какие-нибудь тесты сделать?
Тут ещё многое что можно проверять. Я бы начал с PHP под Windows (где заведомо работала цепочка ModBusPoll - АдаптерUSB-RS485 - Термостат).
На рабочем компьютере под Windows и отлаживать программу на порядок проще.

>> может он по разному в Windows и в Debian работатет?
Нет, он работает одинаково.

Если с PHP под Windows проблемы с примером - напишите, я пример приведу.
>> Взял за основу скрипт на php с вашего сайта
Для Windows, в данном случае, так делать не надо.

Re: RS485 Термостат для теплого пола

Добавлено: 23 мар 2015, 14:34
non100p
Всем привет.
Наконец-то удалось победить данную проблему. Все дело было в конфигурировании stty для USB0 в ОС. Сегодня постараюсь написать как нужно конфигурировать чтобы все завелось.

Re: RS485 Термостат для теплого пола

Добавлено: 24 мар 2015, 01:16
non100p
Продолжаю.
В общем на решение проблемы наткнулся совершенно случайно. Для начала решил подключить в параллель второй USB-RS485 преобразователь и посмотреть что происходит в Windows и Linux при отправке команд из Windows и из Linux. У меня команды отправлялись и получались устройством одинаково хорошо, а вот ответ я получал в винде правильный, а в Linux - мусор. Я думал так что, по идеи, если проблема в железе, то при посылке команды из Linux ответ на адаптер подключенный к Windows должен придти искореженный, если проблема в настроках софта - то ответ придет одинаковый.
Поискал в интернете софт - нашел два замечательных варианта, правда пользуюсь одним - http://www.compt.ru/, второй - http://www.compump.narod.ru/. И в той и другой версии есть режим перехвата трафика и всегда можно увидеть что происходит на интерфейсе.
Дальше. Загрузил Debian. Начал запускать команды - гляжу команда отправляются и приходит ответ что с винды, что с Linux одинаково в неискаженном форме.

Начал перебирать настройки stty и методом тыка наткнулся на правильную комбинацию. Что значат все эти настройки для меня до сих пор загадка, но факт в том, что все это работает=)

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

stty -F /dev/ttyUSB0 speed 2400 min 0 time 0 cs8 -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -opost -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

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

pi@raspberrypi ~ $ stty -a -F /dev/ttyUSB0
speed 2400 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 0; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke

Re: RS485 Термостат для теплого пола

Добавлено: 05 апр 2015, 23:44
karlismoto
Интересно следить за вашим проект ! Впервые я вижу, что кто-то пытаюсь запустить сети с комнатным термостатом.
Вы первый который Я нашел на этой неделе с два веб-сайта ( http://www.ab-log.ru , http://www.smartliving.ru)
следует вопрос Исходя из Вашего опыта - стоит ли покупать это термостат с rs485 адаптер?
(планируется контролироват с MajorDoMo)
До сих пор у меня Такое ощущение, что все, используя только управление свет и датчики температуры и это все :(

Re: RS485 Термостат для теплого пола

Добавлено: 10 апр 2015, 09:40
Evgeniy
non100p у Вас при связи термостата с компом на экране появляется значок? Я что-то никак не могу добиться ответа от этого чуда китайской промышленности, ни через modbus poll ни через PLC ни из консоли. В меню пункт 7 стоит значение 1. И ещё в нормальном режиме у Вас кнопка М как нить работает? у меня она тоько подсветку включает,но режимы не меняет

Re: RS485 Термостат для теплого пола

Добавлено: 17 апр 2015, 00:07
non100p
Евгений, значек не появляется - by design) modbus poll ни PLC с ним работать не будут - у него свой протокол как аказалось, там сначала идет команда, а потом уже адрес утройства... вооьщем это не модбас. Я им управляю через обычный запрос, я в начале темы прикрепил архив и там есть описание протокола с описанием функции проверки четности. Иначе говоря без компа тут не прокатит(

Re: RS485 Термостат для теплого пола

Добавлено: 17 апр 2015, 00:09
non100p
Там кстати есть еще один косяк который тоже by design - это при переключении в режим контроля температуры пола надпись room не меняется на floor))). Но в любом случае эти устройства по цене дешевле чем все что я мог найти)

Re: RS485 Термостат для теплого пола

Добавлено: 21 апр 2015, 16:53
Evgeniy
Согласен, полезность его превышает недочеты. Разобрался уже с протоколом, накидал на php скрипт для обмена с термостатами. работает пока через костыль типа RS485<->USB<->ser2net<->php socket<->apache2.
Можно конечно работа напрямую с /dev/ttyUSB0 но тогда апачу надо давать права,а мне лениво ) да и при таком раскладе получить доступ к преобразователю usb<->rs485 из любого места в сети

Re: RS485 Термостат для теплого пола

Добавлено: 11 окт 2015, 18:17
Михаил23
Прошу откликнутся пользователей этого чуда китайской продукции.
купил несколько таких термостатов (4 шт). И теперь не знаю что делать...
Подключил термостаты на тестовом стенде подвел питание, в место электро пола завел лампочку.
Все работает пока... Не дотронешься до внешней металической рамки лицивой панели...После этого проскакивает разряд (ну небольшое статическое эл-во) и чудо техники отключается. И уже ничего не помагает пока его от питания не отрубишь. Это случается не всегда, а периодически (видно когда рука или термостат накопит некий заряд).
Было у кого такое?

Re: RS485 Термостат для теплого пола

Добавлено: 14 окт 2015, 11:49
Acid_Reptile
Разбирать и изолировать рамку от цепей контроллера?