try: client.connect(config["mqtt"]["host"], config["mqtt"]["port"], 60) except socket.error as err: _LOG.fatal("Unable to connect to MQTT server: %s" % err) sys.exit(1) client.loop_start() try: while True: sleep(1) except KeyboardInterrupt: print("") msg_infos = [] for name, veh in vehicles.items(): veh.disconnect() msg_infos.append( client.publish('%s/%s/connected' % (topic_prefix, name), False, qos=2)) for msg_info in msg_infos: msg_info.wait_for_publish() finally: msg_info = client.publish( "%s/%s" % (topic_prefix, config["mqtt"]["status_topic"]), config["mqtt"]["status_payload_stopped"], qos=1, retain=True) # This should also quit the mqtt loop thread. msg_info.wait_for_publish() client.disconnect()
'Location from {addr} : Piece={piece} Location={location} Speed={speed} Clockwise={clockwise}' .format(**params)) car.setLocationChangeCallback(locationChangeCallback) def transitionChangeCallback(addr, params): params['addr'] = addr print('Transition from {addr} From={piecePrev} To={piece} Offset={offset}'. format(**params)) car.setTransitionCallback(transitionChangeCallback) car.changeSpeed(500, 800) while True: inpt = input( '[ to change lane to left, ] to change lane to right, enter to stop.\n' ) if inpt == '[': car.changeLaneLeft(500, 800) elif inpt == ']': car.changeLaneRight(500, 800) else: break car.changeSpeed(0, 800) car.disconnect()