Skip to content

Скрипты

Помощь по использованию JavaScript, Blockly, TypeScript и Node-RED
141 Themen 1.4k Beiträge

NEWS

Unterkategorien


  • Вопросы и информация о скриптах для ioBroker
    140 1k
    140 Themen
    1k Beiträge
    V MV
    скрипт для подсчета использованной энергии и стоимости, отправка в телеграмм в конце дня. собрал с миру по нитке ).. все работает вроде неплохо, пользуйтесь во благо... Spoiler //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); } });
  • No decscription available
    1 85
    1 Themen
    85 Beiträge
    O
    Нужно ввести каким нибудь образом доп состояние и проверять его.

802

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge