Re: Опрос ds18b20 + Raspberry (GPIO)
Добавлено: Чт апр 20, 2017 6:33 pm
Ой, вы уже сделали. Видимо Cron неправильно настроили.
Отправлено с моего Redmi Note 3 через Tapatalk
Отправлено с моего Redmi Note 3 через Tapatalk
Отредактировать первый пост со ссылкой на пост с решением.neromih писал(а):Все последняя корректировка внесена. Все работаеткак сделать что это "решено"?
Код: Выделить всё
$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); Так видно же что время разное, поэтому записи разные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 *
выполнить сценарий Датчик.
Я как понял это просто из за того что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
Код: Выделить всё
$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);А разве owfs работает с датчиками подключенными через GPIO, без Мастера 1-wire сети? В OpenHab пытался сделать не получилось...immortal писал(а):Зачем такие танцы с бубном? чем не устраивает owfs?
просто в owfs.conf добавляем:
server: w1
и подключаем в МД стандартным способом