Pull to refresh

Comments 30

ИМХО в статье на хватает линка на Ваш работающий датчик. Можете опубликовать?
Попробую. Сейчас зима, теплица работает с перебоями.

Даже в данном случае, как систему мониторинга я бы выбрал Zabbix, тем более на то есть все ресурсы

Nexx WT3020H + RODOS-5 (MP707) Результат в Zabbix. Сейчас хочу SMALL METEO V4 прикупить.
На таком языке нашёл я все примеры.
А, ну в таком случае ничего не имею против
UFO just landed and posted this here
UFO just landed and posted this here
здравствуйте, уважаемый автор,

Чтобы метеостанция не сдохла через полгода-год от самозапиливающейся флэшки, настоятельно рекомендую монтировать её в read-only, см., например, https://geektimes.ru/post/283802/. Остальные рекомендации помещаю в спойлеры.

про 1-wire, sysfs и hardcode
Несмотря на имеющиеся ссылки, неплохо было бы посвятить хотя бы один абзац текста описанию того, что DS18B20 работает через интерфейс 1-wire, что доступ к нему получаете через sysfs, и что для этого подгружаются модули w1-gpio и w1_therm. Для тех, кто предпочитает активировать 1-wire по-простому, можно указать и на утилиту raspi-config. Хорошо бы объяснить смысл параметров типа pullup и питанию. Те, кто раньше не работал с датчиками через sysfs, наверняка оценят и разъяснения к схеме именования, по которой все устройства появляются в /sys/bus/w1/devices, а каждому устройству сопоставляется каталог вида YY-xxxxxxxxxxxx, где YY суть Family Code (28 для DS18B20), а остальное — уникальный номер устройства. И если Вы свои устройства зашиваете в скрипт хардкодом, предупредите, пожалуйста, об этом явно в комментариях. Хотя резиденты местного клуба и так разберутся, но для гостей портала все вышеперечисленное не будет лишним.

про измеряемые температуры
Я бы указал на ограничения по рабочим температурам, длине проводов и т.д. У самого одноплатника есть ограничения по работе, см., например, https://habrahabr.ru/post/318486/ и комментарии.

Если спросить поисковик про «DS18B20 Raspberry Pi», будет просто взрыв. Та статья, что Вы выбрали, содержит достаточно абсурдное утверждение о якобы измеряемом диапазоне -10°C..+85°C. Это совершенно неверно, потому что на самом деле DS18B20 измеряет диапазон -55°C to +125°C, но только в диапазоне от -10 до +85 его точность заявлена как ±0.5°C (т.е. 1°C). Думаю, что в Вашей геолокации -10°C это вообще несерьёзно, неужели не обратили внимания?

про стиль naive coding
Конечно, стиль naive coding гораздо более понятен читателям, но всё-таки финальный скрипт я бы организовал так, чтобы перед сетевой частью все файлы sysfs были уже закрыты. Что будет при наползании следующего прогона на предыдущий, кстати? Мало ли чего, народный сервер придержит Вам транзакцию, скриптина зависнет минут на 15, за ней вторая, и т.д. У меня утилита feh недели за три из-за течки памяти сжирает всю оперативную память и флэшка не сдохла только потому, что работает в read-only с отключённым swap.


Двухчасовой танец с бубном меня явно выбесил
Уверяю: у Вас впереди много интересного:) Тем не менее, плюсую авансом.

PS
Лично мне по теме понравился вот этот tutorial: Raspberry Pi Tutorial Series: 1-Wire DS18B20 Sensor.
Поправьте заголовок заодно, пожалуйста.
с народнЫМ мониторингОМ (кем/чем)
Этот датчик разве не может работать как триггер? Насколько помню, что 1820, что 1821 — примерно одного класса устройства. Имел опыт работы с 18С21 (может быть неточно, там ещё что-то было в маркировке) в триггерном режиме. Суть в том, что датчик можно запрограммировать, так, что он перестаёт выдавать по 1-wire температуру, но выход принимает только два значения: лог.1 и лог.0. Запрограммировать верхний предел температуры и нижний можно специальным программатором (например, тут описано http://www.rtcs.ru/article_detail.asp?id=73). Точность в таком случае 1 градус, что для Вашего случая (насколько понял, теплица) вполне подойдёт для автоматической регулировки без каких либо микроконтроллеров и прочего — просто усилитель на транзисторе и реле, управляющее обогревом.
Конечно, если микроконтроллер/компьютер уже есть, то всё это и на нём можно сделать, я просто хотел сказать, что для регулировки температуры не нужно закупать компьютер.
UFO just landed and posted this here
Я просто думал, что датчики ставят как раз с целью автоматизации — чтобы была автоматическая регулировка. Но если нужен именно мониторинг значений температуры — то триггерный режим не подойдёт. Правда, можно передавать 0 или 1 — только трактовать это надо будет так — 1 — превышение TH, 0 — температура ниже TL (или наоборот, инвертировать можно хоть логикой в программе, хоть аппаратно).
А где об этом режиме почитать?
Гугл выдает именно эту страницу.
Упс… я поленился почитать подробности в документации. На самом деле: DS1820 — термометр, DS1821 — термостат. Т.е. именно 1820 использовать в таком режиме нельзя, а 1821 — можно.
1820 работает только в режиме измерителя температуры, в нем есть сигнализация о достижении/превышении температуры, но не физический триггер для подключения чего то напрямую.
Может я не так понял — подскажите, а MAC устройства это разве не MAC самой малинки которая данные отправляет? Если да, то почему вы не берете адрес из системы и вбиваете его руками?
Можно и автоматизировать. Просто я обычно не меняю WIFI адаптеры на малинке, так что MAC не меняется. Каждый раз проверять его не нужно.
Я вообще то был уверен что программисты унифицируют код в порядке хорошего тона, чтобы голова не болела о таких мелочах. То есть вот случись чего с вашей малинкой или с wifi адаптером, или кто-то воспользуется вашим скриптом — придётся править этот кусок кода руками. Да банально — вам пришлось лезть в систему и копировать оттуда MAC адрес сетевухи в ручную! Не лень разве было?)
Я думаю, Вы конечно правы. Просто в первую очередь я делал это для себя, и такое не предусмотрел. Добавлю это в статью. Спасибо )
Опять же) если вы делитесь своим творением с окружающими, то это уже точно не для вас одного код. Подумайте над этим)))

Удобно, когда на GPIO Raspberry Pi ничего другого не подключено, кроме одной шины с датчиками. Как в мануалах написано подключать к 4 ноге ds18b20, так все и подключают.
Пара лет назад мне потребовалось подключить ds18b20, на Raspberry оставались свободные пару ног и как оказалось в ядре захардкожена нога 4 для 1-wire. После пары дней танцов с бубнами, пересборкой модулей ядра я добился того, что 1-wire заработал на 22 ноге.
Сейчас по прежнему по умолчанию нога для 1-wire это 4. Но можно и поменять:


pi@raspberrypi:~ $ tail  /boot/config.txt 
#dtoverlay=lirc-rpi

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
gpu_mem=160
dtoverlay=lirc-rpi,gpio_in_pin=11,gpio_out_pin=9
dtoverlay=w1-gpio,gpiopin=22
Sign up to leave a comment.

Articles