#include #ifdef ARDUINO_ARCH_ESP8266 #include #endif #define RELAYPIN 12 // create named references for easy access to group objects #define goSwitch knx.getGroupObject(1) #define goBlock knx.getGroupObject(2) #define goStatus knx.getGroupObject(3) // callback from switch-GO void switchCallback(GroupObject& go) { if (goBlock.value()) return; bool value = goSwitch.value(); digitalWrite(RELAYPIN, value); goStatus.value(value); } void setup() { Serial.begin(115200); ArduinoPlatform::SerialDebug = &Serial; #ifdef ARDUINO_ARCH_ESP8266 WiFiManager wifiManager; wifiManager.autoConnect("knx-sonoffS20"); #endif // read adress table, association table, groupobject table and parameters from eeprom knx.readMemory(); if (knx.configured()) { // register callback for reset GO goSwitch.callback(switchCallback); goSwitch.dataPointType(Dpt(1, 1)); goBlock.dataPointType(Dpt(1, 3)); goStatus.dataPointType(Dpt(1, 2)); } // start the framework. Will get wifi first. knx.start(); } void loop() { // don't delay here to much. Otherwise you might lose packages or mess up the timing with ETS knx.loop(); // only run the application code if the device was configured with ETS if(!knx.configured()) return; // nothing else to do. }