Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

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

Модератор: immortal

IVE
Сообщения: 20
Зарегистрирован: Пн мар 26, 2012 10:04 am
Благодарил (а): 0
Поблагодарили: 0

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение IVE » Ср мар 28, 2012 5:43 pm

Вместо файла 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
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение sergejey » Ср мар 28, 2012 7:34 pm

отлично -- уже что-то рабочее :)

в принципе, самая сложная часть у вас готова -- теперь осталось только данные в систему внести.

через панель управления добавьте класс объектов 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 -- информация, сотрудничество, услуги
IVE
Сообщения: 20
Зарегистрирован: Пн мар 26, 2012 10:04 am
Благодарил (а): 0
Поблагодарили: 0

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение IVE » Ср мар 28, 2012 8:28 pm

Работает
IVE
Сообщения: 20
Зарегистрирован: Пн мар 26, 2012 10:04 am
Благодарил (а): 0
Поблагодарили: 0

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение IVE » Ср мар 28, 2012 11:04 pm

В Parent Class: оставить -no- или выставить usb ?
IVE
Сообщения: 20
Зарегистрирован: Пн мар 26, 2012 10:04 am
Благодарил (а): 0
Поблагодарили: 0

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение IVE » Ср мар 28, 2012 11:26 pm

По запросу выдает:
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

Сообщение sergejey » Чт мар 29, 2012 1:28 pm

IVE писал(а):В Parent Class: оставить -no- или выставить usb ?
можно оставить -no-
сейчас расскажу как повесить на автоматическое обновление

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение sergejey » Чт мар 29, 2012 1:34 pm

Заходите в раздел Скрипты и создайте скрипт с названием UpdateMicron

В код скрипта поставьте то что ниже (тут убрано немного лишнего с предыдущего варианта):

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

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);
Далее, в разделе Классы объектов кликните на метод объекта таймер onNewMinute и добавьте в код следующую строчку

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

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

Сообщение sergejey » Чт мар 29, 2012 1:47 pm

если всё заработает и настроите графики, то поделитесь скриншотами -- оформим статью на сайте, как пример использования системы. сам захотел такой счётчик себе поставить, только у нас в Минске что-то они не продаются. Поищу ещё какой-нибудь вариант снимать значения напряжения/тока с сети, чтобы строить график потребляемой мощности.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение Vit » Чт мар 29, 2012 2:17 pm

Отпишите пожалуйста какой счетчик
1-3 фазный?
сколько тарифов?
где приобретали в компании или на сайте?
где приобретали интерфейс для связи с компьютером?

заранее спасибо.
IVE
Сообщения: 20
Зарегистрирован: Пн мар 26, 2012 10:04 am
Благодарил (а): 0
Поблагодарили: 0

Re: Меркурий 221 и электросчетчик Микрон СЭБ-2А.07.212

Сообщение IVE » Чт мар 29, 2012 3:07 pm

Vit писал(а):Отпишите пожалуйста какой счетчик
1-3 фазный?
сколько тарифов?
где приобретали в компании или на сайте?
где приобретали интерфейс для связи с компьютером?

заранее спасибо.
http://www.nzif.ru/modules/myReviews/de ... php?lid=45
В том то и дело что не приобретал, а уже стоит в квартире. Установлен МосЭнергоСбытом.
Решил что проще подключиться к этому (другой они все равно не подключат).
Если бы был выбор, поставил бы Меркурий )))))))))))
Вот хорошее решение для Меркурия http://incotex-counter.blogspot.com/2011/12/irda.html
Ответить