def main(): print("Hello! this is aggry! I send wonderful data :)") client = Client(client_id="aggry") client.on_connect = on_connect client.on_message = on_message if debug: client.on_log = on_log else: print("Debug mode disabled by configuration.") # Swarm does not handle dependencies sleep(2) try: rc = client.connect("broker", 1883, 60) except: # just try again print("connect: trying again...") sleep(4) client.connect("broker", 1883, 60) # main loop client.loop_forever()
def loop(self, ip, port, clientId='', username='', password='', **kwargs): if MqttConnect.mqtt: MqttConnect.mqtt.loop_stop() mqtt = Client(clientId) mqtt.username_pw_set(username, password) mqtt.connect(ip, int(port)) mqtt.on_log = self.on_log mqtt.on_connect = self.on_connect mqtt.on_message = self.on_message mqtt.loop_start() MqttConnect.mqtt = mqtt
def run_mqtt_listener(): mqtt_broker_url = '167.86.108.163' MQTT_HOST = os.getenv('MQTT_HOST', mqtt_broker_url) client_name = 'mqtt-csw-importer' topic = 'update_csw' print("Sono partito") print("->167.86.108.163") print("->mqtt-csw-importer") def _on_connect(client, userdata, flags, rc): print("Connesso con successo al topic", topic) def _on_log(client, userdata, level, buf): # print("log", level, buf) pass def _on_message(client, userdata, message): message = str(message.payload.decode("utf-8")) payload = json.loads(message)['rndt_xml'] print('received event', payload) print( '----ENDED------------------------------------------------------') cmd = 'pycsw-admin.py -c load_records -f /etc/pycsw/pycsw.cfg -p /home/pycsw/datatemp' filename = "/home/pycsw/datatemp/temp1.xml" try: with open(filename, 'w') as file: file.write(payload) execute(cmd) # execute('rm -f ' + filename) except Exception as e: print('Exception', e) try: client = Client(client_id='{}_{}'.format(client_name, random.randint(1, 10000)), clean_session=True) print('Connecting to MQTT broker at ') client.connect(MQTT_HOST) except ConnectionRefusedError as e: print('Connection refused by MQTT broker at ') raise ConnectionRefusedError client.on_connect = _on_connect client.on_message = _on_message client.on_log = _on_log client.subscribe(topic) client.loop_forever() # client.loop_start() print('loop started')