- Home
- Русский
- ioBroker
- Скрипты
- ioBroker скрипты
- Скрипт энергомонитор 3 фазы
Скрипт энергомонитор 3 фазы
-
скрипт для подсчета использованной энергии и стоимости, отправка в телеграмм в конце дня.
собрал с миру по нитке )..
все работает вроде неплохо, пользуйтесь во благо...
//v1.0.0 23.12.2022г
//Скрипт подсчета электроэнергии 3 фазы
//Подсчет стоимости потребленной энергии
//отправка данных в телеграм в конце дня
//Тариф 3.83createState('javascript.0.Energy.tarif', 3.83, {name: 'Стоимость Квт', type: 'mixed', read: true, write: true, unit:'руб'});
const T = getState('javascript.0.Energy.tarif').val;//счетчик общей энергии ф1+ф2+ф3 kWh
createState('javascript.0.Energy.faseAll', 0, {name: 'Счетчик общ. энергии', type: 'mixed', read: true, write: true, unit:'kWh'});
let pwr1,pwr2,pwr3,pwr
on({id: "mqtt.0.pzem_1.mb0203", change: 'ne'}, function (data) {
pwr1 = getState('javascript.0.F1energy_count.Day').val / 1000;
pwr2 = getState('javascript.0.F2energy_count.Day').val / 1000;
pwr3 = getState('javascript.0.F3energy_count.Day').val / 1000;
pwr = Math.round(pwr1+pwr2+pwr3) ; // суммируем ф1+ф2+ф3
setState('javascript.0.Energy.faseAll', pwr);
log('pwr='+ pwr+' kWh');
});//Стоимость общ.энергии за день руб
createState('javascript.0.Energy.costAll', 0, {name: 'Стоимость общ.энергии за день', type: 'mixed', read: true, write: true, unit:'руб'});
on({id: 'javascript.0.Energy.faseAll', change: 'ne'}, function (data) {
var costall = getState('javascript.0.Energy.faseAll').val;//constall=общ.энергия ф1+ф2+ф3
var cost = (costall*T).toFixed(2);//округляем до 2 разряда
log('Стоимость за день = '+ cost + ' руб');
setState('javascript.0.Energy.costAll', cost );
});
//Каждый день в 00:00:00 обнуляем дневные показанияschedule('0 0 0 * * *', reset_count);
function reset_count() {
sendTo("telegram.1", "send", {text: 'Расход эл.сегодня '+getState('javascript.0.Energy.faseAll').val+' кВтч'});
sendTo("telegram.1", "send", {text: 'Стоимость '+getState('javascript.0.Energy.costAll').val+' руб'});
setState('javascript.0.Energy.costAll',0);
setState('javascript.0.Energy.faseAll',0);
setState('javascript.0.F1energy_count.Day', 0, true);
setState('javascript.0.F1energy_count.DayCost', 0, true);
setState('javascript.0.F2energy_count.Day', 0, true);
setState('javascript.0.F2energy_count.DayCost', 0, true);
setState('javascript.0.F3energy_count.Day', 0, true);
setState('javascript.0.F3energy_count.DayCost', 0, true);
log('обнулились данные энергомонитора')
}
;//Энергомонитор Фаза-1
var difference = 0; //Разница между старым и новым значением
createState('F1energy_count.Day', 0, {name: 'Счетчик дневной энергии', type: 'number', read: true, write: true, unit:'kWh'});
createState('F1energy_count.DayCost', 0, {name: 'Дневная стоимость энергии', type: 'number', read: true, write: true, unit:'руб'});
createState('F1energy_count.costT1', T, {name: 'Стоимость T за кВтч', read: true, write: true, unit: 'руб/kWh'});! on({id: 'mqtt.0.pzem_1.mb0104'/мощность общ1/, change: "gt"}, function (obj) {
log('obj.newState.val = '+ obj.newState.val);
log('obj.oldState.val = '+ obj.oldState.val);
if (obj.newState.val > obj.oldState.val && obj.oldState.val > 0) {
difference = ((parseFloat(obj.newState.val) - parseFloat(obj.oldState.val))/1000);
log('разница = '+ difference);
var mD = Math.round ((parseFloat (getState("javascript.0.F1energy_count.Day").val) + difference)*1000)/1000;
var mDC = Math.round ((parseFloat (getState("javascript.0.F1energy_count.DayCost").val) + (difference * T))*1000)/1000;
log('Ф1 pwr = '+ mD + ' Kwt');
log('Ф1 = '+ mDC +' руб');
setState('javascript.0.F1energy_count.Day', mD, true);
setState('javascript.0.F1energy_count.DayCost', mDC, true);}
});//Энергомонитор Фаза-2
var difference = 0; //Разница между старым и новым значением
createState('F2energy_count.Day', 0, {name: 'Счетчик дневной энергии', type: 'number', read: true, write: true, unit:'kWh'});
createState('F2energy_count.DayCost', 0, {name: 'Дневная стоимость энергии', type: 'number', read: true, write: true, unit:'руб'});
createState('F2energy_count.costT2', T, {name: 'Стоимость T за кВтч', read: true, write: true, unit: 'руб/kWh'});! on({id: 'mqtt.0.pzem_1.mb0204'/мощность общ2/, change: "gt"}, function (obj) {
log('obj.newState.val = '+ obj.newState.val);
log('obj.oldState.val = '+ obj.oldState.val);
if (obj.newState.val > obj.oldState.val && obj.oldState.val > 0) {
difference = ((parseFloat(obj.newState.val) - parseFloat(obj.oldState.val))/1000);
log('разница = '+ difference);
var mD = Math.round ((parseFloat (getState("javascript.0.F2energy_count.Day").val) + difference)*1000)/1000;
var mDC = Math.round ((parseFloat (getState("javascript.0.F2energy_count.DayCost").val) + (difference * T))*1000)/1000;
log('Ф2 pwr = '+ mD + ' Kwt');
log('Ф2 = '+ mDC +' руб');
setState('javascript.0.F2energy_count.Day', mD, true);
setState('javascript.0.F2energy_count.DayCost', mDC, true);}
});//Энергомонитор Фаза-3
var difference = 0; //Разница между старым и новым значением
createState('F3energy_count.Day', 0, {name: 'Счетчик дневной энергии', type: 'number', read: true, write: true, unit:'kWh'});
createState('F3energy_count.DayCost', 0, {name: 'Дневная стоимость энергии', type: 'number', read: true, write: true, unit:'руб'});
createState('F3energy_count.costT3', T, {name: 'Стоимость T за кВтч', read: true, write: true, unit: 'руб/kWh'});! on({id: 'mqtt.0.pzem_1.mb0304'/мощность общ3/, change: "gt"}, function (obj) {
log('obj.newState.val = '+ obj.newState.val);
log('obj.oldState.val = '+ obj.oldState.val);
if (obj.newState.val > obj.oldState.val && obj.oldState.val > 0) {
difference = ((parseFloat(obj.newState.val) - parseFloat(obj.oldState.val))/1000);
log('разница = '+ difference);
var mD = Math.round ((parseFloat (getState("javascript.0.F3energy_count.Day").val) + difference)*1000)/1000;
var mDC = Math.round ((parseFloat (getState("javascript.0.F3energy_count.DayCost").val) + (difference * T))*1000)/1000;
log('Ф3 pwr = '+ mD + ' Kwt');
log('Ф3 = '+ mDC +' руб');
setState('javascript.0.F3energy_count.Day', mD, true);
setState('javascript.0.F3energy_count.DayCost', mDC, true);}
});