Опрос ds18b20 + Raspberry (GPIO)

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Опрос ds18b20 + Raspberry (GPIO)

Сообщение neromih » Чт апр 20, 2017 6:33 am

Здравствуйте уважаемые форумчане!
Предыстория:
Купив 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); 
Не могу додуматься и не нашел пример как реализовать вывод температуры, не на новую страницу, а в "сцену" и добавить в базу данных для дальнейшего построения графиков.
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение lanket » Чт апр 20, 2017 8:46 am

neromih писал(а):...
Не могу додуматься и не нашел пример как реализовать вывод температуры...


Вы подошли к вопросу от обратного.
Сначала надо добавить модуль для работы с 1wire устройствами, привязать свойство к вашему датчику и включить хранение истории.
И уже потом выводить значение на сцены/меню, а хранение истории даст возможность выводить графики.
Поиск рулит.
Почитайте вот тут viewtopic.php?t=3878

Там правда про винду, но это лишь влияет на 'транспорт' от датчика к МД, а настройка и принцип вывода информации в системе там описан, плюс несколько хороших ссылок на полезную для Вас информацию.

Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение neromih » Чт апр 20, 2017 9:11 am

neromih писал(а):Сначала надо добавить модуль для работы с 1wire устройствами, привязать свойство к вашему датчику и включить хранение истории.
Уважаемый lanket я читал эту статью, суть что бы без адаптера, датчики подключены шиной к портам GPIO на Raspberry pi2.
Модуль 1-wire работает как я понял с (или посредством) owserver`а. owserver не позволяет работать с GPIO (не умеет).

Логично предположить, если я смог произвести чтение с помощью PHP, то как это значение перенести (добавить, разместить) на вкладку что бы отображалось.
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение slgeo » Чт апр 20, 2017 9:14 am

Ну, так создайте объект со свойством, а у свойства включите историю хранения.
За это сообщение автора slgeo поблагодарил:
neromih (Чт апр 20, 2017 12:04 pm)
Рейтинг: 1.16%
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение neromih » Чт апр 20, 2017 9:43 am

Про объект понятно, но как обобраться к датчику на Raspberry.
Выше приведенный код работает и отображает показание температуры (пример: 42).
Как настроить этот объект, вот пожалуй, главный вопрос :(
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение slgeo » Чт апр 20, 2017 9:54 am

Так и непонятен ваш вопрос )
Запускайте свой метод каждые 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);
 
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение lanket » Чт апр 20, 2017 10:12 am

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
За это сообщение автора lanket поблагодарил:
neromih (Чт апр 20, 2017 12:03 pm)
Рейтинг: 1.16%
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение nick7zmail » Чт апр 20, 2017 10:14 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);
 
Всё верно говорят...sg('ds18b20.Temp',$temp); как раз записывает в свойство Temp объекта ds18b20 значение температуры...(соответственно такой объект должен быть создан в Панель управления->объекты).
А на сценах, в меню и т.п. выводить %ds18b20.Temp% такой строкой, либо просто привязать информер к этому свойству (в случае со сценой...в меню всё равно только строкой).
За это сообщение автора nick7zmail поблагодарил:
neromih (Чт апр 20, 2017 12:03 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение neromih » Чт апр 20, 2017 10:52 am

Создал Объект - 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 - тест датчика.
В результате выводит надпись - Датчик.

Что я мог упустить?
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
shemnik69
Сообщения: 590
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 63 раза

Re: Опрос ds18b20 + Raspberry (GPIO)

Сообщение shemnik69 » Чт апр 20, 2017 10:52 am

Немного добавлю строчку.
Не рекомендую GPIO использовать для датчиков типа 1-ware и пр. если будут длинные провода.
Если будет их несколько и длинна проводников допустим более 3-5 м то на GPIO могут появится помехи.
Малина очень чуткая вещь. :!:
Ее целесообразнее делать обособленной, т.е в идеале это только сервер.
А внешние все "прибамбасы" делать на сторонних управляемых контроллерах.
Это и проще в части работы с данными, так и безопаснее для "жизни" малинки как таковой.
То что управлять через GPIO возможно, это факт, но при условии что будут выполнены условия согласования сигналаов. напряжений и развязки от длинных линий... чем как раз 1-wareи не удовлетворяет.
Да и сами GPIO очень "нежные"...
Поверьте... будет не совсем хорошо, если результаты приведут к разочарованию .
С GPIO следует "играть" очень осторожно!!! и реально понимать что делать.
Ответить