Add refresh param in config file
Put functions def in separate file "main_lib"
This commit is contained in:
parent
0c1d7ab026
commit
9b4cbd6883
@ -12,4 +12,6 @@ MQTT_PASSWD = "passwd"
|
|||||||
WIFI_SSID = "my_wifi_ssid"
|
WIFI_SSID = "my_wifi_ssid"
|
||||||
WIFI_PSK = "my_wifi_wpa_key"
|
WIFI_PSK = "my_wifi_wpa_key"
|
||||||
|
|
||||||
|
REFRESH_RATE = 5
|
||||||
|
|
||||||
ALTITUDE = 150
|
ALTITUDE = 150
|
||||||
|
BIN
code/lib/main_lib.mpy
Normal file
BIN
code/lib/main_lib.mpy
Normal file
Binary file not shown.
40
code/lib/main_lib.py
Normal file
40
code/lib/main_lib.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
"""Divers fonctions utiles
|
||||||
|
"""
|
||||||
|
|
||||||
|
import time
|
||||||
|
import machine
|
||||||
|
import network
|
||||||
|
from umqtt.robust import MQTTClient
|
||||||
|
|
||||||
|
|
||||||
|
def WifiConnect(ssid, psk):
|
||||||
|
"""Connect to the wifi with given credentials"""
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.active(True)
|
||||||
|
nets = wlan.scan()
|
||||||
|
for net in nets:
|
||||||
|
net_ssid = net[0].decode()
|
||||||
|
if net_ssid == ssid:
|
||||||
|
print('Network found!')
|
||||||
|
wlan.connect(net_ssid, psk)
|
||||||
|
while not wlan.isconnected():
|
||||||
|
machine.idle() # save power while waiting
|
||||||
|
print('WLAN connection succeeded!')
|
||||||
|
break
|
||||||
|
if not wlan.isconnected():
|
||||||
|
print("WLAN not found/not connected")
|
||||||
|
|
||||||
|
return wlan
|
||||||
|
|
||||||
|
def now(rtc):
|
||||||
|
"""Return a string representing date/time now"""
|
||||||
|
return "{0:04d}/{1:02d}/{2:02d}_{4:02d}:{5:02d}:{6:02d}".format(*rtc.datetime())
|
||||||
|
|
||||||
|
|
||||||
|
def MqttPublish(client, topic, message, retain=False, qos=0, sleep=10):
|
||||||
|
"""MQTT publish helper"""
|
||||||
|
client.publish("test/{device}/{topic}".format(device=client.client_id, topic=topic),
|
||||||
|
message,
|
||||||
|
retain=retain,
|
||||||
|
qos=qos)
|
||||||
|
time.sleep_ms(sleep)
|
45
code/main.py
45
code/main.py
@ -1,32 +1,17 @@
|
|||||||
"""Station météo connectée vers MQTT via wifi
|
"""Station météo connectée vers MQTT via wifi
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import time
|
|
||||||
import machine
|
|
||||||
import network
|
|
||||||
import esp
|
import esp
|
||||||
import bme280_i2c
|
import bme280_i2c
|
||||||
import adafruit_max31865
|
import adafruit_max31865
|
||||||
from ntptime import settime
|
from ntptime import settime
|
||||||
from umqtt.robust import MQTTClient
|
from main_lib import *
|
||||||
import config
|
import config
|
||||||
|
|
||||||
|
|
||||||
# connect to WLAN
|
# Connect to WLAN
|
||||||
wlan = network.WLAN(network.STA_IF)
|
wlan = WifiConnect(config.WIFI_SSID, config.WIFI_PSK)
|
||||||
wlan.active(True)
|
|
||||||
nets = wlan.scan()
|
|
||||||
for net in nets:
|
|
||||||
net_ssid = net[0].decode()
|
|
||||||
if net_ssid == config.WIFI_SSID:
|
|
||||||
print('Network found!')
|
|
||||||
wlan.connect(net_ssid, config.WIFI_PSK)
|
|
||||||
while not wlan.isconnected():
|
|
||||||
machine.idle() # save power while waiting
|
|
||||||
print('WLAN connection succeeded!')
|
|
||||||
break
|
|
||||||
if not wlan.isconnected():
|
|
||||||
print("WLAN not found/not connected")
|
|
||||||
|
|
||||||
# Create a micropython I2C object with the appropriate device pins
|
# Create a micropython I2C object with the appropriate device pins
|
||||||
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
|
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
|
||||||
@ -59,21 +44,6 @@ max31865=adafruit_max31865.MAX31865(spi, max31865_cs)
|
|||||||
rtc=machine.RTC()
|
rtc=machine.RTC()
|
||||||
settime()
|
settime()
|
||||||
|
|
||||||
|
|
||||||
def now():
|
|
||||||
"""Return a string representing date/time now"""
|
|
||||||
return "{0:04d}/{1:02d}/{2:02d}_{4:02d}:{5:02d}:{6:02d}".format(*rtc.datetime())
|
|
||||||
|
|
||||||
|
|
||||||
def MqttPublish(client, topic, message, retain=False, qos=0, sleep=10):
|
|
||||||
"""MQTT publish helper"""
|
|
||||||
client.publish("test/{device}/{topic}".format(device=config.CLIENT_ID, topic=topic),
|
|
||||||
message,
|
|
||||||
retain=retain,
|
|
||||||
qos=qos)
|
|
||||||
time.sleep_ms(sleep)
|
|
||||||
|
|
||||||
|
|
||||||
client = MQTTClient(client_id=config.CLIENT_ID,
|
client = MQTTClient(client_id=config.CLIENT_ID,
|
||||||
server=config.MQTT_HOST,
|
server=config.MQTT_HOST,
|
||||||
user=config.MQTT_USERNAME,
|
user=config.MQTT_USERNAME,
|
||||||
@ -81,7 +51,7 @@ client = MQTTClient(client_id=config.CLIENT_ID,
|
|||||||
port=config.MQTT_PORT)
|
port=config.MQTT_PORT)
|
||||||
client.connect()
|
client.connect()
|
||||||
|
|
||||||
MqttPublish(client, "last_boot", now())
|
MqttPublish(client, "last_boot", now(rtc))
|
||||||
MqttPublish(client, "location", config.LOCATION, retain=True, qos=1)
|
MqttPublish(client, "location", config.LOCATION, retain=True, qos=1)
|
||||||
MqttPublish(client, "humidity/unit", "%", retain=True)
|
MqttPublish(client, "humidity/unit", "%", retain=True)
|
||||||
MqttPublish(client, "humidity/desc", "Capteur Bosch BME280", retain=True, qos=0)
|
MqttPublish(client, "humidity/desc", "Capteur Bosch BME280", retain=True, qos=0)
|
||||||
@ -95,7 +65,6 @@ MqttPublish(client, "temperature2/unit", "degC", retain=True, qos=0)
|
|||||||
MqttPublish(client, "temperature2/desc", "Sonde PT100/MAX31865", retain=True, qos=0)
|
MqttPublish(client, "temperature2/desc", "Sonde PT100/MAX31865", retain=True, qos=0)
|
||||||
MqttPublish(client, "wifi/ssid", config.WIFI_SSID, retain=True, qos=0)
|
MqttPublish(client, "wifi/ssid", config.WIFI_SSID, retain=True, qos=0)
|
||||||
MqttPublish(client, "wifi/ip", wlan.ifconfig()[0], retain=True, qos=0)
|
MqttPublish(client, "wifi/ip", wlan.ifconfig()[0], retain=True, qos=0)
|
||||||
MqttPublish(client, "wifi/channel", "{:d}".format(net[2]), retain=True, qos=0)
|
|
||||||
MqttPublish(client, "sys/esp8266_device_id", "{:d}".format(esp.flash_id()), retain=True, qos=0)
|
MqttPublish(client, "sys/esp8266_device_id", "{:d}".format(esp.flash_id()), retain=True, qos=0)
|
||||||
|
|
||||||
time.sleep_ms(1000)
|
time.sleep_ms(1000)
|
||||||
@ -116,7 +85,7 @@ topics = {"time" : ["time/last_values", "{}", 1, 1],
|
|||||||
|
|
||||||
while 1:
|
while 1:
|
||||||
bme_data = bme.get_measurement()
|
bme_data = bme.get_measurement()
|
||||||
bme_data['time'] = now()
|
bme_data['time'] = now(rtc)
|
||||||
bme_data['pressure2'] = bme_data['pressure']/SMLP_coef
|
bme_data['pressure2'] = bme_data['pressure']/SMLP_coef
|
||||||
bme_data['temperature2'] = max31865.temperature
|
bme_data['temperature2'] = max31865.temperature
|
||||||
bme_data['wifi_rssi'] = wlan.status('rssi')
|
bme_data['wifi_rssi'] = wlan.status('rssi')
|
||||||
@ -129,4 +98,4 @@ while 1:
|
|||||||
qos=param[3],
|
qos=param[3],
|
||||||
sleep=20)
|
sleep=20)
|
||||||
|
|
||||||
time.sleep_ms(1000)
|
time.sleep(config.REFRESH_RATE)
|
||||||
|
Loading…
Reference in New Issue
Block a user