Снятие показаний счетчиков электричества, воды, газа

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Smirnoffkv
Сообщения: 17
Зарегистрирован: 06 мар 2014, 16:28

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Smirnoffkv » 03 апр 2016, 13:52

THK писал(а):
Но похоже, что-то делаю не правильно с открытием и закрытием порта, тк объединив код - выполняется только первая команда... :oops:
Вот этот скрипт, по идее, далжен работать.

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

<?php
exec('mode com4: baud=9600 data=8 stop=1 parity=n xon=off');

$f = fopen("com4","r+");
//*************************************************************
$i=0;
$cmd = array(0x00,0x0E,0xEC,0xBC,0x63,0xD7,0xF4);         // Команда "Мгновенные значения"
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);}      // Сформировать строку символов для посылки в COM-порт
fwrite($f,$c);
$result=fread($f,21);

$Uv = ((ord($result[12])>>4)*100)+((ord($result[12])&0x0f)*10)+(ord($result[13])>>4)+((ord($result[13])&0x0f)/10);
$Ia = ((ord($result[14])>>4)*10)+(ord($result[14])&0x0f)+((ord($result[15])>>4)/10)+((ord($result[15])&0x0f)/100);
$Pv = ((ord($result[16])&0x0f)*10)+(ord($result[17])>>4)+((ord($result[17])&0x0f)/10)+((ord($result[18])>>4)/100)+((ord($result[18])&0x0f)/1000);

echo "<br>Напряжение сети:  ".$Uv ." Uv";
echo "<br>Сила тока :  ".$Ia ." Ia";
echo "<br>Потребляемая мощьность : ".$Pv." P kVt";
//*************************************************************
$i=0;
$cmd = array(0x00,0x0E,0xEC,0xBC,0x27,0xD7,0xC7);         // Команда "Накопленная Энергия"
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);}      // Сформировать строку символов для посылки в COM-порт
fwrite($f,$c);
$result=fread($f,30);

$T1 = ((ord($result[13])>>4)*1000)+((ord($result[13])&0x0f)*100)+((ord($result[14])>>4)*10)+(ord($result[14])&0x0f)+((ord($result[15])>>4)/10)+((ord($result[15])&0x0f)/100);
$T2 = ((ord($result[17])>>4)*1000)+((ord($result[17])&0x0f)*100)+((ord($result[18])>>4)*10)+(ord($result[18])&0x0f)+((ord($result[19])>>4)/10)+((ord($result[19])&0x0f)/100);
$SUMM = $T1+$T2;

echo "<br>Тариф 1:  ".$T1 ." kVt*h";
echo "<br>Тариф 2:  ".$T2 ." kVt*h";
echo "<br>Сумма:  ".$SUMM ." kVt*h";
//*************************************************************
fclose($f);
?>
Или именно такой вариант не работает?
Этот рнр под винду я понимаю, а как под линукс дебиан переделать? У меня переходник юсби rs485, определяется как ttyUSB0.

Sergey Borovkov
Сообщения: 77
Зарегистрирован: 22 ноя 2013, 03:17

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Sergey Borovkov » 03 апр 2016, 14:04

У меня в одном проекте было вроде так под винду:

exec("mode COM3 BAUD=115200 PARITY=N data=8 stop=1 xon=off to=off odsr=off octs=off dtr=off rts=off idsr=off");
$handle = fopen("com3", "r+");

и под линух:
exec("stty -F /dev/ttyUSB0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts");
$handle = fopen("/dev/ttyUSB0", "r+");

Скорость измените на свою.
Если не подойдет - можно погуглить инициализацию порта для работы с ардуино под linux - там аналогичные параметры.

Smirnoffkv
Сообщения: 17
Зарегистрирован: 06 мар 2014, 16:28

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Smirnoffkv » 03 апр 2016, 15:23

доеду до дома, попробую. Отпишусь. Очень хочется получить ответ от счетчика, а то под виндой работает а в линуксе нет.

Smirnoffkv
Сообщения: 17
Зарегистрирован: 06 мар 2014, 16:28

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Smirnoffkv » 04 апр 2016, 00:20

Запускаю измененный скрипт

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

<?
exec("stty -F /dev/ttyUSB0 cs7 9600 -parodd parenb -cstopb -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts");
$f = fopen("/dev/ttyUSB0","r+");
$i=0;
$cmd = array(0x2F,0x3F,0x21,0x0D,0x0A);
$c="";
for($i=0; $i < count($cmd); $i++){$c .=chr($cmd[$i]);}
fwrite($f,$c);
$result=fread($f,5);
echo $result;
fclose($f);
?>
зависает на fread($f,5)
что не так? Счетчик СЕ102М, параметры порта 7Е1.

