[Модуль] Энергомера (energomera)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Модуль Энергомера

Сообщение Ivan » Вт мар 07, 2017 1:01 pm

Выложил исправленную версию. На тест.
Первый символ пока пропатчил. По хорошему нужно разбираться

Также добавил:
- Документацию и логи
- Добавил тестовый набросок для Mercury230
- Добавил тестовый набросок для iek411152

Не помню чем закончились наброски у кого есть счётчики, попробуйте запустить тест
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Модуль Энергомера

Сообщение Ivan » Чт мар 09, 2017 10:07 am

Добавил исправления получения пустых данных
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль Энергомера

Сообщение lanket » Чт мар 09, 2017 10:57 am

Делиться опытом никто не хочет, буду брать прибор учёта с закрытыми глазами.
Спасибо единственному отозвавшемся serghei.

Ivan писал(а):...
Вопрос к Вам, если можно.
Можно ли передавать считанные данные с прибора учёта газа и электроэнергии через сеть MySensors.

Если да, то подскажите пожалуйста набор железок для реализации. Nrf, ардуинку и шлюз MySensors это понятно.

И пример скетча ноды MySensors , если есть таковой, для передачи данных снятых с прибора учёта.

Заранее спасибо.

Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Модуль Энергомера

Сообщение serghei » Чт мар 09, 2017 11:23 am

