Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //v1.0.0 23.12.2022г
- //Скрипт подсчета электроэнергии 3 фазы
- //Подсчет стоимости потребленной энергии
- //отправка данных в телеграм в конце дня
- //Тариф 3.83
- createState('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);
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement