from machine import Pin, I2C import network import utime import time from umqtt.simple import MQTTClient wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.config(pm = 0xa11140) # Diable powersave mode wlan.connect("XXX", "XXX") max_wait = 10 while max_wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break max_wait -= 1 print('waiting for connection...') utime.sleep(1) #Handle connection error if wlan.status() != 3: raise RuntimeError('wifi connection failed') else: print('connected') status = wlan.ifconfig() print('ip = ' + status[0]) def connectMQTT(): client = MQTTClient(client_id=b"kudzai_raspberrypi_picow", server=b"192.168.1.34", port=1883, ) client.connect() return client def reconnect(): print('Failed to connect to the MQTT Broker. Reconnecting...') time.sleep(5) machine.reset() client = connectMQTT() MQTT_BUTTON1_TOPIC = "pico/button1" button1 = Pin(16, Pin.IN, Pin.PULL_UP) button1_last_time = time.ticks_ms() def mqtt_send_with_reset(topic, msg): try: client.publish(topic, msg) except: import sys print(sys.print_exception(e)) machine.reset() def publish_mqtt_button1_msg(t): global button1_last_time if time.ticks_diff(time.ticks_ms(), button1_last_time) > 200: mqtt_send_with_reset(MQTT_BUTTON1_TOPIC, "pressed") button1_last_time = time.ticks_ms() button1.irq(publish_mqtt_button1_msg, Pin.IRQ_RISING ) while True: mqtt_send_with_reset("pico/test", "hello") print("publish") utime.sleep(30)