Если вопрос ко мне , то лучше спросить у Ивана. Самих счетчиков у нас не продают. Если выгорит один стащить во " временное пользование" ( через недельку ), то буду пробовать. Тут на форуме выкладывали скетч для ардуины с протоколом 485 . Пробовал скомпилить для ЕСП - вроде не ругается.
Так что увы - ничем помочь не могу. Только считать импульсы (( Внимательно перечитайте ветку , наверное Меркурии 230 работают.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
AlexK-71
Сообщения: 28
Зарегистрирован: Сб ноя 29, 2014 12:20 am
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Модуль Энергомера

Сообщение AlexK-71 » Чт мар 09, 2017 8:55 pm

Ivan писал(а):
AlexK-71 писал(а):Вот рабочий на Raspberry Pi iek61107.class.php
Спасибо за помощь.
Только у меня теперь читаются лишние символы

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

rET0PE(12366.61)(8120.67)(4245.76)(0.00)(0.00)(0.00)
rET0PE(12366.61)(8120.67)(4245.76)(0.00)(0.00)(0.00)
rFREQU(50.01)
bPOWEP(0.403358)
VOLTA(226.33)
 
Первый символ мусорный. Что с этим делать пока не понятно
Там не один, а три первых символа мусорных.
СпойлерПоказать
pi@raspberrypi:/var/www/modules/energomera $ php test.php
2017-03-09 21:26:30 Connecting COM
2017-03-09 21:26:30 Connected
2017-03-09 21:26:31 Send init #1
2017-03-09 21:26:31 Device is /EKT5CE301v11
:
2017-03-09 21:26:31 Send init #2
2017-03-09 21:26:31 model:
2017-03-09 21:26:32 Send init #3
2017-03-09 21:26:32 model: 0150300228373737373737290320024d4f44454c2833290d0a P0(777777) MODEL(3)

<br>
2017-03-09 21:26:32 Read POWEP() read: 030f02504f57455028302e32363739290d0a POWEP(0.2679)
Array (   [POWEP] => Array     (       [0] => 0.2679     ) )
<pre>POWEP() = Array
(
    [POWEP] => Array
        (
            [0] => 0.2679
        )

)
</pre><br>
2017-03-09 21:26:32 Read FREQU() read: 032c0246524551552835302e30290d0a ,FREQU(50.0)
Array (   [FREQU] => Array     (       [0] => 50.0     ) )
<pre>FREQU() = Array
(
    [FREQU] => Array
        (
            [0] => 50.0
        )

)
</pre><br>
2017-03-09 21:26:33 Read ET0PE() read: 03310245543050452831323834382e30323330343336290d0a455430504528393432382e37393837323332290d0a455430504528333431392e32323433323034290d0a455430504528302e30290d0a455430504528302e30290d0a455430504528302e30290d0a 1ET0PE(12848.0230436)
ET0PE(9428.7987232)
ET0PE(3419.2243204)
ET0PE(0.0)
ET0PE(0.0)
ET0PE(0.0)
Array (   [ET0PE] => Array     (       [0] => 12848.0230436       [1] => 9428.7987232       [2] => 3419.2243204       [3] => 0.0       [4] => 0.0       [5] => 0.0     ) )
<pre>ET0PE() = Array
(
    [ET0PE] => Array
        (
            [0] => 12848.0230436
            [1] => 9428.7987232
            [2] => 3419.2243204
            [3] => 0.0
            [4] => 0.0
            [5] => 0.0
        )

)
</pre><br>
2017-03-09 21:26:34 Disconnected
По этому я просто обрезал первых три символа.

PS Отдельно огромное спасибо за фильтр пустых данных. Еще бы добавить округление отдельных параметров. Ну не нужны милливольты и миллиамперы.
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Модуль Энергомера

Сообщение Jager » Чт мар 09, 2017 10:32 pm

Хотел протестировать обновление в свете анонса поддержки меркурий-230.
Обновил модуль, вижу свои старые хвосты от экспериментов.
Удаляю штатно, ничего не удаляется.
Переустановил модуль с удалением, все по прежнему.
Перед установкой удалил папку energomera в modules, опять тоже самое.
Где еще подчистить следы?
В текущей ситуации указываю нужный сом порт, а именно СОМ3, нет никакой реакции.
Родная программа работает по прежнему без проблем.
AlexK-71
Сообщения: 28
Зарегистрирован: Сб ноя 29, 2014 12:20 am
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Модуль Энергомера

Сообщение AlexK-71 » Чт мар 09, 2017 10:45 pm

Иван, установил обновление и перестали забираться другие значения из массива кроме 0.

Спасибо.
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Модуль Энергомера

Сообщение Ivan » Чт мар 09, 2017 11:26 pm

MySensors ищите в соответствующем разделе. Также выкладывал все в комерческой ветке.

Насчет меркурия, сам модуль еще не поддердивает его. Есть только файлы набросков в исходниках.

Насчет индексов. У меня вроде пашит. Пойду перепроверю
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
AlexK-71
Сообщения: 28
Зарегистрирован: Сб ноя 29, 2014 12:20 am
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Модуль Энергомера

Сообщение AlexK-71 » Пт мар 10, 2017 1:53 pm

Разобрался с массивами.

Почему то у меня без настройки stty -icrnl -F $device меняет /r на /n и в итоге получаю разделитель /n/n и массив строкой $arr = explode("\r\n", $data); естественно не разбирается.

Как то эти 0D 0A преследуют :lol: . То плодятся, то меняются... :lol:

PS пока вернулся к $data = substr($data, 3, strlen($data)-3);, т.к. при

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

    $data = substr($data, 1, strlen($data)-3);
    //??? Patch first char    
    if ((ord($data[0]) < 0x41) || (ord($data[0]) > 0x5A)) {        
        $data = substr($data, 2, strlen($data));
    }
у меня периодически проскакивает мусор.
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Модуль Энергомера

Сообщение Ivan » Сб мар 11, 2017 10:02 am

AlexK-71 писал(а):Разобрался с массивами.

Почему то у меня без настройки stty -icrnl -F $device меняет /r на /n и в итоге получаю разделитель /n/n и массив строкой $arr = explode("\r\n", $data); естественно не разбирается.

Как то эти 0D 0A преследуют :lol: . То плодятся, то меняются... :lol:

PS пока вернулся к $data = substr($data, 3, strlen($data)-3);, т.к. при

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

    $data = substr($data, 1, strlen($data)-3);
    //??? Patch first char    
    if ((ord($data[0]) < 0x41) || (ord($data[0]) > 0x5A)) {        
        $data = substr($data, 2, strlen($data));
    } 
у меня периодически проскакивает мусор.
Странно это всё. Давайте приведём к одному виду
У меня сейчас в модуле стоит:

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

 public function confNotRNMode(){
...
"stty -onlcr -isig -echo -F " . $this->_device
...
} 
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Ответить