- load params from config.json

This commit is contained in:
jens
2020-12-16 18:42:05 +01:00
parent 6dd0920010
commit 71cd87085f
4 changed files with 127 additions and 89 deletions
+59 -68
View File
@@ -1,6 +1,6 @@
import asyncio
from time import sleep
import abc
import json
from ws.server.ws_server_multi_user import WsServerMultiUser
from components import ATemperatureSensor, AHeater, AStirrer
from components.sensor import TempSensorFactory
@@ -231,81 +231,72 @@ async def asleep(time):
await asyncio.sleep(time)
if __name__ == '__main__':
if 0:
taskmgr = PeriodicUpdaterThreaded()
taskmgr.start("localhost", 8765)
bg_thread = Thread(target=taskmgr.loop.run_forever)
bg_thread.setDaemon(True)
bg_thread.start()
else:
dispatcher = MessageDispatcher()
server = WsServerMultiUser(listener=dispatcher)
taskmgr = TaskManager()
config = json.load(open("config.json"))
dispatcher = MessageDispatcher()
server = WsServerMultiUser(listener=dispatcher)
taskmgr = TaskManager()
# Sensor
sensor = TempSensorFactory.create("sim")
taskmgr.add(TempSensorTask(sensor, DT_CTRL, dispatcher.msgio_get("Sensor")))
DT_CTRL = 1.0/config['Controller']['sim_warp_factor']
# Plant
pot_params = {
"dt" : DT_PARAMS,
"theta" : 20,
"C" : 4190,
"M" : 20,
"L" : 0.05,
"Td" : 12,
"kn" : 0.2
}
# Sensor
sensor = TempSensorFactory.create(config['Controller']['sensor_name'])
taskmgr.add(TempSensorTask(sensor, DT_CTRL, dispatcher.msgio_get("Sensor")))
# Plant
pot_params = {
"theta" : 20,
"C" : 4190,
"M" : 20,
"L" : 0.05,
"Td" : 12,
"kn" : 0.2
}
pot_params = config['Plant']
if "sim" in config['Controller']['plant_name']:
pot = Pot(pot_params, 20)
pot.set_on_changed("temp", ChangedFloat(sensor.set_fake_temp, prec=3).set)
taskmgr.add(PotTask(pot, DT_CTRL, dispatcher.msgio_get("Pot")))
# Heater
heater = HeaterFactory.create("sim")
heater.set_on_changed("power_eff", ChangedFloat(pot.set_power, prec=0).set)
heater_task = HeaterTask(heater, DT_CTRL, dispatcher.msgio_get("Heater"))
taskmgr.add(heater_task)
# Heater
heater = HeaterFactory.create(config['Controller']['heater_name'])
heater.set_on_changed("power_eff", ChangedFloat(pot.set_power, prec=0).set)
heater_task = HeaterTask(heater, DT_CTRL, dispatcher.msgio_get("Heater"))
taskmgr.add(heater_task)
# Temperature Controller
tc_params = {
"Hold": {
"dt": DT_PARAMS,
"kp": 1.0,
"ki": 0.0,
"kd": 0.0,
"kt": 0.0
},
"Heat": {
"dt": DT_PARAMS,
"kp": 0.1,
"ki": 0.01,
"kd": 0.0,
"kt": 1.0
}
# Temperature Controller
tc_params = {
"dt": 1.0,
"Kalman": {
"dt" : 1.0,
"var_P" : 1.0,
"var_Q" : 0.0001,
"var_R" : 1.0
},
"Hold": {
"kp": 1.0,
"ki": 0.0,
"kd": 0.0,
"kt": 0.0
},
"Heat": {
"kp": 0.1,
"ki": 0.01,
"kd": 0.0,
"kt": 1.0
}
}
# Kalman Filter
kalman_params = {
"dt" : DT_PARAMS,
"var_P" : 1,
"var_Q" : 0.0001,
"var_R" : 1
}
tc = TempController(tc_params, kalman_params)
tc.set_on_changed("y", heater_task.actor)
tc_task = TcTask(tc, DT_CTRL, dispatcher.msgio_get("TempCtrl"))
taskmgr.add(tc_task)
sensor.set_on_changed("temp", ChangedFloat(tc.set_theta_ist, prec=2).set)
# Message dispatcher
h_dispatcher = taskmgr.start()
h_server = server.listen("0.0.0.0", 8765)
asyncio.gather(h_dispatcher, h_server)
server.run_forever()
while True:
print("Hallo")
sleep(1)
tc_params = config['TempCtrl']
tc = TempController(tc_params)
tc.set_on_changed("y", heater_task.actor)
tc_task = TcTask(tc, DT_CTRL, dispatcher.msgio_get("TempCtrl"))
taskmgr.add(tc_task)
sensor.set_on_changed("temp", ChangedFloat(tc.set_theta_ist, prec=2).set)
# Message dispatcher
h_dispatcher = taskmgr.start()
h_server = server.listen("0.0.0.0", 8765)
asyncio.gather(h_dispatcher, h_server)
server.run_forever()