#include #include #include #include KnxTpUart knx(&Serial1, "15.15.20"); PubSubClient mqtt; void knxSetup(); void knxLoop(); void mqttLoop(); void mqttSetup(); void wifiSetup(); void setup() { Serial.begin(112500); delay(500); Serial.print("\n\n\nStartup\n"); knxSetup(); wifiSetup(); configTime("Europe/Berlin", "de.pool.ntp.org"); mqttSetup(); } void wifiSetup() { WiFi.hostname("KnxEsp"); WiFi.begin("HappyNet", "1Grausame!Sackratte7"); while (WiFi.localIP() == 0UL) { delay(100); } } void loop() { knxLoop(); mqttLoop(); } void mqttSetup() { mqtt.setServer("10.0.0.50", 1883); mqtt.setBufferSize(512); } void mqttLoop() { if (!mqtt.loop()) { if (!mqtt.connect(WiFi.hostname().c_str())) { mqtt.disconnect(); } } } void knxSetup() { Serial1.begin(19200, SERIAL_8E1); knx.uartReset(); knx.setListenToBroadcasts(true); } void knxLoop() { auto type = knx.serialEvent(); if (type != KNX_TELEGRAM) { return; } KnxTelegram *t = knx.getReceivedTelegram(); Serial.printf("%3d / %3d / %3d len=%d, bool=%d\n", t->getTargetMainGroup(), t->getTargetMiddleGroup(), t->getTargetSubGroup(), t->getPayloadLength(), t->getBool()); }