Smirnoffkv
Сообщения: 17
Зарегистрирован: 06 мар 2014, 16:28

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Smirnoffkv » 05 апр 2016, 16:12

Вот этот скрипт:

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

<?php
exec('mode com7 baud=9600 data=7 stop=1 parity=even xon=on dtr=off to=off');
$f = fopen("com7","r+");
$i=0;
$cmd = array(0x2F,0x3F,0x21,0x0D,0x0A);
$c="";
for($i=0; $i < count($cmd); $i++) {$c .= chr($cmd[$i]);}
echo ("save:".$c);
fwrite($f,$c);
$result=fread($f,16);
echo ("load:".$result);
$cmd = array(0x06,0x30,0x35,0x36,0x0D,0x0A);
$c="";
for($i=0; $i < count($cmd); $i++) {$c .= chr($cmd[$i]);}
fwrite($f,$c);
$result=fread($f,61);
$total = ((($result[7])*1000)+(($result[8])*100)+(($result[9])*10)+($result[10]));
echo ("total=:".$total);
fclose($f);
echo("close!");
?>
под виндой работает, переношу на линукс:

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

<?php
exec('stty -F /dev/ttyUSB0 9600 cs7 -cstopb parenb');
$f = fopen("/dev/ttyUSB0","r+");
$i=0;
$cmd = array(0x2F,0x3F,0x21,0x0D,0x0A);
$c="";
for($i=0; $i < count($cmd); $i++) {$c .= chr($cmd[$i]);}
echo ("save:".$c);
fwrite($f,$c);
$result=fread($f,16);
echo ("load:".$result);
$cmd = array(0x06,0x30,0x35,0x36,0x0D,0x0A);
$c="";
for($i=0; $i < count($cmd); $i++) {$c .= chr($cmd[$i]);}
fwrite($f,$c);
$result=fread($f,61);
$total = ((($result[7])*1000)+(($result[8])*100)+(($result[9])*10)+($result[10]));
echo ("total=:".$total);
fclose($f);
echo("close!");
?>

, останавливается на fread. Надо как то параметры порта правильно задать.

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение THK » 05 апр 2016, 21:43

Попробуйте в начало линуксового скрипта (перед exec('stty -F /dev/ttyUSB0 9600 cs7 -cstopb parenb');) добавить
exec('setserial /dev/ttyUSB0 autoconfig');

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение kod.begemot » 23 июн 2016, 22:45

Идея возникла - а что если сделать мелкую железку - МК какой нибудь простой (?), часики к нему (ну или просто кварц хороший?), и прицепить к любому счетчику с импульсным выходом- хоть водяному, хоть газовому, хоть электрическому... А в качестве интерфейса - I2C, и завести их в mega-328?
Чтобы в доме особо интерфейсов разных не плодить..
И спрашиваем мы через мегу - сколько там у нас "натикало", и с какой скоростью тикает - а он в ответ значение счетчика и текущее значение времени между импульсами?

kpp
Сообщения: 147
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Київ-Дніпро

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение kpp » 24 июн 2016, 10:00

Мастер сети 1wire и простая схемка на ds2423(микросхемка для сети 1wire с двумя счетчиками и памятью на борту) .
Я такими снимаю показания со счетчиков воды и газа.
Софт отлично работает и под винду и под FreeBSD\Linux.
Проще \ надежнее \ удобнее не знаю.
Одно огорчает: ds2423 почему-то сняли с производства и аналогов нет.
Но в продаже еще есть.
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение kod.begemot » 24 июн 2016, 17:30

Ну так я просто пример привел со счетчиком. А так - если использовать МК, общающийся с системой через I2C можно делать многое... К примеру: можно измерять ток по нескольким каналам (потребление), снимая данные с трансформаторов тока, и вычисляя действующее значение в МК...
А так да - спасибо за информацию - приобрету себе парочку DS2423, для опытов :)
P.S. я так понял - можно при помощи DS2482-100 прикрутить счетчик такой к меге?
P.P.S. а где приобретаете DS2423? не посоветуете продавана?

kpp
Сообщения: 147
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Київ-Дніпро

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение kpp » 24 июн 2016, 19:44

DS2423 брал здесь http://ru.aliexpress.com/store/210768
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

MSapogov
Сообщения: 312
Зарегистрирован: 13 май 2015, 08:44
Откуда: г. Томск

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение MSapogov » 31 июл 2016, 14:50

Может вопрос обсуждался, но не нашел ответа.
Непроходимо снимать расход воды с счетчиков НЕ оборудованных импульсным выходом. На счетчиках есть крыльчатка, которая крутится.
Понимаю, что это будет фотодиод/светодиод + компаратор, но может существует готовое решение.
Кто что посоветует?

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение kod.begemot » 31 июл 2016, 18:18

