Compare commits

...

2 Commits

Author SHA1 Message Date
eaf1087a0e Added Average() on :
- Voltage
- Current
- Active Power
- Reactive Power
- Power factor
- Frequency
2021-05-10 22:02:17 +02:00
f6ceba6605 Classes work but.... 2021-05-10 21:19:56 +02:00

View File

@ -100,8 +100,19 @@ class Maximum:
class BasePlugin: class BasePlugin:
#enabled = False #enabled = False
def __init__(self): def __init__(self):
# Default hearbeat is 10 seconds, then 30 samples for the 5 minutes # Voltage for last 5 minutes
self.max_samples = 30 self.voltage=Average()
# Current for last 5 minutes
self.current=Average()
# Active power for last 5 minutes
self.active_power=Average()
# Reactive power for last 5 minutes
self.reactive_power=Average()
# Power factor for last 5 minutes
self.power_factor=Average()
# Frequency for last 5 minutes
self.frequency=Average()
return return
def onStart(self): def onStart(self):
@ -163,7 +174,7 @@ class BasePlugin:
def onStop(self): def onStop(self):
Domoticz.Log("onStop called") Domoticz.Debugging(0)
def onConnect(self, Connection, Status, Description): def onConnect(self, Connection, Status, Description):
Domoticz.Log("onConnect called") Domoticz.Log("onConnect called")
@ -199,6 +210,7 @@ class BasePlugin:
Devices[9].Update(1, "0") Devices[9].Update(1, "0")
Devices[10].Update(1, "0") Devices[10].Update(1, "0")
# TODO: catch errors
# 3 counters # 3 counters
total_e = "0" total_e = "0"
export_e = "0" export_e = "0"
@ -214,9 +226,6 @@ class BasePlugin:
decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big) decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big)
# Value # Value
value = decoder.decode_32bit_int() value = decoder.decode_32bit_int()
# Scale factor / 100
#value = str ( round (value / 100, 3))
#Domoticz.Debug("Value after conversion : "+str(value))
total_e = str(value) total_e = str(value)
# Export Energy # Export Energy
@ -226,9 +235,6 @@ class BasePlugin:
decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big) decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big)
# Value # Value
value = decoder.decode_32bit_int() value = decoder.decode_32bit_int()
# Scale factor / 100
#value = str ( round (value / 100, 3))
#Domoticz.Debug("Value after conversion : "+str(value))
export_e = str(value) export_e = str(value)
# Import Energy # Import Energy
@ -238,9 +244,6 @@ class BasePlugin:
decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big) decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big)
# Value # Value
value = decoder.decode_32bit_int() value = decoder.decode_32bit_int()
# Scale factor / 100
#value = str ( round (value / 100, 3))
#Domoticz.Debug("Value after conversion : "+str(value))
import_e = str(value) import_e = str(value)
# Voltage # Voltage
@ -251,9 +254,13 @@ class BasePlugin:
# Value # Value
value = decoder.decode_16bit_int() value = decoder.decode_16bit_int()
# Scale factor / 10 # Scale factor / 10
value = str ( round (value / 10, 3)) value = round (value / 10, 3)
#Domoticz.Debug("Value after conversion : "+str(value)) Domoticz.Debug("Value after conversion : "+str(value))
Devices[4].Update(1, value) Domoticz.Debug("-> Calculating average")
self.voltage.update(value)
value = self.voltage.get()
Domoticz.Debug(" = {}".format(value))
Devices[4].Update(1, str(value))
# Current # Current
data = client.read_holding_registers(0xD, 1) data = client.read_holding_registers(0xD, 1)
@ -263,9 +270,13 @@ class BasePlugin:
# Value # Value
value = decoder.decode_16bit_int() value = decoder.decode_16bit_int()
# Scale factor / 100 # Scale factor / 100
value = str ( round (value / 100, 3)) value = round (value / 100, 3)
#Domoticz.Debug("Value after conversion : "+str(value)) Domoticz.Debug("Value after conversion : "+str(value))
Devices[5].Update(1, value) Domoticz.Debug("-> Calculating average")
self.current.update(value)
value = self.current.get()
Domoticz.Debug(" = {}".format(value))
Devices[5].Update(1, str(value))
# Active Power # Active Power
data = client.read_holding_registers(0xE, 1) data = client.read_holding_registers(0xE, 1)
@ -274,14 +285,11 @@ class BasePlugin:
decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big) decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big)
# Value # Value
value = decoder.decode_16bit_int() value = decoder.decode_16bit_int()
# Scale factor / 100
#value = str ( round (value / 100, 3))
Domoticz.Debug("Value after conversion : "+str(value)) Domoticz.Debug("Value after conversion : "+str(value))
Domoticz.Debug("-> Calculating average") Domoticz.Debug("-> Calculating average")
m = Average() self.active_power.update(value)
m.update(value) value = self.active_power.get()
value = m.get() Domoticz.Debug(" = {}".format(value))
Domotice.Debug(" = {}".format(value))
Devices[6].Update(1, str(value)) Devices[6].Update(1, str(value))
if value > 0.0: if value > 0.0:
import_w = value import_w = value
@ -296,9 +304,11 @@ class BasePlugin:
decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big) decoder = BinaryPayloadDecoder.fromRegisters(data, byteorder=Endian.Big, wordorder=Endian.Big)
# Value # Value
value = decoder.decode_16bit_int() value = decoder.decode_16bit_int()
# Scale factor / 100 Domoticz.Debug("Value after conversion : "+str(value))
#value = str ( round (value / 100, 3)) Domoticz.Debug("-> Calculating average")
#Domoticz.Debug("Value after conversion : "+str(value)) self.reactive_power.update(value)
value = self.reactive_power.get()
Domoticz.Debug(" = {}".format(value))
Devices[7].Update(1, str(value)) Devices[7].Update(1, str(value))
# Power Factor # Power Factor
@ -309,9 +319,13 @@ class BasePlugin:
# Value # Value
value = decoder.decode_16bit_int() value = decoder.decode_16bit_int()
# Scale factor / 1000 # Scale factor / 1000
value = str ( round (value / 1000, 3)) value = round (value / 1000, 3)
#Domoticz.Debug("Value after conversion : "+str(value)) Domoticz.Debug("Value after conversion : "+str(value))
Devices[8].Update(1, value) Domoticz.Debug("-> Calculating average")
self.power_factor.update(value)
value = self.power_factor.get()
Domoticz.Debug(" = {}".format(value))
Devices[8].Update(1, str(value))
# Frequency # Frequency
data = client.read_holding_registers(0x11, 1) data = client.read_holding_registers(0x11, 1)
@ -321,9 +335,13 @@ class BasePlugin:
# Value # Value
value = decoder.decode_16bit_int() value = decoder.decode_16bit_int()
# Scale factor / 100 # Scale factor / 100
value = str ( round (value / 100, 3)) value = round (value / 100, 3)
#Domoticz.Debug("Value after conversion : "+str(value)) Domoticz.Debug("Value after conversion : "+str(value))
Devices[9].Update(1, value) Domoticz.Debug("-> Calculating average")
self.frequency.update(value)
value = self.frequency.get()
Domoticz.Debug(" = {}".format(value))
Devices[9].Update(1, str(value))
# Do insert data on counters # Do insert data on counters