include_reserved and live moved to query parameters, Coils class is now subscriptable, added a missing reserved coil, Coil class has an individual get() function
This commit is contained in:
parent
327c3ecd36
commit
609ae0b97f
|
@ -18,6 +18,9 @@ class EnerventCoil():
|
||||||
"reserved": self.reserved
|
"reserved": self.reserved
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get(self):
|
||||||
|
return jsonify(self.serialize())
|
||||||
|
|
||||||
class Coils():
|
class Coils():
|
||||||
"""Class for handling Modbus coils"""
|
"""Class for handling Modbus coils"""
|
||||||
coillogger = logging.getLogger(__name__)
|
coillogger = logging.getLogger(__name__)
|
||||||
|
@ -46,6 +49,7 @@ class Coils():
|
||||||
EnerventCoil(),
|
EnerventCoil(),
|
||||||
EnerventCoil(),
|
EnerventCoil(),
|
||||||
EnerventCoil(),
|
EnerventCoil(),
|
||||||
|
EnerventCoil(),
|
||||||
EnerventCoil("COIL_AWAY_H", "Heating enabled/disabled in AWAY mode"),
|
EnerventCoil("COIL_AWAY_H", "Heating enabled/disabled in AWAY mode"),
|
||||||
EnerventCoil("COIL_AWAY_C", "Cooling enabled/disabled in AWAY mode"),
|
EnerventCoil("COIL_AWAY_C", "Cooling enabled/disabled in AWAY mode"),
|
||||||
EnerventCoil(),
|
EnerventCoil(),
|
||||||
|
@ -107,6 +111,9 @@ class Coils():
|
||||||
if debug: self.coillogger.debug("Updating coil values from device")
|
if debug: self.coillogger.debug("Updating coil values from device")
|
||||||
self.update(debug)
|
self.update(debug)
|
||||||
|
|
||||||
|
def __getitem__(self, item):
|
||||||
|
return self.coils[item]
|
||||||
|
|
||||||
def update(self, debug=False):
|
def update(self, debug=False):
|
||||||
"""Fetch all coils values from device"""
|
"""Fetch all coils values from device"""
|
||||||
self.pingvin.serial.timeout = 0.2
|
self.pingvin.serial.timeout = 0.2
|
||||||
|
@ -115,7 +122,7 @@ class Coils():
|
||||||
curvalues = self.pingvin.read_bits(0,len(self.coils),1)
|
curvalues = self.pingvin.read_bits(0,len(self.coils),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]
|
||||||
self.coillogger.info("Coil values read succesfully")
|
if debug: self.coillogger.info("Coil values read succesfully")
|
||||||
|
|
||||||
def fetchValue(self, address, debug=False):
|
def fetchValue(self, address, debug=False):
|
||||||
"""Update single coil value from device and return it"""
|
"""Update single coil value from device and return it"""
|
||||||
|
@ -136,7 +143,7 @@ class Coils():
|
||||||
coilvals = coilvals + f"Coil {i}\t{coil.value} [{coil.symbol}] ({coil.description})\n"
|
coilvals = coilvals + f"Coil {i}\t{coil.value} [{coil.symbol}] ({coil.description})\n"
|
||||||
return coilvals
|
return coilvals
|
||||||
|
|
||||||
def serialize(self, include_reserved):
|
def serialize(self, include_reserved=False):
|
||||||
"""Returns coil values as parseable Python object"""
|
"""Returns coil values as parseable Python object"""
|
||||||
coilvals = []
|
coilvals = []
|
||||||
for i, coil in enumerate(self.coils):
|
for i, coil in enumerate(self.coils):
|
||||||
|
@ -146,8 +153,9 @@ class Coils():
|
||||||
coilvals.append(coil)
|
coilvals.append(coil)
|
||||||
return coilvals
|
return coilvals
|
||||||
|
|
||||||
def get(self, include_reserved=False, live=False):
|
def get(self, include_reserved=False, live=False, debug=False):
|
||||||
"""Return all coil values in JSON format"""
|
"""Return all coil values in JSON format"""
|
||||||
|
if live: self.update(debug)
|
||||||
return jsonify(self.serialize(include_reserved))
|
return jsonify(self.serialize(include_reserved))
|
||||||
|
|
||||||
class PingvinKL():
|
class PingvinKL():
|
||||||
|
|
|
@ -18,17 +18,16 @@ pingvin = PingvinKL('/dev/ttyS0',1,debug=DEBUG)
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
@app.route('/api/v1/coils')
|
@app.route('/api/v1/coils')
|
||||||
def get():
|
|
||||||
return pingvin.coils.get()
|
|
||||||
|
|
||||||
@app.route('/api/v1/coils/all')
|
|
||||||
def get_all():
|
def get_all():
|
||||||
return pingvin.coils.get(include_reserved=True)
|
return pingvin.coils.get(include_reserved=request.args.get('include_reserved'),live=request.args.get('live'),debug=DEBUG)
|
||||||
|
|
||||||
@app.route('/api/v1/coils/<int:address>', methods=["GET","PUT"])
|
@app.route('/api/v1/coils/<int:address>', methods=["GET","PUT"])
|
||||||
def get_coil():
|
def coil(address):
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return
|
coil = pingvin.coils[address].get(debug=DEBUG)
|
||||||
|
return coil
|
||||||
|
elif request.method == 'POST':
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -36,4 +35,4 @@ if __name__ == "__main__":
|
||||||
# print(pingvin.coils.value(1, debug=DEBUG))
|
# print(pingvin.coils.value(1, debug=DEBUG))
|
||||||
# print(pingvin.coils.fetchValue(1, debug=DEBUG))
|
# print(pingvin.coils.fetchValue(1, debug=DEBUG))
|
||||||
# print(pingvin.coils.print())
|
# print(pingvin.coils.print())
|
||||||
app.run(host='0.0.0.0',port=8888,debug=True)
|
app.run(host='0.0.0.0',port=8888,debug=DEBUG)
|
||||||
|
|
Loading…
Reference in New Issue