Насколько я помню - крыльчатка там крутится как раз при помощи магнитов. попробуйте пройтись герконом по корпусу счетчика, авось такое место и найдете. а с светодиодом/фотодиодом - таки да. должно получиться. Сам так снимаю показания с электросчетчика.
Вот такое использую:
Изображение
купил на ибее 10 штук. Они маленькие, 5*5 мм примерно.

MSapogov
Сообщения: 312
Зарегистрирован: 13 май 2015, 08:44
Откуда: г. Томск

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение MSapogov » 31 июл 2016, 19:29

Спасибо!
Ведь знал что есть не кустарный оптический датчик...
И сразу по этой модели нашел кучу статей...
http://www.esp8266.nu/forum/viewtopic.php?f=5&t=744
или
http://morethanuser.blogspot.ru/2012/11 ... unter.html
То что нужно.
Заказал, жду неделю и буду экспериментировать.

Ho Hum
Сообщения: 23
Зарегистрирован: 05 янв 2017, 23:26

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Ho Hum » 10 фев 2017, 00:45

Подниму тему.
Есть счетчик газа Gallus G4. Оборудован механическим счетчиком расхода газа, на последнем барабане которого есть светоотражающая метка.
Подскажите, каким датчиком ее можно считывать?
Пробовал таким https://ru.aliexpress.com/item/IR-Infra ... 0.0.5V8awx.
Не получилось, переходит в "1" уже при приближении к счетчику, метку не отслеживает.
Что посоветуете?

MSapogov
Сообщения: 312
Зарегистрирован: 13 май 2015, 08:44
Откуда: г. Томск

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение MSapogov » 10 фев 2017, 06:16

Я даже используя CNY70 не сразу смог заставить улавливать крыльчатку. Пришлось долго и кропотливо искать место и регулировать чуствительность.
Иногда для этих целей (поиска оптимального места и усиления) очень подходит самый простой олсцилограф.

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение kod.begemot » 10 фев 2017, 15:59

Ho Hum писал(а):... на последнем барабане которого есть светоотражающая метка...
Вы уверены, что это "светоотражающая метка"? Я тоже так думал, и ловил эту метку успешно с помощью описанных выше компонентов. Только вот оказалось всё проще. Там магнит, это он и блестит. Внизу, под счетным механизмом в пластике углубление, для татчика штатного. У себя сейчас использую маленький геркон, из датчика открытия двери. главное подсмотреть - при какой цифре на счетчике этот магнит внизу, напротив ниши. В этот момент останавливаем расход газа, и уже спокойно находим оптимальное место для геркона.

Ho Hum
Сообщения: 23
Зарегистрирован: 05 янв 2017, 23:26

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Ho Hum » 10 фев 2017, 22:31

Мой счетчик выглядит так:
Изображение
Места для геркона у него нет.
Если посмотреть на правый барабан, на шестерке видна светоотражающая метка.
О том, что она есть, написано в инструкции к счетчику - п. 4.4 на стр. 3
http://www.vdgu.ru/documents/schetchiki ... s2002.html
Так что нужно понять, какой датчик может считать эту метку.

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение kod.begemot » 12 фев 2017, 01:55

Ну я не утверждал, предположил...
На али ищется по "TCRT5000 IR Infrared Line Track Follower Sensor Obstacle Avoidance Module For Arduino", там платка, сразу с компаратором и настройкой чувствительности. Я тамошние диоды менял на CNY70.
Если в помещении - то этого достаточно. Если на улице, и может попадать солнце, то нужно закрывать от прямых лучей.

Dmitrij
Сообщения: 38
Зарегистрирован: 03 мар 2015, 15:14

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение Dmitrij » 16 фев 2017, 13:40

Ho Hum писал(а): О том, что она есть, написано в инструкции к счетчику - п. 4.4 на стр. 3
http://www.vdgu.ru/documents/schetchiki ... s2002.html
Так что нужно понять, какой датчик может считать эту метку.
А как вы доберитесь до этой метки без вскрытия счетчика?
Я вижу только такое решение http://www.ab-log.ru/smart-house/heatin ... ter-webcam

filippovsky
Сообщения: 75
Зарегистрирован: 30 авг 2015, 21:44

Re: Снятие показаний счетчиков электричества, воды, газа

Сообщение filippovsky » 19 фев 2017, 14:39

Ho Hum писал(а): Если посмотреть на правый барабан, на шестерке видна светоотражающая метка.
Так что нужно понять, какой датчик может считать эту метку.
Возможно, тогда можно использовать какой-нибудь из этих датчиков?
http://meandr.ru/datchik
Например, этот http://meandr.ru/datchik-opticheskij-diffuznye

Ответить