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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 30 янв 2015, 19:47

Здравствуйте!
Помогите разобраться пожалуйста, ситуация следующая. Купил для пробы себе вот такой термостат с интерфейсом 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 $ 


Куда дальше копать идеи кончались
Вложения
RS485 protocol for heating.pdf.zip
Описание протокола
(124.84 КБ) 635 скачиваний

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 31 янв 2015, 14:41

Коллеги),
Может у кого-нить есть идеи что нужно сделать или проверить. Может какие-нибудь тесты сделать?

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 31 янв 2015, 19:30

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

aurodionov
Сообщения: 213
Зарегистрирован: 16 авг 2011, 14:07
Откуда: Россия,Тюмень
Контактная информация:

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

Сообщение aurodionov » 31 янв 2015, 19:56

так можно глянуть как он определился

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

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 31 янв 2015, 20:38

Идея следующая. Независимо от температуры котла рулить сервоприводами водяного теплого пола в каждой комнате с помощью термостата. Но чтобы в любой момент времени можно было быстро и просто сбросить температуру с комфортной до 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

karlismoto
Сообщения: 27
Зарегистрирован: 07 фев 2015, 21:28
Откуда: Riga, Latvia

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

Сообщение karlismoto » 27 фев 2015, 22:58

Здравствуйте!
мне было интересно Как Удачи с этим проекoм. Есть ли успех?
Я также ищу хороший комнатного термостат.

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 27 фев 2015, 23:36

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

Evgeniy
Сообщения: 32
Зарегистрирован: 14 ноя 2014, 10:25

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

Сообщение Evgeniy » 28 фев 2015, 00:24

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

Kopylov
Сообщения: 1
Зарегистрирован: 01 мар 2015, 21:24

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

Сообщение Kopylov » 01 мар 2015, 21:26

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

D D D
Сообщения: 56
Зарегистрирован: 26 авг 2013, 22:32

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

Сообщение D D D » 07 мар 2015, 22:50

Друзья, вопрос не совсем по теме но может подскажете. Имею терморегулятор электрического теплого пола с датчиком температуры DS18B20. Можно ли его датчик параллельно использовать для считывание системой управления домом. Питание управляющей схемы терморегулятора через встроенный делитель и стабилизатор от 220в. Опасаюсь пробоя высокого напряжения в сеть 1-wire в случае нарушения работы этого стабилизатора и вообще возможно ли получать данные от одного датчика DS18B20 двумя разными системами опроса (сам термостат и система управления УД). Может выход защитить DS9503?
Вложения
IMG_20150307_134326.jpg
IMG_20150307_134326.jpg (24.34 КБ) 19685 просмотров
IMG_20150307_134420.jpg
IMG_20150307_134420.jpg (21.02 КБ) 19685 просмотров
Последний раз редактировалось D D D 12 мар 2015, 21:52, всего редактировалось 1 раз.

YVN
Сообщения: 3
Зарегистрирован: 11 мар 2015, 09:54

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

Сообщение YVN » 12 мар 2015, 17:01

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

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

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

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 23 мар 2015, 14:34

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

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 24 мар 2015, 01:16

Продолжаю.
В общем на решение проблемы наткнулся совершенно случайно. Для начала решил подключить в параллель второй 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

karlismoto
Сообщения: 27
Зарегистрирован: 07 фев 2015, 21:28
Откуда: Riga, Latvia

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

Сообщение karlismoto » 05 апр 2015, 23:44

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

Evgeniy
Сообщения: 32
Зарегистрирован: 14 ноя 2014, 10:25

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

Сообщение Evgeniy » 10 апр 2015, 09:40

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

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 17 апр 2015, 00:07

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

non100p
Сообщения: 12
Зарегистрирован: 30 янв 2015, 19:19

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

Сообщение non100p » 17 апр 2015, 00:09

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

Evgeniy
Сообщения: 32
Зарегистрирован: 14 ноя 2014, 10:25

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

Сообщение Evgeniy » 21 апр 2015, 16:53

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

Михаил23
Сообщения: 1
Зарегистрирован: 11 окт 2015, 18:09

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

Сообщение Михаил23 » 11 окт 2015, 18:17

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

Acid_Reptile
Сообщения: 21
Зарегистрирован: 15 окт 2013, 09:04

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

Сообщение Acid_Reptile » 14 окт 2015, 11:49

Разбирать и изолировать рамку от цепей контроллера?

Ответить