aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaise Thompson <blaise@untzag.com>2021-03-09 11:23:15 -0600
committerBlaise Thompson <blaise@untzag.com>2021-03-09 11:23:15 -0600
commit3181af7dafebdd233306e81625d65f99ef24501c (patch)
tree19915c53fc7c604b16b00ab7c09739af10ac134f
parentcdad1085690f269a96803e7f49413a89686d6cb6 (diff)
firmware version 1
-rw-r--r--firmware/main.py24
-rw-r--r--firmware/settings.py.example2
2 files changed, 16 insertions, 10 deletions
diff --git a/firmware/main.py b/firmware/main.py
index 37ce957..fe5273b 100644
--- a/firmware/main.py
+++ b/firmware/main.py
@@ -1,6 +1,7 @@
import settings
import sys
+import machine
from machine import Pin, I2C, WDT
import network
import time
@@ -23,7 +24,6 @@ class BME680(HomieNode):
def __init__(self, name="bme680", device=None):
super().__init__(id="bme680", name=name, type="sensor")
- self.wdt = WDT()
self.device = device
self.i2c = I2C(scl=Pin(5), sda=Pin(4))
self.bme680 = BME680_I2C(i2c=self.i2c)
@@ -80,8 +80,14 @@ class BME680(HomieNode):
self.start = time.time()
async def update_data(self):
- while True:
+ # wait until connected
+ for _ in range(60):
+ await sleep_ms(1_000)
if self.device.mqtt.isconnected():
+ break
+ # loop forever
+ while True:
+ while self.device.mqtt.isconnected():
self.last_online = time.time()
self.online_led.on()
self.led.value(0) # illuminate onboard LED
@@ -91,14 +97,16 @@ class BME680(HomieNode):
self.gas.data = str(self.bme680.gas)
self.uptime.data = self.get_uptime()
self.led.value(1) # onboard LED off
- for _ in range(15):
- self.wdt.feed()
- await sleep_ms(1000)
- else:
+ await sleep_ms(15_000)
+ while not self.device.mqtt.isconnected():
+ if time.time() - self.last_online > 300: # 5 minutes
+ machine.reset()
self.online_led.off()
- if time.time() - self.last_online < 60:
- self.wdt.feed()
+ self.led.value(0) # illuminate onboard LED
+ await sleep_ms(100)
+ self.led.value(1) # onboard LED off
await sleep_ms(1000)
+ machine.reset() # if lost connection, restart
def get_uptime(self):
diff = int(time.time() - self.start)
diff --git a/firmware/settings.py.example b/firmware/settings.py.example
index b603a0a..092e2ea 100644
--- a/firmware/settings.py.example
+++ b/firmware/settings.py.example
@@ -5,6 +5,4 @@ MQTT_BROKER = "mqtt.chem.wisc.edu"
MQTT_USERNAME = "username"
MQTT_PASSWORD = "password"
-WDT_DELAY = 1_000_000
-
DEVICE_ID = "id"