minimalmodbus is an attribute of the PingvinKL class now, needs to be passed on to instances of Coil class, Flask routes for reading all coils
This commit is contained in:
parent
5a9b5a697f
commit
327c3ecd36
|
@ -9,6 +9,15 @@ class EnerventCoil():
|
|||
self.value = 0
|
||||
self.description = description
|
||||
self.reserved = symbol == "reserved" and description == "reserved"
|
||||
|
||||
def serialize(self):
|
||||
return {
|
||||
"value": self.value == 1,
|
||||
"symbol": self.symbol,
|
||||
"description": self.description,
|
||||
"reserved": self.reserved
|
||||
}
|
||||
|
||||
class Coils():
|
||||
"""Class for handling Modbus coils"""
|
||||
coillogger = logging.getLogger(__name__)
|
||||
|
@ -93,8 +102,8 @@ class Coils():
|
|||
EnerventCoil()
|
||||
]
|
||||
|
||||
def __init__(self, serialdevice='/dev/ttyS0', modbusaddr=1, debug=False):
|
||||
self.pingvin = minimalmodbus.Instrument(serialdevice, modbusaddr)
|
||||
def __init__(self, device, debug=False):
|
||||
self.pingvin = device
|
||||
if debug: self.coillogger.debug("Updating coil values from device")
|
||||
self.update(debug)
|
||||
|
||||
|
@ -127,18 +136,22 @@ class Coils():
|
|||
coilvals = coilvals + f"Coil {i}\t{coil.value} [{coil.symbol}] ({coil.description})\n"
|
||||
return coilvals
|
||||
|
||||
def serialize(self):
|
||||
def serialize(self, include_reserved):
|
||||
"""Returns coil values as parseable Python object"""
|
||||
coilvals = []
|
||||
for coil in self.coils:
|
||||
coilvals.append({"value": coil.value, "symbol": coil.symbol, "description": coil.description, "reserved": coil.reserved})
|
||||
for i, coil in enumerate(self.coils):
|
||||
if not coil.reserved or include_reserved:
|
||||
coil = coil.serialize()
|
||||
coil['address'] = i
|
||||
coilvals.append(coil)
|
||||
return coilvals
|
||||
|
||||
def get(self, live=False):
|
||||
def get(self, include_reserved=False, live=False):
|
||||
"""Return all coil values in JSON format"""
|
||||
return jsonify(self.serialize())
|
||||
return jsonify(self.serialize(include_reserved))
|
||||
|
||||
class PingvinKL():
|
||||
"""Class for communicating with an Enervent Pinvin Kotilämpö ventilation/heating unit"""
|
||||
def __init__(self, serialdevice='/dev/ttyS0', modbusaddr=1, debug=False):
|
||||
self.coils = Coils(serialdevice, modbusaddr, debug)
|
||||
self.pingvin = minimalmodbus.Instrument(serialdevice, modbusaddr)
|
||||
self.coils = Coils(self.pingvin, debug)
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
import logging
|
||||
from EnerventCoils import PingvinKL
|
||||
from flask import Flask
|
||||
from flask import Flask, request
|
||||
|
||||
VERSION = "0.0.1"
|
||||
DEBUG = False
|
||||
|
@ -18,9 +18,19 @@ pingvin = PingvinKL('/dev/ttyS0',1,debug=DEBUG)
|
|||
app = Flask(__name__)
|
||||
|
||||
@app.route('/api/v1/coils')
|
||||
def index():
|
||||
def get():
|
||||
return pingvin.coils.get()
|
||||
|
||||
@app.route('/api/v1/coils/all')
|
||||
def get_all():
|
||||
return pingvin.coils.get(include_reserved=True)
|
||||
|
||||
@app.route('/api/v1/coils/<int:address>', methods=["GET","PUT"])
|
||||
def get_coil():
|
||||
if request.method == 'GET':
|
||||
return
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
log.info(f"Starting enervent-logger {VERSION}")
|
||||
# print(pingvin.coils.value(1, debug=DEBUG))
|
||||
|
|
Loading…
Reference in New Issue