47 lines
1.3 KiB
Python

# main.py -- put your code here!
from mqtt_as import MQTTClient
from mqtt_as import config as mqttConfig
import config
import uasyncio as asyncio
def sub_cb(topic, msg, retained):
print(f"Topic = {topic} Msg = {msg} Retained = {retained}")
async def main(client):
await client.connect()
n = 0
await asyncio.sleep(2) # Give broker time
while True:
print('publish', n)
# If WiFi is down the following will pause for the duration.
await client.publish('rpi/hb', '{} {}'.format(n, client.REPUB_COUNT), qos = 1)
n += 1
await asyncio.sleep(20) # Broker is slow
async def connected_cb(client):
await client.subscribe('rpi/in', 1)
loop = asyncio.get_event_loop()
mqttConfig['ssid'] = config.SSID
mqttConfig['wifi_pw'] = config.WPA_KEY
mqttConfig['subs_cb'] = sub_cb
mqttConfig['server'] = config.MQTT_SERVER
mqttConfig['port'] = 8883
mqttConfig['user'] = config.MQTT_LOGIN
mqttConfig['password'] = config.MQTT_PASSWORD
mqttConfig['connect_coro'] = connected_cb
# mqttConfig['client_id'] = ubinascii.hexlify(bytearray(os.urandom(16))).decode()
mqttConfig['ssl'] = False
# Set up client
MQTTClient.DEBUG = True # Optional
client = MQTTClient(mqttConfig)
try:
loop.run_until_complete(main(client))
finally:
client.close()