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