1-Wire / Ethernet bridge
В сети встречается много описаний различных устройств, предназначенных для контроля и/или поддержания температуры на каком-то объекте, но ни одно из найденных мной не отвечает необходимым требованиям. В результате было разработано описываемое устройство.
Схема устройства не представляет ничего особенного, только типовые решения.
Из схемы видно, что устройство предназначено для работы по сети Ethernet. Подключив устройство к сети, и зайдя по адресу «http://192.168.3.14/sec/» мы попадем в интерфейс управления и начальной конфигурации устройства.
Более подробно о всех пунктах меню:
Net config
Пункт меню «Net config» содержит сетевые настройки устройства:
- IP – Адрес устройства. По умолчанию 192.168.3.14
- Password – Пароль, по умолчанию «sec». Максимальная длинна пароля 6 символов.
- Server – Адрес сервера, которому сообщается о сработавшем входе.
- Script – Имя скрипта на сервере, который вызывается для обработки сообщения о сработавшем входе. Максимальная длинна имени скрипта 15 символов. По умолчанию используется имя «test-http.php».
- MAC-адрес автоматически генерируется из IP адреса.
Sensors
Пункт меню «Sensors» это список всех обнаруженных датчиков температуры с их текущими значениями. Адреса датчиков выводятся в формате всем известного пакета OWFS.
Для получения списка датчиков и текущих значений температуры сервером удобней использовать запрос «http://IP/password/?th=all». Формат вывода будет таким же, только без ссылки «Back» и заголовка «Sensors», это сделано для облегчения разбора списка стандартными средствами PHP.
Для получения текущего значения температуры одного датчика можно использовать запрос «http://IP/password/?th=28.D40264020000», где «28.D40264020000» адрес датчика. В этом случае ответ устройства будет содержать только значение температуры выбранного датчика или «Error», если датчика с указанным адресом не существует.
Inputs
Пункт меню «Inputs» отображает текущее состояние всех входов устройства. «ON» означает, что вход притянут к земле (через контакты кнопки, реле или оптрон). Т.е., активный уровень входов – «0».
Для получения текущего состояния входа можно использовать запрос «http://IP/password/?get=in3». В ответ на этот запрос устройство сообщит серверу «0», «1» или «Error», если в написании имени входа допущена ошибка.
Outputs
Пункт меню «Outputs» » отображает текущее состояние выходов устройства.
Состояние «AUTO ON» говорит о том, что на выход назначена функция термостата, и он находится во включенном состоянии, а «AUTO OFF» в выключенном. «ON» и «OFF» это состояние выхода, которым можно управлять программно или из WEB-интерфейса.
Для получения текущего состояния выхода можно использовать запрос «http://IP/password/?get=out5» на который устройство ответит «0», «1» или «Error», в случае, если допущена ошибка в имени выхода. Важно отметить, что прочесть можно как простой выход, так и выход на который назначена функция термостата.
Для установки состояния выхода можно использовать запрос «http://IP/password/?set=out5&val=1», это означает включить выход 5.
- val=0 – выключить
- val=1 – включить
- val=2 – инвертировать
Для подтверждения принятия команды устройство ответит:
- «OK», если запрос выполнен успешно.
- «Error», если в имени выхода допущена ошибка или значение val не равно 0, 1 или 2.
- «Auto», если на выход назначена функция термостата.
Thermostat
Пункт меню «Thermostat» позволяет назначить на выход устройства функции термостата и одновременно показывает, на какие выходы эта функция уже назначена.
При клике на ссылку рядом с именем выхода попадаем в меню конфигурации термостата:
Здесь все интуитивно понятно. На первой строке «Thermostat ON» показывает, включена или выключена функция термостата, на следующей строке написано предложение, вписав в которое свои значения, Вы сконфигурируете работу термостата. В случае, если допущена ошибка в адресе датчика, то после сохранения настроек адрес подсветиться красным цветом, если ошибка в значении уставки или гистерезиса то уставка станет равна 0.00, а гистерезис 0.5 °C соответственно.
В примере на скриншоте, выход 1 станет активным, когда значение температуры датчика 28.D40264020000 будет больше 27+0.2=27.2 °C и выключится, когда температура датчика станет меньше 27-0.2=26.8 °C.
Также доступна задача уставки с сервера. Для этого надо выполнить один из запросов:
- «http://192.168.3.14/sec/?set=ts1&val=51.3» - Задать уставку термостата 1 равную 51.3°C.
- «http://192.168.3.14/sec/?set=ts1&wr=1» - Сохранить текущую уставку термостата 1.
- «http://192.168.3.14/sec/?set=ts1&val=51.3&wr=1» - Задать уставку термостата 1 равную 51.3°C и записать ее в EEPROM.
Ответ сервера на запрос будет «OK», если он выполнен успешно или «Error», если допущена какая либо ошибка.
Надо отметить, что ресурс EEPROM ограничен 100 000 циклами записи и при перезаписи уставки раз в пять минут, он будет исчерпан примерно через один год работы. Поэтому не стоит злоупотреблять параметром "wr" и сохранять значение уставки в EEPROM при каждом ее изменении.
Допустимые значения уставки термостата от -55 до 99.99 °C, а гистерезиса от 0 до 9 °C.
Для чтения значения уставки термостата надо выполнить запрос
«http://IP/password/?get=ts1» - значение уставки термостата 1
Ответ на запрос сервер ответит
- Значение уставки (например «27.00»)
- «Off», если термостат на этом канале выключен
- «Error», если допущена какая-либо ошибка
Reset CPU
Пункт меню «Reset CPU» говорит сам за себя и позволяет перезагрузить устройство из WEB-интерфейса.
Схема устройства : https://www.dropbox.com/s/nbz4uc1exwxob9a/1-Wire_Ethernet_bridge.rar
Обновленная схема устройства (добавлен индикатор и клавиатура): https://www.dropbox.com/s/53qod0wk1wq7nsr/CPU_D4MG%20v0.0.5.rar
Версия 0.0.6
- Исходник:https://www.dropbox.com/s/9xvbwypbbh44brr/ip_1-Wire%20v0.0.6.rar
- HEX-файл:https://www.dropbox.com/s/khjeb74r0f8yyn4/ip_1-Wire%20HEX%20v0.0.6.rar
Подключен индикатор HD44780 (8х2) и клавиатура для управления сконфигурированными термостатами. Имеется возможность просмотра состояния I/O на экране LCD. Для этого надо нажать и удерживать кнопку "SP-" около 1 секунды.
Внешний вид обновленного варианта устройства: В первой строке - номер текущего канала термостата и текущая уставка.
Во второй строке - текущее состояние канала и текущая температура с датчика.
В первой строке - символ "i" и номера активных входов (ни один из входов не сработал).
Во второй строке - символ "о" и номера активных выходов (как видно, выходной сигнал есть на втором выходе)
Версия 0.0.4
- Исходник: https://www.dropbox.com/s/exk507ogvpfxlay/ip_1-Wire%20v0.0.4.rar
- HEX-файл: https://www.dropbox.com/s/hjmaj876xo6baip/ip_1-Wire%20HEX%20v0.0.4.rar
Версия 0.0.3
- Исходник: https://www.dropbox.com/s/7di85ou3ipfw41p/ip_1-Wire%20v0.0.3.rar
- HEX-файл: https://www.dropbox.com/s/62h8diernky9ryp/ip_1-Wire%20HEX%20v0.0.3.rar
Версия 0.0.2
- Исходник: https://www.dropbox.com/s/1pi4ww7al2lk94t/ip_1-Wire%20v0.0.2.rar
- HEX-файл: https://www.dropbox.com/s/4azbrvc9gkjguhy/ip_1-Wire%20HEX%20v0.0.2.rar
При прошивке фьюзы выставлял так:
LOW=0x3F, HIGH=0xDF
Обсуждение устройства идет по адресу: http://ab-log.ru/forum/viewtopic.php?f=1&t=259