Цифровой термометр на DS1820 под Linux

Этот простой но надёжный цифровой термометр может пригодится для контроля температуры в серверной, коммуникационных шкафах, складских помещения и других местах, требующих термического контроля. А так же для умного дома или просто just for fun. Учитывая низкую стоимость, это одно из самых доступных решений. Пожалуй, единственным минусом, здесь является привязанность к операционной системе, так как для чтения показаний цифрового датчика, нужна специальная программа, которая есть только в Линукс подобных ОС.

Для сборки данного устройства, понадобятся следующие компоненты:
  1. Термодатчик DALLAS DS1820 — самая главная часть всей схемы, датчиков можно подключить несколько параллельно. По описанию каждый сенсор имеет собственный 64 битный ID, что позволяет использовать одновременно 100 сенсоров на шине, длиной 300 м, проверить не довелось, но два датчика на шине длиной 5 метров успешно работают.
  2. Стабилитроны на 3.9V, 6.2V, 5.6V, самой минимальной мощности — они компактнее.
  3. Диод Шоттки, например «1N5818» в количестве 2 шт.
  4. Диод «1N4148» — 1 шт.
  5. Резистор 1,5 кОм 0,25 Вт — 1 шт.
  6. Конденсатор 10 мкФ, 16 V — 1 шт.
  7. Разъем DE9 (RS-232) для COM-порта, тип — мама.
  8. Корпус для разъема.
  9. Монтажная плата
  10. Паяльник, припой, и прямые руки =)
Принципиальная схема
Конвертер интерфейсов

После сборки получится конвертер интерфейсов RS-232 <=> 1-Wire. Разъём DE9 подключается к машинке с Линуксом, а на другую сторону, к трём проводам, любым удобным способом нужно подключить цифровой датчик температуры «DS18B20».

Считывание показаний программой Digitemp

Для работы с датчиками нужна программа «Digitemp«, она легко устанавливается apt install digitemp. После чего нужно произвести поиск и инициализацию командой digitemp_DS9097 -i -s /dev/ttyS0 (где /dev/ttyS0 является адресом порта, в данном случае это первый COM порт). Если всё прошло успешно, то теперь можно считывать показания с каждого датчика индивидуально, например digitemp_DS9097 -t 0 -s /dev/ttyS0 (где -t 0 является порядковым номером датчика).

Использование в мониторинге

Для удобного использования в дальнейшем, например в мониторинге Zabbix или через SNMP, рекомендую добавить в cron, с интервалом 1-5 минут, следующую команду:
digitemp_DS9097 -t 0 -s /dev/ttyS0 -q -o "%.2C" > /var/log/sensors.temp.value.

Zabbix

Добавляем в пользовательские параметры: UserParameter=sensors.temp,cat /var/log/sensors.temp.value

SNMP

В конфигурацию сервиса snmpd добавляем строку: extend temp0 /bin/cat /var/log/sensors.temp.value. Что бы получить данные через snmp, выполните команду: snmpwalk -v1 -c public 127.0.0.1 .1.3.6.1.4.1.8072.1.3.2.4.1.2.5.116.101.109.112.48

Плата конвертера в сборе

converter rs232 1wire