Опрос ds18b20 + Raspberry (GPIO)

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

Модератор: immortal

Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

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

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

Ой, вы уже сделали. Видимо Cron неправильно настроили.

Отправлено с моего 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 » Пт апр 21, 2017 4:20 am

Все последняя корректировка внесена. Все работает :) как сделать что это "решено"?
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

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

Сообщение lanket » Пт апр 21, 2017 8:22 am

neromih писал(а):Все последняя корректировка внесена. Все работает :) как сделать что это "решено"?
Отредактировать первый пост со ссылкой на пост с решением.


Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
: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 » Пт апр 21, 2017 8:46 am

Чтобы прямо в теме прописать - модераторов попросить надо.

Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

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

Сообщение neromih » Вт апр 25, 2017 4:21 am

Тестил, тестил и дотестил. :)
В общем все работает, но в бд записи дублируются, выглядит это так.

Создал сценарий - Датчик.
Категория - Сенсоры.
Описание - Датчики температуры.
Код PHP:

Код: Выделить всё

$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$file1 = '/sys/bus/w1/devices/28-000006477cb8/w1_slave';
$file2 = '/sys/bus/w1/devices/28-031466a202ff/w1_slave';
$file3 = '/sys/bus/w1/devices/28-0314669f7aff/w1_slave';

$lines = file($file);
$lines1 = file($file1);
$lines2 = file($file2);
$lines3 = file($file3);

$temp = explode('=', $lines[1]);
$temp1 = explode('=', $lines1[1]);
$temp2 = explode('=', $lines2[1]);
$temp3 = explode('=', $lines3[1]);

$temp = number_format($temp[1] / 1000, 1, ',', '');
$temp1 = number_format($temp1[1] / 1000, 1, ',', '');
$temp2 = number_format($temp2[1] / 1000, 1, ',', '');
$temp3 = number_format($temp3[1] / 1000, 1, ',', '');

sg('ds18b20ulc.Value',$temp1);
sg('ds18b20dom.Value',$temp2);
sg('ds18b20pod.Value',$temp);
sg('ds18b20obr.Value',$temp3); 
Создал объекты (описываю один остальные аналогично сделаны) в:
SDevices General Devices Class
SSensors
STempSensors

Сам объект ds18b20dom в нем:
Название:* ds18b20dom
Класс:* STempSensors
Описание: Датчик температуры в доме
В методах:
SSensors-> valueUpdated *
выполнить сценарий Датчик.

В cron добавил выполнение каждые 10 минут.
Title *: Датчик
Description: Датчик
Crontab *:*/10 * * * *
Код: Blockly
запустить сценарий "Датчик"

Все работает, но! В свойствах объекта ds18b20dom.value видно что записи как бы дублируются, то есть должно быть раз в 10 минут, а получается:
2017-04-25 08:10:17: 19,4 X
2017-04-25 08:00:48: 19,4 X
2017-04-25 08:00:45: 19,3 X
2017-04-25 08:00:45: 19,4 X
2017-04-25 08:00:41: 19,3 X
2017-04-25 07:10:07: 19,3 X
2017-04-25 07:00:17: 19,2 X
2017-04-25 06:10:19: 19,2 X
2017-04-25 06:10:15: 19,1 X
2017-04-25 06:10:12: 19,2 X
2017-04-25 06:10:08: 19,1 X
2017-04-25 06:00:08: 19,1 X
2017-04-25 05:50:17: 18,9 X
2017-04-25 05:50:07: 18,9 X
2017-04-25 05:40:17: 18,8 X
2017-04-25 05:40:14: 18,8 X
2017-04-25 05:40:10: 18,7 X

Даже если запустить в ручную сценарий, все равно не одна запись добавляется а две, три и тд.
В чем может быть беда, проблема?

Разобрался:
Сам объект ds18b20dom в нем:
Название:* ds18b20dom
Класс:* STempSensors
Описание: Датчик температуры в доме
Выделенное делать не надо :)
В методах:
SSensors-> valueUpdated *
выполнить сценарий Датчик.
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

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

Сообщение lanket » Ср апр 26, 2017 9:30 am

neromih писал(а):Тестил, тестил и дотестил. :)
В общем все работает, но в бд записи дублируются, выглядит это так.

Создал сценарий - Датчик.
Категория - Сенсоры.
Описание - Датчики температуры.
Код PHP:

Код: Выделить всё

$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$file1 = '/sys/bus/w1/devices/28-000006477cb8/w1_slave';
$file2 = '/sys/bus/w1/devices/28-031466a202ff/w1_slave';
$file3 = '/sys/bus/w1/devices/28-0314669f7aff/w1_slave';

