Hallo zusammen,
ich bin da zufällig über diese Seite im GitHub gestolpert: https://github.com/envy/esp-knx-ip
Im Forum gibt es bisher dazu nichts zu lesen, daher möchte ich diese Information teilen.
Die ersten Versuche waren auch direkt erfolgreich.
Mit diesem Code bekomme ich beispielsweise einen DHT11 an den KNX Bus:
Damit bekommt man sehr kostengünstig und ohne Umwege (MQTT) die entsprechenden Messwerte direkt über den KNX Router auf den BUS.
Konfiguriert wird über den WEB-Browser
ESP8266 to KNX Config.png
Hier noch mein provisorischer Aufbau mit einem NodeMCU
NodeMCU mit DHT11.png
Viel Spaß beim spielen.
Gruß
Wolfgang
ich bin da zufällig über diese Seite im GitHub gestolpert: https://github.com/envy/esp-knx-ip
Im Forum gibt es bisher dazu nichts zu lesen, daher möchte ich diese Information teilen.
Die ersten Versuche waren auch direkt erfolgreich.
Mit diesem Code bekomme ich beispielsweise einen DHT11 an den KNX Bus:
Code:
/* * DHT11 to KNX */ #include <esp-knx-ip.h> #include <DHT.h> // WiFi config const char* ssid = "SSID"; const char* pass = "PASS"; #define LED_PIN LED_BUILTIN #define UPDATE_INTERVAL 10000 // Default send and debug interval #define DHTTYPE DHT11 #define DHTPIN D2 unsigned long next_data_change = 0; unsigned long next_debug_change = 0; config_id_t temp_ga, hum_ga; config_id_t hostname_id; config_id_t temp_rate_id; config_id_t debug_rate_id; DHT dht(DHTPIN, DHTTYPE); void setup() { pinMode(LED_PIN, OUTPUT); Serial.begin(115200); // Register the group addresses temp_ga = knx.config_register_ga("Temperature"); hum_ga = knx.config_register_ga("Humidity"); // And the config options hostname_id = knx.config_register_string("Hostname", 20, String("env")); temp_rate_id = knx.config_register_int("Send rate (ms)", UPDATE_INTERVAL); debug_rate_id = knx.config_register_int("Serial debug rate (ms)", UPDATE_INTERVAL); // Load previous values from EEPROM knx.load(); // Init sensor dht.begin(); // Init WiFi WiFi.hostname(knx.config_get_string(hostname_id)); WiFi.begin(ssid, pass); Serial.println(""); Serial.print("[Connecting]"); Serial.print(ssid); digitalWrite(LED_PIN, HIGH); while (WiFi.status() != WL_CONNECTED) { digitalWrite(LED_PIN, LOW); delay(500); Serial.print("."); digitalWrite(LED_PIN, HIGH); } digitalWrite(LED_PIN, LOW); // Start knx knx.start(); Serial.println(); Serial.println("Connected to wifi"); Serial.println(WiFi.localIP()); Serial.println(" "); } void loop() { // Process knx events, e.g. webserver knx.loop(); unsigned long now = millis(); // Debug Loop if (next_debug_change < now) { next_debug_change = now + knx.config_get_int(debug_rate_id); // Read debug rate setting if (WiFi.status() != WL_CONNECTED) { digitalWrite(LED_PIN, HIGH); Serial.println("WIFI ERROR"); }else { digitalWrite(LED_PIN, LOW); Serial.println("WIFI OK"); } } // Data Loop if (next_data_change < now) { next_data_change = now + knx.config_get_int(temp_rate_id); float temp = dht.readTemperature(); float hum = dht.readHumidity(); if ( isnan (temp) ) { temp = -99.0; } if ( isnan(hum)) { hum = -99.0; } Serial.print("T: "); Serial.print(temp); Serial.print("°C H: "); Serial.print(hum); Serial.println("%"); knx.write2ByteFloat(knx.config_get_ga(temp_ga), temp); knx.write2ByteFloat(knx.config_get_ga(hum_ga), hum); } delay(50); }
Konfiguriert wird über den WEB-Browser
ESP8266 to KNX Config.png
Hier noch mein provisorischer Aufbau mit einem NodeMCU
NodeMCU mit DHT11.png
Viel Spaß beim spielen.
Gruß
Wolfgang
Kommentar