Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
Модератор: immortal
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
Вместо файла Andrey_B, вставил файл THK:
<?php
exec('mode COM3: baud=96 data=8 stop=1 parity=n xon=off to=on');
// Несмотря на настройки, порт правильно не откравается, перед запуском скрипта надо запустить родной софт
// причины такого поведения пока не выяснены
$f = fopen("COM3","r+");
$i=0;
$cmd = array(0x00,0x0E,0x1F,0xCE,0x63,0x03,0x67); // Команда "Мгновенные значения"
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);} // Сформировать строку символов для посылки в COM-порт
fwrite($f,$c);
$result=fread($f,14);
// Результат получаем в шестнадцатиричном виде, но его написание соответствует десятичному значению.
// Например 0x22 0x87 = 228,7 вольт. Переводим результат в человеческий вид.
$Uv = ((ord($result[5])>>4)*100)+((ord($result[5])&0x0f)*10)+(ord($result[6])>>4)+((ord($result[6])&0x0f)/10);
$Ia = ((ord($result[7])>>4)*10)+(ord($result[7])&0x0f)+((ord($result[8])>>4)/10)+((ord($result[8])&0x0f)/100);
$Pv = ((ord($result[9])&0x0f)*10)+(ord($result[10])>>4)+((ord($result[10])&0x0f)/10)+((ord($result[11])>>4)/100)+((ord($result[11])&0x0f)/1000);
// Значения Uv, Ia, Pv можно писать в базу...
echo "<br>Напряжение сети: ".$Uv ." Uv";
echo "<br>Сила така : ".$Ia ." Ia";
echo "<br>Потребляемая мощьность : ".$Pv." P kVt";
fclose($f);
?>
Получил ответ:
���������� ����: 55 Uv
���� ���� : 166.64 Ia
������������ ��������� : 150.55 P kVt
<?php
exec('mode COM3: baud=96 data=8 stop=1 parity=n xon=off to=on');
// Несмотря на настройки, порт правильно не откравается, перед запуском скрипта надо запустить родной софт
// причины такого поведения пока не выяснены
$f = fopen("COM3","r+");
$i=0;
$cmd = array(0x00,0x0E,0x1F,0xCE,0x63,0x03,0x67); // Команда "Мгновенные значения"
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);} // Сформировать строку символов для посылки в COM-порт
fwrite($f,$c);
$result=fread($f,14);
// Результат получаем в шестнадцатиричном виде, но его написание соответствует десятичному значению.
// Например 0x22 0x87 = 228,7 вольт. Переводим результат в человеческий вид.
$Uv = ((ord($result[5])>>4)*100)+((ord($result[5])&0x0f)*10)+(ord($result[6])>>4)+((ord($result[6])&0x0f)/10);
$Ia = ((ord($result[7])>>4)*10)+(ord($result[7])&0x0f)+((ord($result[8])>>4)/10)+((ord($result[8])&0x0f)/100);
$Pv = ((ord($result[9])&0x0f)*10)+(ord($result[10])>>4)+((ord($result[10])&0x0f)/10)+((ord($result[11])>>4)/100)+((ord($result[11])&0x0f)/1000);
// Значения Uv, Ia, Pv можно писать в базу...
echo "<br>Напряжение сети: ".$Uv ." Uv";
echo "<br>Сила така : ".$Ia ." Ia";
echo "<br>Потребляемая мощьность : ".$Pv." P kVt";
fclose($f);
?>
Получил ответ:
���������� ����: 55 Uv
���� ���� : 166.64 Ia
������������ ��������� : 150.55 P kVt
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
отлично -- уже что-то рабочее
в принципе, самая сложная часть у вас готова -- теперь осталось только данные в систему внести.
через панель управления добавьте класс объектов electricity
в нём добавьте свойства:
Uv
Ia
Pv
в каждом из этих свойств укажите срок хранение истории, чтоб можно было строить графики
далее, в этом классе добавьте объект micron
теперь обновите свой скрипт до указанного ниже
При каждом вызове скрипта значение будет сохраняться в свойствах объекта. Его можно выводить в меню и строить графики по примеру температурных (на сайте описано на примерах).
Единственное что -- нужно чтобы этот скрипт висел постоянно и опрашивал счётчик время от времени, это можно сделать аналогично тому, как работает skypebot или bluetooth-скрипт. А можно сделать скрипт внутри системы и вызывать его через runScript(); -- вариантов много.
Попробуйте пока просто сделать объекты и запустить изменённый скрипт -- если заработает как надо, то двинемся дальше и всё поставим на автоматическое обновление
в принципе, самая сложная часть у вас готова -- теперь осталось только данные в систему внести.
через панель управления добавьте класс объектов electricity
в нём добавьте свойства:
Uv
Ia
Pv
в каждом из этих свойств укажите срок хранение истории, чтоб можно было строить графики
далее, в этом классе добавьте объект micron
теперь обновите свой скрипт до указанного ниже
Код: Выделить всё
<?php
include_once("./config.php");
include_once("./lib/loader.php");
$db=new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME); // connecting to database
header ('Content-Type: text/html; charset=utf-8');
exec('mode COM3: baud=96 data=8 stop=1 parity=n xon=off to=on');
// Несмотря на настройки, порт правильно не откравается, перед запуском скрипта надо запустить родной софт
// причины такого поведения пока не выяснены
$f = fopen("COM3","r+");
$i=0;
$cmd = array(0x00,0x0E,0x1F,0xCE,0x63,0x03,0x67); // Команда "Мгновенные значения"
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);} // Сформировать строку символов для посылки в COM-порт
fwrite($f,$c);
$result=fread($f,14);
// Результат получаем в шестнадцатиричном виде, но его написание соответствует десятичному значению.
// Например 0x22 0x87 = 228,7 вольт. Переводим результат в человеческий вид.
$Uv = ((ord($result[5])>>4)*100)+((ord($result[5])&0x0f)*10)+(ord($result[6])>>4)+((ord($result[6])&0x0f)/10);
$Ia = ((ord($result[7])>>4)*10)+(ord($result[7])&0x0f)+((ord($result[8])>>4)/10)+((ord($result[8])&0x0f)/100);
$Pv = ((ord($result[9])&0x0f)*10)+(ord($result[10])>>4)+((ord($result[10])&0x0f)/10)+((ord($result[11])>>4)/100)+((ord($result[11])&0x0f)/1000);
sg('micron.Uv',$Uv);
sg('micron.Ia',$Ia);
sg('micron.Pv',$Pv);
echo "Stored: $Uv Uv; $Ia Ia; $Pv kVt";
fclose($f);
$db->Disconnect(); // closing database connection
?>
Единственное что -- нужно чтобы этот скрипт висел постоянно и опрашивал счётчик время от времени, это можно сделать аналогично тому, как работает skypebot или bluetooth-скрипт. А можно сделать скрипт внутри системы и вызывать его через runScript(); -- вариантов много.
Попробуйте пока просто сделать объекты и запустить изменённый скрипт -- если заработает как надо, то двинемся дальше и всё поставим на автоматическое обновление
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
В Parent Class: оставить -no- или выставить usb ?
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
По запросу выдает:
Stored: 250.4 Uv; 151.62 Ia; 166.365 kVt
Stored: 250.4 Uv; 151.62 Ia; 166.365 kVt
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
можно оставить -no-IVE писал(а):В Parent Class: оставить -no- или выставить usb ?
сейчас расскажу как повесить на автоматическое обновление
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
Заходите в раздел Скрипты и создайте скрипт с названием UpdateMicron
В код скрипта поставьте то что ниже (тут убрано немного лишнего с предыдущего варианта):
Далее, в разделе Классы объектов кликните на метод объекта таймер onNewMinute и добавьте в код следующую строчку
Собственно всё, показания счётчика будут считываться и сохраняться каждую минуту.
Если это слишком часто, то можно сделать каждые 5-минут таким образом:
(последний код вслепую написал, но должно работать)
В код скрипта поставьте то что ниже (тут убрано немного лишнего с предыдущего варианта):
Код: Выделить всё
exec('mode COM3: baud=96 data=8 stop=1 parity=n xon=off to=on');
// Несмотря на настройки, порт правильно не откравается, перед запуском скрипта надо запустить родной софт
// причины такого поведения пока не выяснены
$f = fopen("COM3","r+");
$i=0;
$cmd = array(0x00,0x0E,0x1F,0xCE,0x63,0x03,0x67); // Команда "Мгновенные значения"
$c="";
for($i=0; $i < count($cmd); $i++){$c .= chr($cmd[$i]);} // Сформировать строку символов для посылки в COM-порт
fwrite($f,$c);
$result=fread($f,14);
// Результат получаем в шестнадцатиричном виде, но его написание соответствует десятичному значению.
// Например 0x22 0x87 = 228,7 вольт. Переводим результат в человеческий вид.
$Uv = ((ord($result[5])>>4)*100)+((ord($result[5])&0x0f)*10)+(ord($result[6])>>4)+((ord($result[6])&0x0f)/10);
$Ia = ((ord($result[7])>>4)*10)+(ord($result[7])&0x0f)+((ord($result[8])>>4)/10)+((ord($result[8])&0x0f)/100);
$Pv = ((ord($result[9])&0x0f)*10)+(ord($result[10])>>4)+((ord($result[10])&0x0f)/10)+((ord($result[11])>>4)/100)+((ord($result[11])&0x0f)/1000);
sg('micron.Uv',$Uv);
sg('micron.Ia',$Ia);
sg('micron.Pv',$Pv);
fclose($f);
Код: Выделить всё
runScript('UpdateMicron');
Если это слишком часто, то можно сделать каждые 5-минут таким образом:
Код: Выделить всё
if (((int)$m)%5==0) {
runScript('UpdateMicron');
}
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
если всё заработает и настроите графики, то поделитесь скриншотами -- оформим статью на сайте, как пример использования системы. сам захотел такой счётчик себе поставить, только у нас в Минске что-то они не продаются. Поищу ещё какой-нибудь вариант снимать значения напряжения/тока с сети, чтобы строить график потребляемой мощности.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 867
- Зарегистрирован: Вт янв 17, 2012 12:31 pm
- Благодарил (а): 121 раз
- Поблагодарили: 78 раз
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
Отпишите пожалуйста какой счетчик
1-3 фазный?
сколько тарифов?
где приобретали в компании или на сайте?
где приобретали интерфейс для связи с компьютером?
заранее спасибо.
1-3 фазный?
сколько тарифов?
где приобретали в компании или на сайте?
где приобретали интерфейс для связи с компьютером?
заранее спасибо.
Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212
http://www.nzif.ru/modules/myReviews/de ... php?lid=45Vit писал(а):Отпишите пожалуйста какой счетчик
1-3 фазный?
сколько тарифов?
где приобретали в компании или на сайте?
где приобретали интерфейс для связи с компьютером?
заранее спасибо.
В том то и дело что не приобретал, а уже стоит в квартире. Установлен МосЭнергоСбытом.
Решил что проще подключиться к этому (другой они все равно не подключат).
Если бы был выбор, поставил бы Меркурий )))))))))))
Вот хорошее решение для Меркурия http://incotex-counter.blogspot.com/2011/12/irda.html