import time
from machine import Pin, SoftI2C
import network
from i2c_lcd import I2cLcd
import ujson
from umqtt.simple import MQTTClient
import dht
I2C_ADDR = 0x27
lignes = 2
colonnes = 16
i2c = SoftI2C(scl=Pin(19), sda=Pin(18), freq=10000)
lcd = I2cLcd(i2c, I2C_ADDR, lignes, colonnes)
capteur = dht.DHT22(Pin(5))
led_rouge = Pin(13, Pin.OUT)
MQTT_CLIENT_ID = "poly_demo_mqtt"
MQTT_BROKER = "broker.hivemq.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "poly/demo/meteo"
SSID = "Wokwi-GUEST"
PASSWORD = ""
temp=0
hum=0
mesures_prece = ""
step = 8
def information_fn (information, information_2=""):
lcd.clear()
lcd.move_to(0,0)
lcd.putstr(information)
lcd.move_to(0,1)
lcd.putstr(information_2)
time.sleep(5)
def mqtt_message(topic, msg):
message_recu = msg.decode("utf-8")
information_fn("Reception du msg", "La valeur est: {}".format(msg.decode("utf8")))
if (message_recu == '1'):
led_rouge.on()
elif (message_recu == '0'):
led_rouge.off()
def wifi_connect():
information_fn("Connection au WiFi")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(SSID, PASSWORD)
while not sta_if.isconnected():
time.sleep(0.1)
information_fn("Connecter : Tentative reussie!")
def mqtt_connect():
information_fn("Connection au Serveur MQTT")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.set_callback(mqtt_message)
client.connect()
client.subscribe("poly/demo/Led")
def mesure(nombre):
global temp
global hum
global mesures_prece
information_fn("Mesures en cours", str(nombre))
capteur.measure()
if (step != nombre):
temp = capteur.temperature()
hum = capteur.humidity()
message = ujson.dumps({
"temp": temp,
"hum": hum,
})
if message != mesures_prece:
information_fn('Temp: %3.1f C' %temp, 'Hum: %3.1f %%' %hum)
mesures_prece = message
else:
information_fn("Aucune MAJ", str(nombre))
def boucle_fn(nbr=10):
global temp
global hum
val = 0
while val < nbr:
if (val == 8):
temp = 25
hum = 75
mesure(val)
val += 2
else:
temp = 35
hum = 85
mesure(val)
def compteur():
i = 0
for i in range(0, 9):
if(i % 2) == 0:
information_fn("iteration", str(i))
continue
information_fn("iteration", str(i + 1))
elif(i == 5):
information_fn("iteration", str(i))
break
information_fn("iteration", str(i + 1))
information_fn("iteration", str(i))
else:
information_fn("iteration", str(i-1))
print ("IO120")
wifi_connect()
boucle_fn()
compteur()
information_fn("Merci...")