From 4867d92b62d02149fb2712c67e020cb2c5a13933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Tue, 8 Oct 2024 18:09:12 +0200 Subject: [PATCH] Initial WIP 2 --- platformio.ini | 5 +++-- src/main.cpp | 44 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/platformio.ini b/platformio.ini index aff9a4b..7982363 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1,5 +1,6 @@ [env:KnxEsp] -platform = espressif32 -board = esp32dev +platform = espressif8266 +board = esp12e framework = arduino lib_deps = https://github.com/thorsten-gehrig/arduino-tpuart-knx-user-forum + https://github.com/knolleary/pubsubclient diff --git a/src/main.cpp b/src/main.cpp index c718a1a..16df186 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,24 +1,57 @@ #include - +#include #include - -#include "Group.h" +#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() { @@ -32,7 +65,6 @@ void knxLoop() { if (type != KNX_TELEGRAM) { return; } - KnxTelegram *telegram = knx.getReceivedTelegram(); - Group::write(telegram->getTargetMainGroup(), telegram->getTargetMiddleGroup(), telegram->getTargetSubGroup(),telegram->getPayloadLength()); - Serial.printf("%d/%d/%d\n", telegram->getTargetMainGroup(), telegram->getTargetMiddleGroup(), telegram->getTargetSubGroup()); + KnxTelegram *t = knx.getReceivedTelegram(); + Serial.printf("%3d / %3d / %3d len=%d, bool=%d\n", t->getTargetMainGroup(), t->getTargetMiddleGroup(), t->getTargetSubGroup(), t->getPayloadLength(), t->getBool()); }