64 lines
1.3 KiB
Python
64 lines
1.3 KiB
Python
import urequests
|
|
import json
|
|
import socket
|
|
import network
|
|
import time
|
|
import ubinascii
|
|
from umqtt.simple import MQTTClient
|
|
import machine
|
|
host = "lires.de"
|
|
|
|
# one time dns resolve, damit der arme ESP und nicht wegkocht.
|
|
def resolve_ip(hostname):
|
|
try:
|
|
print(f"🌐 Resolvieren von '{hostname}' ...")
|
|
addr_info = socket.getaddrinfo(hostname, 80)
|
|
ip = addr_info[0][4][0]
|
|
print(f"🔎 IP-Adresse gefunden: {ip}")
|
|
return ip
|
|
except Exception as e:
|
|
print("❌ Fehler beim Resolvieren:", e)
|
|
return None
|
|
|
|
ip = resolve_ip(host)
|
|
if ip is None:
|
|
print("❌ Fehler: IP-Adresse konnte nicht aufgelöst werden.")
|
|
raise SystemExit(1)
|
|
MQTT_BROKER = ip
|
|
MQTT_TOPIC = b'iot/testdata'
|
|
|
|
#callback
|
|
def mqtt_callback(topic, msg):
|
|
print("Neue Nachricht:", msg.decode())
|
|
|
|
#send data to the server on the given url
|
|
def main():
|
|
client_id = ubinascii.hexlify(machine.unique_id())
|
|
client = MQTTClient(client_id, MQTT_BROKER)
|
|
client.set_callback(mqtt_callback)
|
|
client.connect()
|
|
client.subscribe(MQTT_TOPIC)
|
|
print("Warte auf Nachrichten...")
|
|
|
|
try:
|
|
while True:
|
|
client.wait_msg() # blockiert, bis Nachricht ankommt
|
|
finally:
|
|
client.disconnect()
|
|
|
|
main()
|
|
|
|
|
|
while True:
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|