value and updateValue (read from bus) functions in Coils class
This commit is contained in:
parent
4826d62477
commit
616a25ac4e
|
@ -1,4 +1,5 @@
|
||||||
import minimalmodbus
|
import minimalmodbus
|
||||||
|
import logging
|
||||||
|
|
||||||
class EnerventCoil():
|
class EnerventCoil():
|
||||||
def __init__(self, symbol="reserved", description="reserved"):
|
def __init__(self, symbol="reserved", description="reserved"):
|
||||||
|
@ -7,6 +8,12 @@ class EnerventCoil():
|
||||||
self.description = description
|
self.description = description
|
||||||
self.reserved = symbol == "reserved" and description == "reserved"
|
self.reserved = symbol == "reserved" and description == "reserved"
|
||||||
class Coils():
|
class Coils():
|
||||||
|
coillogger = logging.getLogger(__name__)
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.DEBUG,
|
||||||
|
format='%(asctime)s %(message)s',
|
||||||
|
datefmt='%y/%m/%d %H:%M:%S'
|
||||||
|
)
|
||||||
coils = [
|
coils = [
|
||||||
EnerventCoil("COIL_STOP", "Stop"),
|
EnerventCoil("COIL_STOP", "Stop"),
|
||||||
EnerventCoil("COIL_AWAY", "Away mode"),
|
EnerventCoil("COIL_AWAY", "Away mode"),
|
||||||
|
@ -82,16 +89,26 @@ class Coils():
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, serialdevice='/dev/ttyS0', modbusaddr=1, debug=False):
|
def __init__(self, serialdevice='/dev/ttyS0', modbusaddr=1, debug=False):
|
||||||
self.update_coils(serialdevice, modbusaddr, debug)
|
if debug: self.coillogger.debug("Updating values from device")
|
||||||
|
|
||||||
def update_coils(self, serialdevice='/dev/ttyS0', modbusaddr=1, debug=False):
|
|
||||||
self.pingvin = minimalmodbus.Instrument(serialdevice, modbusaddr)
|
self.pingvin = minimalmodbus.Instrument(serialdevice, modbusaddr)
|
||||||
|
self.update(debug)
|
||||||
|
|
||||||
|
def update(self, debug=False):
|
||||||
self.pingvin.serial.timeout = 0.2
|
self.pingvin.serial.timeout = 0.2
|
||||||
self.pingvin.debug = debug
|
self.pingvin.debug = debug
|
||||||
curvalues = self.pingvin.read_bits(0,71,1)
|
curvalues = self.pingvin.read_bits(0,71,1)
|
||||||
for i, coil in enumerate(self.coils):
|
for i, coil in enumerate(self.coils):
|
||||||
self.coils[i].value = curvalues[i]
|
self.coils[i].value = curvalues[i]
|
||||||
|
|
||||||
|
def value(self, address, debug=False):
|
||||||
|
self.pingvin.debug = debug
|
||||||
|
if debug: self.coillogger.debug("Reading coil value from device")
|
||||||
|
return self.pingvin.read_bit(address, 1)
|
||||||
|
|
||||||
|
def updateValue(self, address, debug=False):
|
||||||
|
if debug: self.coillogger.debug("Reading coil value from cache")
|
||||||
|
return self.coils[address].value
|
||||||
|
|
||||||
class PingvinKL():
|
class PingvinKL():
|
||||||
def __init__(self, serialdevice='/dev/ttyS0', modbusaddr=1, debug=False):
|
def __init__(self, serialdevice='/dev/ttyS0', modbusaddr=1, debug=False):
|
||||||
self.coils = Coils(serialdevice, modbusaddr, debug)
|
self.coils = Coils(serialdevice, modbusaddr, debug)
|
|
@ -15,3 +15,4 @@ logging.basicConfig(
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
log.info(f"Starting enervent-logger {VERSION}")
|
log.info(f"Starting enervent-logger {VERSION}")
|
||||||
pingvin = PingvinKL('/dev/ttyS0',1,debug=True)
|
pingvin = PingvinKL('/dev/ttyS0',1,debug=True)
|
||||||
|
print(pingvin.coils.readValue(1, debug=True))
|
||||||
|
|
Loading…
Reference in New Issue