Девайс MAIC D105 счетчик импульсов

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

Модератор: immortal

Ответить
Ignatnet
Сообщения: 30
Зарегистрирован: Вс апр 08, 2018 8:57 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Девайс MAIC D105 счетчик импульсов

Сообщение Ignatnet » Вт ноя 09, 2021 10:05 pm

Решил сделать снятие показаний счетчика воды и эл.энергии. Взял девайс smart MAIC D105, есть датчик температуры и т.д., прикрутил фототранзистор для электросчетчика. Показания можно снимать по MQTT или запросом get - http://192.168.4.1/?page=getdata&devid= ... pass=ixxxx Хотелось бы сделать без MQTT, делать запрос каждый час (вполне достаточно), распарсить json, получить данные, сделать корректировку по воде - 1 импульс 10 литров и Меркурий 1 кВт - 3200 импульсов привязать к Объекту, вывести на экран и отправлять 22 числа каждого месяца показания в РВК и ТНС (sendmail настроен, это работает). Пока не знаю как правильно сделать. Подскажите как правильно реализовать?
описание API

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

{"devid":"176XXXXXX","time":"1636481813","pout":"0","data":{"T1":{"name":"1. TempSensor - T1","unit":"°C","value":"22.4"},"ADC":{"name":"Analog Input","unit":"V","value":"0.00"},"Ch1":{"name":"Pulse Ch1","unit":"imp","value":"0"},"Ch2":{"name":"Pulse Ch2","unit":"imp","value":"0"},"TCh1":{"name":"Total Pulse Ch1","unit":"imp","value":"1954"},"TCh2":{"name":"Total Pulse Ch2","unit":"imp","value":"8662"}}}

Т1 - температура на кухне, данные использую для включения теплого пола.
TCh1 - счетчик эл.энергии
TCh2 - счетчик воды
Ignatnet
Сообщения: 30
Зарегистрирован: Вс апр 08, 2018 8:57 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Девайс MAIC D105 счетчик импульсов

Сообщение Ignatnet » Чт ноя 11, 2021 11:09 am

Получилось криво, но получилось (внес изменения)

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

$m105d = file_get_contents("http://192.168.0.10/?page=getdata&devid=18616067903&devpass=123670"); //получаем данные методом get
$arr = json_decode($m105d, true); //декодируем
$KTemp = $arr["data"]["T1"]["value"] +1; //Присваиваем значение переменной и корректируем температуру, т.к. отличается на 1 градус
$WtCnt = $arr["data"]["TCh2"]["value"] * 0.01; //счетчик воды 1 имп 10 литров, переводим в кубы
//$WtCnt = explode( '.', $WtCnt )[0]; // Здесь не стал приводить к целым кубам, оставил с литрами, уже в письме в РВК округлю
//$ElCnt = $arr["data"]["TCh1"]["value"] / 3200; // Не работает так
$ElCnt = $arr["data"]["TCh1"]["value"];
$El= $ElCnt / 3200;
$El = explode( '.', $El )[0]; //Приводим к целому числу, 86749 кВт
sg("WtCounter.value","$WtCnt"); // Присваиваем глобальным объектам данные
sg("ElCounter.value","$El");
sg("D105Temp.value","$KTemp");
//echo $El . '<br />' ;
//echo $KTemp . '<br />' ;
//echo $WtCount ;
Ответить