Advertisement
Zavhoz2015

pzem script iobroker

Dec 23rd, 2022
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.92 KB | Source Code | 0 0
  1. //v1.0.0 23.12.2022г
  2. //Скрипт подсчета электроэнергии 3 фазы
  3. //Подсчет стоимости потребленной энергии
  4. //отправка данных в телеграм в конце дня
  5. //Тариф 3.83
  6.  
  7. createState('javascript.0.Energy.tarif', 3.83, {name: 'Стоимость Квт', type: 'mixed', read: true, write: true, unit:'руб'});
  8. const T = getState('javascript.0.Energy.tarif').val;
  9.  
  10. //счетчик общей энергии ф1+ф2+ф3 kWh
  11. createState('javascript.0.Energy.faseAll', 0, {name: 'Счетчик общ. энергии', type: 'mixed', read: true, write: true, unit:'kWh'});
  12. let pwr1,pwr2,pwr3,pwr
  13. on({id: "mqtt.0.pzem_1.mb0203", change: 'ne'}, function (data) {
  14. pwr1 = getState('javascript.0.F1energy_count.Day').val / 1000;
  15. pwr2 = getState('javascript.0.F2energy_count.Day').val / 1000;
  16. pwr3 = getState('javascript.0.F3energy_count.Day').val / 1000;
  17. pwr = Math.round(pwr1+pwr2+pwr3) ; // суммируем ф1+ф2+ф3
  18. setState('javascript.0.Energy.faseAll', pwr);
  19. log('pwr='+ pwr+' kWh');
  20. });
  21.  
  22. //Стоимость общ.энергии за день руб
  23. createState('javascript.0.Energy.costAll', 0, {name: 'Стоимость общ.энергии за день', type: 'mixed', read: true, write: true, unit:'руб'});
  24. on({id: 'javascript.0.Energy.faseAll', change: 'ne'}, function (data) {
  25. var costall = getState('javascript.0.Energy.faseAll').val;//constall=общ.энергия ф1+ф2+ф3
  26. var cost = (costall*T).toFixed(2);//округляем до 2 разряда
  27. log('Стоимость за день = '+ cost + ' руб');
  28. setState('javascript.0.Energy.costAll', cost );
  29. });
  30. //Каждый день в 00:00:00 обнуляем дневные показания
  31.  
  32. schedule('0 0 0 * * *', reset_count);
  33. function reset_count() {
  34. sendTo("telegram.1", "send", {text: 'Расход эл.сегодня '+getState('javascript.0.Energy.faseAll').val+' кВтч'});
  35. sendTo("telegram.1", "send", {text: 'Стоимость '+getState('javascript.0.Energy.costAll').val+' руб'});
  36. setState('javascript.0.Energy.costAll',0);
  37. setState('javascript.0.Energy.faseAll',0);
  38. setState('javascript.0.F1energy_count.Day', 0, true);
  39. setState('javascript.0.F1energy_count.DayCost', 0, true);
  40. setState('javascript.0.F2energy_count.Day', 0, true);
  41. setState('javascript.0.F2energy_count.DayCost', 0, true);
  42. setState('javascript.0.F3energy_count.Day', 0, true);
  43. setState('javascript.0.F3energy_count.DayCost', 0, true);
  44. log('обнулились данные энергомонитора')
  45. }
  46. ;
  47.  
  48. //Энергомонитор Фаза-1
  49.  
  50. var difference = 0; //Разница между старым и новым значением
  51. createState('F1energy_count.Day', 0, {name: 'Счетчик дневной энергии', type: 'number', read: true, write: true, unit:'kWh'});
  52. createState('F1energy_count.DayCost', 0, {name: 'Дневная стоимость энергии', type: 'number', read: true, write: true, unit:'руб'});
  53. createState('F1energy_count.costT1', T, {name: 'Стоимость T за кВтч', read: true, write: true, unit: 'руб/kWh'});
  54.  
  55. ! on({id: 'mqtt.0.pzem_1.mb0104'/*мощность общ1*/, change: "gt"}, function (obj) {
  56. log('obj.newState.val = '+ obj.newState.val);
  57. log('obj.oldState.val = '+ obj.oldState.val);
  58. if (obj.newState.val > obj.oldState.val && obj.oldState.val > 0) {
  59. difference = ((parseFloat(obj.newState.val) - parseFloat(obj.oldState.val))/1000);
  60. log('разница = '+ difference);
  61. var mD = Math.round ((parseFloat (getState("javascript.0.F1energy_count.Day").val) + difference)*1000)/1000;
  62. var mDC = Math.round ((parseFloat (getState("javascript.0.F1energy_count.DayCost").val) + (difference * T))*1000)/1000;
  63. log('Ф1 pwr = '+ mD + ' Kwt');
  64. log('Ф1 = '+ mDC +' руб');
  65. setState('javascript.0.F1energy_count.Day', mD, true);
  66. setState('javascript.0.F1energy_count.DayCost', mDC, true);
  67.  
  68. }
  69. });
  70.  
  71. //Энергомонитор Фаза-2
  72.  
  73. var difference = 0; //Разница между старым и новым значением
  74. createState('F2energy_count.Day', 0, {name: 'Счетчик дневной энергии', type: 'number', read: true, write: true, unit:'kWh'});
  75. createState('F2energy_count.DayCost', 0, {name: 'Дневная стоимость энергии', type: 'number', read: true, write: true, unit:'руб'});
  76. createState('F2energy_count.costT2', T, {name: 'Стоимость T за кВтч', read: true, write: true, unit: 'руб/kWh'});
  77.  
  78. ! on({id: 'mqtt.0.pzem_1.mb0204'/*мощность общ2*/, change: "gt"}, function (obj) {
  79. log('obj.newState.val = '+ obj.newState.val);
  80. log('obj.oldState.val = '+ obj.oldState.val);
  81. if (obj.newState.val > obj.oldState.val && obj.oldState.val > 0) {
  82. difference = ((parseFloat(obj.newState.val) - parseFloat(obj.oldState.val))/1000);
  83. log('разница = '+ difference);
  84. var mD = Math.round ((parseFloat (getState("javascript.0.F2energy_count.Day").val) + difference)*1000)/1000;
  85. var mDC = Math.round ((parseFloat (getState("javascript.0.F2energy_count.DayCost").val) + (difference * T))*1000)/1000;
  86. log('Ф2 pwr = '+ mD + ' Kwt');
  87. log('Ф2 = '+ mDC +' руб');
  88. setState('javascript.0.F2energy_count.Day', mD, true);
  89. setState('javascript.0.F2energy_count.DayCost', mDC, true);
  90.  
  91. }
  92. });
  93.  
  94. //Энергомонитор Фаза-3
  95.  
  96. var difference = 0; //Разница между старым и новым значением
  97. createState('F3energy_count.Day', 0, {name: 'Счетчик дневной энергии', type: 'number', read: true, write: true, unit:'kWh'});
  98. createState('F3energy_count.DayCost', 0, {name: 'Дневная стоимость энергии', type: 'number', read: true, write: true, unit:'руб'});
  99. createState('F3energy_count.costT3', T, {name: 'Стоимость T за кВтч', read: true, write: true, unit: 'руб/kWh'});
  100.  
  101. ! on({id: 'mqtt.0.pzem_1.mb0304'/*мощность общ3*/, change: "gt"}, function (obj) {
  102. log('obj.newState.val = '+ obj.newState.val);
  103. log('obj.oldState.val = '+ obj.oldState.val);
  104. if (obj.newState.val > obj.oldState.val && obj.oldState.val > 0) {
  105. difference = ((parseFloat(obj.newState.val) - parseFloat(obj.oldState.val))/1000);
  106. log('разница = '+ difference);
  107. var mD = Math.round ((parseFloat (getState("javascript.0.F3energy_count.Day").val) + difference)*1000)/1000;
  108. var mDC = Math.round ((parseFloat (getState("javascript.0.F3energy_count.DayCost").val) + (difference * T))*1000)/1000;
  109. log('Ф3 pwr = '+ mD + ' Kwt');
  110. log('Ф3 = '+ mDC +' руб');
  111. setState('javascript.0.F3energy_count.Day', mD, true);
  112. setState('javascript.0.F3energy_count.DayCost', mDC, true);
  113.  
  114. }
  115. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement