Страница 1 из 4
Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 6:33 am
neromih
Здравствуйте уважаемые форумчане!
Предыстория:
Купив Raspberry pi 2, первым делом начал реализовывать "термометр" по шине 1-wire.
Делал это:
1. По средствам скриптов sh, py;
2. PHP.
Далее когда наигрался, решил поставить OpenHab2. Разобрался с трудом - снес.
К сути вопроса.
Записал образ предоставленный
sergejey (версия образа 3.26 от 22.03.2017, размер 1.52Гб, архив 7Zip).
Методом проб и ошибок, создал сценарий который открывает новую страницу с показанием датчика ds18b20, и произносит показания.
Датчик подключен через GPIO.
Рабочий код:
Код: Выделить всё
$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$lines = file($file);
$temp = explode('=', $lines[1]);
$temp = number_format($temp[1] / 1000, 0, ',', '');
echo $temp;
say('Температура'.$temp.'градусов',2);
Не могу додуматься и не нашел пример как реализовать вывод температуры, не на новую страницу, а в "сцену" и добавить в базу данных для дальнейшего построения графиков.
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 8:46 am
lanket
neromih писал(а):...
Не могу додуматься и не нашел пример как реализовать вывод температуры...
Вы подошли к вопросу от обратного.
Сначала надо добавить модуль для работы с 1wire устройствами, привязать свойство к вашему датчику и включить хранение истории.
И уже потом выводить значение на сцены/меню, а хранение истории даст возможность выводить графики.
Поиск рулит.
Почитайте вот тут
viewtopic.php?t=3878
Там правда про винду, но это лишь влияет на 'транспорт' от датчика к МД, а настройка и принцип вывода информации в системе там описан, плюс несколько хороших ссылок на полезную для Вас информацию.
Отправлено с моего Redmi Note 3 через Tapatalk
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 9:11 am
neromih
neromih писал(а):Сначала надо добавить модуль для работы с 1wire устройствами, привязать свойство к вашему датчику и включить хранение истории.
Уважаемый
lanket я читал эту статью, суть что бы без адаптера, датчики подключены шиной к портам GPIO на Raspberry pi2.
Модуль 1-wire работает как я понял с (или посредством) owserver`а. owserver не позволяет работать с GPIO (не умеет).
Логично предположить, если я смог произвести чтение с помощью PHP, то как это значение перенести (добавить, разместить) на вкладку что бы отображалось.
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 9:14 am
slgeo
Ну, так создайте объект со свойством, а у свойства включите историю хранения.
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 9:43 am
neromih
Про объект понятно, но как обобраться к датчику на Raspberry.
Выше приведенный код работает и отображает показание температуры (пример: 42).
Как настроить этот объект, вот пожалуй, главный вопрос

Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 9:54 am
slgeo
Так и непонятен ваш вопрос )
Запускайте свой метод каждые 5 минут и сохраняйте в свойство объекта:
Код: Выделить всё
$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$lines = file($file);
$temp = explode('=', $lines[1]);
$temp = number_format($temp[1] / 1000, 0, ',', '');
sg('ds18b20.Temp',$temp);
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 10:12 am
lanket
neromih писал(а):Про объект понятно, но как обобраться к датчику на Raspberry.
Выше приведенный код работает и отображает показание температуры (пример: 42).
Как настроить этот объект, вот пожалуй, главный вопрос

Правильно пишет уважаемый slgeo про owfs:
slgeo писал(а):Так и непонятен ваш вопрос )
Запускайте свой метод каждые 5 минут и сохраняйте в свойство объекта:
Код: Выделить всё
$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$lines = file($file);
$temp = explode('=', $lines[1]);
$temp = number_format($temp[1] / 1000, 0, ',', '');
sg('ds18b20.Temp',$temp);
Чуть дополню в случае вашего подхода.
Делаете свой метод.
В этом методе вызываете свой php скрипт опроса датчика.
Полученный результат записываете в созданное заранее свойство с хранение истории.
Вызываете свой метод через OnNewMinute или в модуле Cron.
Вывод на сцену, меню графиков истории уже стандартными способами кои описаны здесь многократно.
Отправлено с моего Redmi Note 3 через Tapatalk
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 10:14 am
nick7zmail
slgeo писал(а):Так и непонятен ваш вопрос )
Запускайте свой метод каждые 5 минут и сохраняйте в свойство объекта:
Код: Выделить всё
$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$lines = file($file);
$temp = explode('=', $lines[1]);
$temp = number_format($temp[1] / 1000, 0, ',', '');
sg('ds18b20.Temp',$temp);
Всё верно говорят...sg('ds18b20.Temp',$temp); как раз записывает в свойство Temp объекта ds18b20 значение температуры...(соответственно такой объект должен быть создан в Панель управления->объекты).
А на сценах, в меню и т.п. выводить %ds18b20.Temp% такой строкой, либо просто привязать информер к этому свойству (в случае со сценой...в меню всё равно только строкой).
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 10:52 am
neromih
Создал
Объект - ds18b20:
Название: ds18b20
Класс: STempSensors
Описание: тест датчика
Методы: в STempSensors->Tempchanget:
Выполнить - Код - PHP
Код: Выделить всё
$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$lines = file($file);
$temp = explode('=', $lines[1]);
$temp = number_format($temp[1] / 1000, 0, ',', '');
sg('ds18b20.Temp',$temp);
В меню управления:
Добавил новый объект:
Название %ds18b20.Temp%
Приоритет 90
Тип Объект
Период обновления 10 сек
Связанный объект ds18b20 - тест датчика.
В результате выводит надпись - Датчик.
Что я мог упустить?
Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 10:52 am
shemnik69
Немного добавлю строчку.
Не рекомендую GPIO использовать для датчиков типа 1-ware и пр. если будут длинные провода.
Если будет их несколько и длинна проводников допустим более 3-5 м то на GPIO могут появится помехи.
Малина очень чуткая вещь.
Ее целесообразнее делать обособленной, т.е в идеале это только сервер.
А внешние все "прибамбасы" делать на сторонних управляемых контроллерах.
Это и проще в части работы с данными, так и безопаснее для "жизни" малинки как таковой.
То что управлять через GPIO возможно, это факт,
но при условии что будут выполнены условия согласования сигналаов. напряжений и развязки
от длинных линий... чем как раз 1-wareи не удовлетворяет.
Да и сами GPIO очень "нежные"...
Поверьте... будет не совсем хорошо, если результаты приведут к разочарованию .
С GPIO следует "играть" очень осторожно!!! и реально понимать что делать.