$lines = file($file);
$lines1 = file($file1);
$lines2 = file($file2);
$lines3 = file($file3);

$temp = explode('=', $lines[1]);
$temp1 = explode('=', $lines1[1]);
$temp2 = explode('=', $lines2[1]);
$temp3 = explode('=', $lines3[1]);

$temp = number_format($temp[1] / 1000, 1, ',', '');
$temp1 = number_format($temp1[1] / 1000, 1, ',', '');
$temp2 = number_format($temp2[1] / 1000, 1, ',', '');
$temp3 = number_format($temp3[1] / 1000, 1, ',', '');

sg('ds18b20ulc.Value',$temp1);
sg('ds18b20dom.Value',$temp2);
sg('ds18b20pod.Value',$temp);
sg('ds18b20obr.Value',$temp3);
Создал объекты (описываю один остальные аналогично сделаны) в:
SDevices General Devices Class
SSensors
STempSensors

Сам объект ds18b20dom в нем:
Название:* ds18b20dom
Класс:* STempSensors
Описание: Датчик температуры в доме
В методах:
SSensors-> valueUpdated *
выполнить сценарий Датчик.

В cron добавил выполнение каждые 10 минут.
Title *: Датчик
Description: Датчик
Crontab *:*/10 * * * *
Код: Blockly
запустить сценарий "Датчик"

Все работает, но! В свойствах объекта ds18b20dom.value видно что записи как бы дублируются, то есть должно быть раз в 10 минут, а получается:
2017-04-25 08:10:17: 19,4 X
2017-04-25 08:00:48: 19,4 X
2017-04-25 08:00:45: 19,3 X
2017-04-25 08:00:45: 19,4 X
2017-04-25 08:00:41: 19,3 X
2017-04-25 07:10:07: 19,3 X
2017-04-25 07:00:17: 19,2 X
2017-04-25 06:10:19: 19,2 X
2017-04-25 06:10:15: 19,1 X
2017-04-25 06:10:12: 19,2 X
2017-04-25 06:10:08: 19,1 X
2017-04-25 06:00:08: 19,1 X
2017-04-25 05:50:17: 18,9 X
2017-04-25 05:50:07: 18,9 X
2017-04-25 05:40:17: 18,8 X
2017-04-25 05:40:14: 18,8 X
2017-04-25 05:40:10: 18,7 X

Даже если запустить в ручную сценарий, все равно не одна запись добавляется а две, три и тд.
В чем может быть беда, проблема?

Разобрался:
Сам объект ds18b20dom в нем:
Название:* ds18b20dom
Класс:* STempSensors
Описание: Датчик температуры в доме
Выделенное делать не надо :)
В методах:
SSensors-> valueUpdated *
выполнить сценарий Датчик.
Так видно же что время разное, поэтому записи разные
А значение температуры совпадает 99% потому что просто не изменилось.

Думаю так.

Отправлено с моего 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 » Ср апр 26, 2017 9:51 am

lanket писал(а):
neromih писал(а):Тестил, тестил и дотестил. :)
В общем все работает, но в бд записи дублируются, выглядит это так.

Создал сценарий - Датчик.
Категория - Сенсоры.
Описание - Датчики температуры.
Код PHP:

Код: Выделить всё

$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';
$file1 = '/sys/bus/w1/devices/28-000006477cb8/w1_slave';
$file2 = '/sys/bus/w1/devices/28-031466a202ff/w1_slave';
$file3 = '/sys/bus/w1/devices/28-0314669f7aff/w1_slave';

$lines = file($file);
$lines1 = file($file1);
$lines2 = file($file2);
$lines3 = file($file3);

$temp = explode('=', $lines[1]);
$temp1 = explode('=', $lines1[1]);
$temp2 = explode('=', $lines2[1]);
$temp3 = explode('=', $lines3[1]);

$temp = number_format($temp[1] / 1000, 1, ',', '');
$temp1 = number_format($temp1[1] / 1000, 1, ',', '');
$temp2 = number_format($temp2[1] / 1000, 1, ',', '');
$temp3 = number_format($temp3[1] / 1000, 1, ',', '');

sg('ds18b20ulc.Value',$temp1);
sg('ds18b20dom.Value',$temp2);
sg('ds18b20pod.Value',$temp);
sg('ds18b20obr.Value',$temp3); 
Создал объекты (описываю один остальные аналогично сделаны) в:
SDevices General Devices Class
SSensors
STempSensors

Сам объект ds18b20dom в нем:
Название:* ds18b20dom
Класс:* STempSensors
Описание: Датчик температуры в доме
В методах:
SSensors-> valueUpdated *
выполнить сценарий Датчик.

