import time
import network
import ubinascii
from umqtt.simple import MQTTClient
import ujson
import random
import socket
# pour diagnostiquer la liaison TCP
def test_tcp(host, port):
try:
addr = socket.getaddrinfo(host, port)[0][-1]
s = socket.socket()
s.settimeout(5)
s.connect(addr)
s.close()
print("TCP OK", host, port)
except Exception as e:
print("TCP KO", host, port, "=>", e)
#*******************************************
WIFI_SSID = "nyhome5G"
WIFI_PASS = "bm@1574d"
THINGSBOARD_HOST = "192.168.1.1"
ACCESS_TOKEN = "z609few43cgvfvjw5n3p"
TOPIC_TELEMETRY = b"v1/devices/me/telemetry"
def connecter_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
time.sleep(0.5)
print("Wi-Fi OK:", wlan.ifconfig())
#a85c35b0-0013-11f1-aa45-bd52d6a3175c
def connecter_mqtt():
client_id = b"esp32_001"
client = MQTTClient(
client_id=client_id,
server=THINGSBOARD_HOST,
port=1884, # <= ici
user=ACCESS_TOKEN,
password=""
)
client.connect()
print("MQTT OK (ThingsBoard:1884)")
return client
connecter_wifi()
#test_tcp("10.15.64.20", 80) # ou 443 / 8080 selon ton ThingsBoard
#test_tcp("10.15.64.20", 1884)
client = connecter_mqtt()
while True:
data = {
"temperature": round(20 + random.random() * 10, 2),
"humidite": round(40 + random.random() * 30, 2),
"qualite_air": int(350 + random.random() * 300)
}
payload = ujson.dumps(data)
client.publish(TOPIC_TELEMETRY, payload)
print("Envoyé:", payload)
time.sleep(5)