привязка к свойству по ср. с методом. иногда полезно
Вот приходит от москита сложный топик - от pzem или розетки с энергопотреблением типа:
из консоли tasmota
13:38:23.078 MQT: tele/refoss2/SENSOR = {"Time":"2023-10-29T13:38:23","ANALOG":{"Temperature":24.9},"ENERGY":{"TotalStartTime":"2023-10-28T17:34:20","Total":1.736,"Yesterday":1.296,"Today":0.441,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":0.00,"Voltage":197,"Current":0.000},"TempUnit":"C"}
модуль предлагает на выбор 2 варианта работы с таким топиком
синее - модуль сам рекурсивно разбирает джасон и позволяет конечные сущность привязать к элементам МДМ
зеленое - привязываем полный топик к методу существующего объекта и там уже распихиваем внутри мдм по нужным сущностям
вот код метода объекта (в классовом - пусто)
//debmes($params);
if(isset($params['VALUE'])){
$sensors = json_decode( $params['VALUE'], true);// в массив
//debmes($sensors);
//debmes($sensors['ENERGY']['Current'].' A');
//debmes($sensors['ENERGY']['Power'].' W');
$this->setProperty('power', (float)$sensors['ENERGY']['Power']);//в свойство текущего объекта
//debmes($sensors['ENERGY']['Today'].' kWh');
$this->setProperty('energyToday', (float)$sensors['ENERGY']['Today']);//в свойство текущего объекта
sg('boiler2_power.value', (float)$sensors['ENERGY']['Power']);//в свойство любого другого объекта
sg('temperature25.value', (float)$sensors['ANALOG']['Temperature']);//в свойство любого другого объекта
}
Привязка к методу хранится только в одном месте - таблице москита, в отличие от привязки свойства - там уже метится в нескольких, что может доставлять неудобства при аварии.
Домодедово, Россия
На форуме: xor