First steps for Flask API, print returns a string instead of printing, get() function to get values as JSON array, serialize() function to get values as Python list object
This commit is contained in:
parent
0b167c31d5
commit
5a9b5a697f
|
@ -1,5 +1,6 @@
|
||||||
import minimalmodbus
|
import minimalmodbus
|
||||||
import logging
|
import logging
|
||||||
|
from flask import jsonify
|
||||||
|
|
||||||
class EnerventCoil():
|
class EnerventCoil():
|
||||||
"""Single coil data structure"""
|
"""Single coil data structure"""
|
||||||
|
@ -115,14 +116,27 @@ class Coils():
|
||||||
return self.value(address, debug)
|
return self.value(address, debug)
|
||||||
|
|
||||||
def value(self, address, debug=False):
|
def value(self, address, debug=False):
|
||||||
"""Return local coil value"""
|
"""Get single local coil value"""
|
||||||
if debug: self.coillogger.debug("Reading coil value from cache")
|
if debug: self.coillogger.debug("Reading coil value from cache")
|
||||||
return self.coils[address].value
|
return self.coils[address].value
|
||||||
|
|
||||||
def print(self, debug=False):
|
def print(self, debug=False):
|
||||||
"""Human-readable print of all coil values"""
|
"""Human-readable print of all coil values"""
|
||||||
|
coilvals = ""
|
||||||
for i, coil in enumerate(self.coils):
|
for i, coil in enumerate(self.coils):
|
||||||
print(f"Coil {i}\t{coil.value} [{coil.symbol}] ({coil.description})")
|
coilvals = coilvals + f"Coil {i}\t{coil.value} [{coil.symbol}] ({coil.description})\n"
|
||||||
|
return coilvals
|
||||||
|
|
||||||
|
def serialize(self):
|
||||||
|
"""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})
|
||||||
|
return coilvals
|
||||||
|
|
||||||
|
def get(self, live=False):
|
||||||
|
"""Return all coil values in JSON format"""
|
||||||
|
return jsonify(self.serialize())
|
||||||
|
|
||||||
class PingvinKL():
|
class PingvinKL():
|
||||||
"""Class for communicating with an Enervent Pinvin Kotilämpö ventilation/heating unit"""
|
"""Class for communicating with an Enervent Pinvin Kotilämpö ventilation/heating unit"""
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
import logging
|
import logging
|
||||||
from EnerventCoils import PingvinKL
|
from EnerventCoils import PingvinKL
|
||||||
|
from flask import Flask
|
||||||
|
|
||||||
VERSION = "0.0.1"
|
VERSION = "0.0.1"
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
@ -13,9 +14,16 @@ logging.basicConfig(
|
||||||
datefmt='%y/%m/%d %H:%M:%S'
|
datefmt='%y/%m/%d %H:%M:%S'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pingvin = PingvinKL('/dev/ttyS0',1,debug=DEBUG)
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/api/v1/coils')
|
||||||
|
def index():
|
||||||
|
return pingvin.coils.get()
|
||||||
|
|
||||||
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=DEBUG)
|
# 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)
|
||||||
|
|
Loading…
Reference in New Issue