В cron добавил выполнение каждые 10 минут.
Title *: Датчик
Description: Датчик
Crontab *:*/10 * * * *
Код: Blockly
запустить сценарий "Датчик"

Все работает, но! В свойствах объекта ds18b20dom.value видно что записи как бы дублируются, то есть должно быть раз в 10 минут, а получается:
2017-04-25 08:10:17: 19,4 X
2017-04-25 08:00:48: 19,4 X
2017-04-25 08:00:45: 19,3 X
2017-04-25 08:00:45: 19,4 X
2017-04-25 08:00:41: 19,3 X
2017-04-25 07:10:07: 19,3 X
2017-04-25 07:00:17: 19,2 X
2017-04-25 06:10:19: 19,2 X
2017-04-25 06:10:15: 19,1 X
2017-04-25 06:10:12: 19,2 X
2017-04-25 06:10:08: 19,1 X
2017-04-25 06:00:08: 19,1 X
2017-04-25 05:50:17: 18,9 X
2017-04-25 05:50:07: 18,9 X
2017-04-25 05:40:17: 18,8 X
2017-04-25 05:40:14: 18,8 X
2017-04-25 05:40:10: 18,7 X

Даже если запустить в ручную сценарий, все равно не одна запись добавляется а две, три и тд.
В чем может быть беда, проблема?

Разобрался:
Сам объект ds18b20dom в нем:
Название:* ds18b20dom
Класс:* STempSensors
Описание: Датчик температуры в доме
Выделенное делать не надо :)
В методах:
SSensors-> valueUpdated *
выполнить сценарий Датчик.
Так видно же что время разное, поэтому записи разные
А значение температуры совпадает 99% потому что просто не изменилось.

Думаю так.

Отправлено с моего Redmi Note 3 через Tapatalk
Я как понял это просто из за того что
В методах:
SSensors-> valueUpdated *
повторно выполнялся сценарий датчики.
Этот сценарий снимает показания с датчиков каждые 10 минут, через крон.
А метод просто вызывал его заново. Вот от сюда и дубли.
Сейчас исправил вроде работает :)
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

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

Сообщение neromih » Пт май 26, 2017 5:19 am

В очередной раз снес сервер :)
И так в помощь людям, кто захочет реализовать опрос температурных датчиков ds18b20 подключенных к Raspbbery Pi 2 к GPIO.

Реализовал у себя следующим образом:
1. Создаем Объект: DS18B20;
2. В свойствах добавляем:
DS18B20.дом - здесь или сюда будут вноситься показания с наших датчиков, .дом - температура в доме и т.д.
DS18B20.улица
DS18B20.обратка
DS18B20.подача
DS18B20.updatedTime
3. Создаем сценарий 1-wire :
4. Код - Использовать для программирования PHP:

Код: Выделить всё

$file = '/sys/bus/w1/devices/28-00000634bdbe/w1_slave';  - меняем на свои датчики.
$file1 = '/sys/bus/w1/devices/28-000006477cb8/w1_slave';
$file2 = '/sys/bus/w1/devices/28-031466a202ff/w1_slave';
$file3 = '/sys/bus/w1/devices/28-0314669f7aff/w1_slave';

$lines = file($file);
$lines1 = file($file1);
$lines2 = file($file2);
$lines3 = file($file3);

$temp = explode('=', $lines[1]);
$temp1 = explode('=', $lines1[1]);
$temp2 = explode('=', $lines2[1]);
$temp3 = explode('=', $lines3[1]);

$temp = number_format($temp[1] / 1000, 1, ',', '');
$temp1 = number_format($temp1[1] / 1000, 1, ',', '');
$temp2 = number_format($temp2[1] / 1000, 1, ',', '');
$temp3 = number_format($temp3[1] / 1000, 1, ',', '');

sg('DS18B20.value', "1");
sg('DS18B20.улица',$temp1);
sg('DS18B20.дом',$temp2);
sg('DS18B20.подача',$temp);
sg('DS18B20.обратка',$temp3);
5. Добавляем в Cron.
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

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

Сообщение immortal » Пт май 26, 2017 8:21 am

Зачем такие танцы с бубном? чем не устраивает owfs?
просто в owfs.conf добавляем:
server: w1

и подключаем в МД стандартным способом
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

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

Сообщение neromih » Пт май 26, 2017 9:34 am

immortal писал(а):Зачем такие танцы с бубном? чем не устраивает owfs?
просто в owfs.conf добавляем:
server: w1

и подключаем в МД стандартным способом
А разве owfs работает с датчиками подключенными через GPIO, без Мастера 1-wire сети? В OpenHab пытался сделать не получилось...
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Ответить