Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Скрипты
    5. ioBroker скрипты
    6. Скрипт энергомонитор 3 фазы

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Скрипт энергомонитор 3 фазы

    This topic has been deleted. Only users with topic management privileges can see it.
    • V M
      V M last edited by

      скрипт для подсчета использованной энергии и стоимости, отправка в телеграмм в конце дня.
      собрал с миру по нитке )..
      все работает вроде неплохо, пользуйтесь во благо...


      //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);

      }
      });

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      601
      Online

      31.7k
      Users

      79.6k
      Topics

      1.3m
      Posts

      energy pzem script
      1
      1
      193
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo