11import glob
22import sqlite3
33import time
4- import os
5- from datetime import datetime
6-
7- import jsonpickle
8-
9- from configuration import OmnipyConfiguration
104from podcomm .pdm import Pdm , PdmLock
115from podcomm .pod import Pod
126from podcomm .pr_rileylink import RileyLink
@@ -29,11 +23,7 @@ def __init__(self):
2923 self .logger .info ("mq operator is starting" )
3024
3125 with open ("settings.json" , "r" ) as stream :
32- lines = stream .read ()
33- txt = ""
34- for line in lines :
35- txt = txt + line
36- self .configuration = jsonpickle .decode (txt )
26+ self .settings = json .load (stream )
3727 self .client = mqtt .Client (client_id = self .configuration .mqtt_clientid , protocol = mqtt .MQTTv311 )
3828 self .client .on_connect = self .on_connect
3929 self .client .on_disconnect = self .on_disconnect
@@ -77,8 +67,8 @@ def run(self):
7767 connected = False
7868 while not connected :
7969 try :
80- self .client .connect (self .configuration . mqtt_host ,
81- self .configuration . mqtt_port , clean_start = mqtt .MQTT_CLEAN_START_FIRST_ONLY )
70+ self .client .connect (self .settings [ " mqtt_host" ] ,
71+ self .settings [ " mqtt_port" ] , clean_start = mqtt .MQTT_CLEAN_START_FIRST_ONLY )
8272 connected = True
8373 except :
8474 time .sleep (30 )
@@ -87,14 +77,14 @@ def run(self):
8777
8878 def on_connect (self , client : mqtt .Client , userdata , flags , rc ):
8979 self .send_msg ("Well hello there" )
90- client .subscribe (self .configuration . mqtt_command_topic , qos = 2 )
91- client .subscribe (self .configuration . mqtt_sync_request_topic , qos = 1 )
80+ client .subscribe (self .settings [ " mqtt_command_topic" ] , qos = 2 )
81+ client .subscribe (self .settings [ " mqtt_sync_request_topic" ] , qos = 1 )
9282 self .ntp_update ()
9383
9484 def on_message (self , client , userdata , message : mqtt .MQTTMessage ):
9585 try :
9686 cmd_str = message .payload .decode ()
97- if message .topic == self .configuration . mqtt_command_topic :
87+ if message .topic == self .settings [ " mqtt_command_topic" ] :
9888 cmd_split = cmd_str .split (' ' )
9989 if cmd_split [0 ] == "temp" :
10090 temp_rate = self .fix_decimal (cmd_split [1 ])
@@ -115,7 +105,7 @@ def on_message(self, client, userdata, message: mqtt.MQTTMessage):
115105 os .system ('sudo shutdown -r now' )
116106 else :
117107 self .send_msg ("lol what?" )
118- elif message .topic == self .configuration . mqtt_sync_request_topic :
108+ elif message .topic == self .settings [ " mqtt_sync_request_topic" ] :
119109 if cmd_str == "latest" :
120110 self .send_result (self .i_pod )
121111 else :
@@ -291,12 +281,13 @@ def send_result(self, pod):
291281 msg = pod .GetString ()
292282 if pod .pod_id is None :
293283 return
294- self .client .publish (self .configuration . mqtt_json_topic ,
284+ self .client .publish (self .settings [ " mqtt_json_topic" ] ,
295285 payload = msg , qos = 1 )
286+ self .client .publish (self .settings ["mqtt_status_topic" ], payload = msg , qos = 1 , retain = True )
296287
297288 def send_msg (self , msg ):
298289 self .logger .info (msg )
299- self .client .publish (self .configuration . mqtt_response_topic ,
290+ self .client .publish (self .settings [ " mqtt_response_topic" ] ,
300291 payload = msg , qos = 1 )
301292
302293 def ntp_update (self ):
@@ -334,7 +325,7 @@ def fill_request(self, pod_id, req_ids):
334325 js ["last_command_db_id" ] = row [0 ]
335326 js ["last_command_db_ts" ] = row [1 ]
336327
337- self .client .publish (self .configuration . mqtt_json_topic ,
328+ self .client .publish (self .settings [ " mqtt_json_topic" ] ,
338329 payload = json .dumps (js ), qos = 0 )
339330 cursor .close ()
340331
0 commit comments