POWER MONITOR на Arduino
Модератор: immortal
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: POWER MONITOR на Arduino
MajorDoMo сам пишет лог в SQL, непонимаю зачем нужно предварительно создавать для этого лог-файл.
Но если у Вас так настроено, давайте формат вашего файла.
Тут кстати есть интересная статья как снимать телеметрию с трехфазного счетчика:
http:\\ab-log.ru/smart-house/mercury-230
Но если у Вас так настроено, давайте формат вашего файла.
Тут кстати есть интересная статья как снимать телеметрию с трехфазного счетчика:
http:\\ab-log.ru/smart-house/mercury-230
-
- Сообщения: 107
- Зарегистрирован: Сб июн 30, 2012 7:54 am
- Благодарил (а): 0
- Поблагодарили: 14 раз
Re: POWER MONITOR на Arduino
dmw спасибо, я вечером напишу.
Сейчас у меня замер собран на ардуино - в этой теме в самом начале выкладывал свои потуги...но как-то кривенько все это работает, вот решил на Меркурий собрать.
MajorDoMo сам пишет лог в SQL, не понимаю зачем нужно предварительно создавать для этого лог-файл.
у меня пока отдельно от данного проекта работает связка SQL+php+apach?
вот взгляните мои потуги:) duvarov.dyndns.org
вот для него и хочу прикрутить счетчик меркурий для замера мощности, частоты, тока...
еще к Вам вопрос, не подскажете где приобрели железку LAN-RS485? по вашей ссылке только описание...
Сейчас у меня замер собран на ардуино - в этой теме в самом начале выкладывал свои потуги...но как-то кривенько все это работает, вот решил на Меркурий собрать.
MajorDoMo сам пишет лог в SQL, не понимаю зачем нужно предварительно создавать для этого лог-файл.
у меня пока отдельно от данного проекта работает связка SQL+php+apach?
вот взгляните мои потуги:) duvarov.dyndns.org
вот для него и хочу прикрутить счетчик меркурий для замера мощности, частоты, тока...
еще к Вам вопрос, не подскажете где приобрели железку LAN-RS485? по вашей ссылке только описание...
-
- Сообщения: 107
- Зарегистрирован: Сб июн 30, 2012 7:54 am
- Благодарил (а): 0
- Поблагодарили: 14 раз
Re: POWER MONITOR на Arduino
dmw
мне нужно, чтобы на выходе формировался лог вида:
23.07.2013 21:43:59 1 21.38
23.07.2013 21:44:00 2 22.13
23.07.2013 21:44:00 3 22.13
23.07.2013 21:44:01 4 22.88
23.07.2013 21:44:01 5 21.31
23.07.2013 21:44:02 6 22.09
23.07.2013 21:44:02 7 54.31
23.07.2013 21:44:03 8 17.59
23.07.2013 21:44:03 9 21.88
где:
23.07.2013 - дата
21:43:59 - время
1 - номер датчика
21.38 - значение датичка
разделитель - пробел.
Под номером датчика я подразумеваю 1 - это например напряжение фаза1, 2- это напряжение фазы2... и так далее...ток, мощность...и т.п.
так, чтобы в последствии можно было добавить в ваш php строчку, получения из счетчика каких либо еще данных и присвоить их числу (номеру датчика).
Можно такое сделать?
мне нужно, чтобы на выходе формировался лог вида:
23.07.2013 21:43:59 1 21.38
23.07.2013 21:44:00 2 22.13
23.07.2013 21:44:00 3 22.13
23.07.2013 21:44:01 4 22.88
23.07.2013 21:44:01 5 21.31
23.07.2013 21:44:02 6 22.09
23.07.2013 21:44:02 7 54.31
23.07.2013 21:44:03 8 17.59
23.07.2013 21:44:03 9 21.88
где:
23.07.2013 - дата
21:43:59 - время
1 - номер датчика
21.38 - значение датичка
разделитель - пробел.
Под номером датчика я подразумеваю 1 - это например напряжение фаза1, 2- это напряжение фазы2... и так далее...ток, мощность...и т.п.
так, чтобы в последствии можно было добавить в ваш php строчку, получения из счетчика каких либо еще данных и присвоить их числу (номеру датчика).
Можно такое сделать?
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: POWER MONITOR на Arduino
Вот для счетчика Меркурий 200 (однофазный):
Код: Выделить всё
<?php
$service_port = 10010;
$address = "192.168.1.160"; //адрес преобразователя интерфейсов
$server = "192.168.1.20"; //адрес сервера MajorDoMo
$cmd = array (0x00, 0x01, 0x0B, 0xF0, 0x63, 0x50, 0x17); /*команда счетчику на запрос текущих данных, первые 4 байта - адрес счетчика (у меня 068592, это последние 6 цифр серийного номера), 2 последних байта - контрольная сумма*/
$hex = "";
for ($i=0; $i<count($cmd); $i++){$hex .= chr($cmd[$i]);} //Формируем запрос для счетчика
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //Создаём TCP/IP сокет
$result = socket_connect($socket, $address, $service_port); //Пытаемся соединиться с '$address' на порту '$service_port'
$result = socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0)); //Устанавливаем таймаут на сокете не более 5 секунд
socket_write($socket, $hex, strlen($hex)); //Отправляем запрос
$result = socket_read($socket, 14); //Читаем ответ
// Результат получаем в шестнадцатиричном виде, но его написание соответствует десятичному значению.
// Например 0x22 0x87 = 228,7 вольт. Переводим результат в человеческий вид.
$Uv = round(((ord($result[5])>>4)*100)+((ord($result[5])&0x0f)*10)+(ord($result[6])>>4)+((ord($result[6])&0x0f)/10),1);
$Ia = round(((ord($result[7])>>4)*10)+(ord($result[7])&0x0f)+((ord($result[8])>>4)/10)+((ord($result[8])&0x0f)/100),2);
$Pv = round(((ord($result[9])&0x0f)*10)+(ord($result[10])>>4)+((ord($result[10])&0x0f)/10)+((ord($result[11])>>4)/100)+((ord($result[11])&0x0f)/1000),3);
socket_close($socket);//Закрываем сокет
//Значения Uv, Ia, Pv теперь можно передать в базу MajorDoMo
$result=file_get_contents("http://".$server."/objects/?object=sensorAmper&op=m&m=EleChanged&t=".$Ia);
$result=file_get_contents("http://".$server."/objects/?object=sensorVatt&op=m&m=EleChanged&t=".$Pv);
$result=file_get_contents("http://".$server."/objects/?object=sensorVolt&op=m&m=EleChanged&t=".$Uv);
//и сохранить значения в лог-файл в формате: 23.07.2013 21:43:59 1 21.38
$FilePath='C:\LogFolder\'; //имя папки где лежит лог-файл
$FileName='logfile.log'; //имя файла
$str1=date('d.m.Y H:i:s').' 1 '.$Ia."\r\n"; //формат записи значения силы тока
$str2=date('d.m.Y H:i:s').' 2 '.$Pv."\r\n"; //формат записи значения мощности
$str3=date('d.m.Y H:i:s').' 3 '.$Uv."\r\n"; //формат записи значения напряжения
$F=file_get_contents($FilePath.$FileName); // Читаем файл
if ($F==false) mkdir($FilePath); //Если его не существует или путь не верен, то создаем
file_put_contents($FilePath.$FileName,$str1); //Добавляем данные в файл
file_put_contents($FilePath.$FileName,$str2);
file_put_contents($FilePath.$FileName,$str3);
?>
-
- Сообщения: 107
- Зарегистрирован: Сб июн 30, 2012 7:54 am
- Благодарил (а): 0
- Поблагодарили: 14 раз
Re: POWER MONITOR на Arduino
dmw
огромное Вам спасибо!
еще к Вам вопрос, не подскажете где приобрели железку LAN-RS485? по вашей ссылке только описание...
огромное Вам спасибо!
еще к Вам вопрос, не подскажете где приобрели железку LAN-RS485? по вашей ссылке только описание...
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: POWER MONITOR на Arduino
Не помню, давно валялся без дела. Поищите аналоги или сами соберите COM-RS485 или USB-RS485: http://incotex-counter.blogspot.ru/2012 ... 85can.html
-
- Сообщения: 80
- Зарегистрирован: Пн апр 01, 2013 10:20 pm
- Откуда: Днепропетровск
- Благодарил (а): 7 раз
- Поблагодарили: 3 раза
Re: POWER MONITOR на Arduino
Скажите, а у вашего девайса LAN-RS485 нет проблем с первым подключением к счётчику? Я использую такой USB-RS485, и у меня как и у автора этого кода ничего не работает пока компорт не инициализирует программа Конфигуратор. Я уже comport monitor посмотрел что она шлёт, вроде всё легально. Короче если у вас работает как: воткнул провода, запустил пхп скрипт и всё работает, то буду тоже себе покупать LAN-RS485, потому как задолбало делать ручной шаг если вырубили свет или перегрузил сервак.dmw писал(а):Вот для счетчика Меркурий 200 (однофазный):
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: POWER MONITOR на Arduino
Нет проблем как у вас абсолютно. LAN-RS485 самодостаточен как независимое устройство и доступен по IP сразу после включения.
Может лучше решить программно? например написать серверную утилитку которая смогла бы работать с COM и отвечать в php через сокет localhost?
Потом можно например в автозагрузку поставить Конфигуратор и его последующее убиение.
Может лучше решить программно? например написать серверную утилитку которая смогла бы работать с COM и отвечать в php через сокет localhost?
Потом можно например в автозагрузку поставить Конфигуратор и его последующее убиение.
-
- Сообщения: 80
- Зарегистрирован: Пн апр 01, 2013 10:20 pm
- Откуда: Днепропетровск
- Благодарил (а): 7 раз
- Поблагодарили: 3 раза
Re: POWER MONITOR на Arduino
Да я готов написать, просто как я сказал, я не нашёл что такого особенного Конфигуратор делает с компортом. Я вроде внимательно рассмотрел с какими параметрами он открывает порт. При старте шлёт ещё кучу данных, но я так выборочно проверил, все эти данные относятся к получению статистики с счётчика.
Похоже надо пытать разработчика на блоге. Хотя наверное дешевле будт найти LAN-RS485 за 20-30дол
Похоже надо пытать разработчика на блоге. Хотя наверное дешевле будт найти LAN-RS485 за 20-30дол
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: POWER MONITOR на Arduino
Наработки с соседнего дружеского сайта не смотрели?
http://ab-log.ru/smart-house/mercury-230
http://ab-log.ru/smart-house/mercury-230