From ff5dabad3bcc7b2a0cf13a15de9b2cda509298f5 Mon Sep 17 00:00:00 2001 From: Thomas Kunze Date: Tue, 10 Apr 2018 00:16:34 +0200 Subject: [PATCH] add example to correct folder --- examples/{ => knx-esp-demo}/knx-esp-demo.ino | 153 ++++++++++--------- examples/{ => knx-esp-demo}/knx-esp-demo.xml | 0 2 files changed, 83 insertions(+), 70 deletions(-) rename examples/{ => knx-esp-demo}/knx-esp-demo.ino (72%) rename examples/{ => knx-esp-demo}/knx-esp-demo.xml (100%) diff --git a/examples/knx-esp-demo.ino b/examples/knx-esp-demo/knx-esp-demo.ino similarity index 72% rename from examples/knx-esp-demo.ino rename to examples/knx-esp-demo/knx-esp-demo.ino index ce98407..b07d8da 100644 --- a/examples/knx-esp-demo.ino +++ b/examples/knx-esp-demo/knx-esp-demo.ino @@ -1,57 +1,62 @@ -#include +#include #include "knx_esp.h" -float currentValue = 0; -float maxValue = 0; -float minValue = RAND_MAX; -long lastsend = 0; - -GroupObject groupObjects[] -{ - GroupObject(2), - GroupObject(2), - GroupObject(2), - GroupObject(1) -}; - -GroupObject& goCurrent = groupObjects[0]; -GroupObject& goMax = groupObjects[1]; -GroupObject& goMin = groupObjects[2]; -GroupObject& goReset = groupObjects[3]; - -void measureTemp() -{ - long now = millis(); - if ((now - lastsend) < 2000) - return; - - lastsend = now; - int r = rand(); - currentValue = (r * 1.0) / (RAND_MAX * 1.0); - currentValue *= 100 * 100; - - goCurrent.objectWriteFloat(currentValue); - - if (currentValue > maxValue) - { - maxValue = currentValue; - goMax.objectWriteFloat(maxValue); - } - - if (currentValue < minValue) - { - minValue = currentValue; - goMin.objectWriteFloat(minValue); - } -} +// declare array of all groupobjects with their sizes in byte +GroupObject groupObjects[] +{ + GroupObject(2), + GroupObject(2), + GroupObject(2), + GroupObject(1) +}; -void resetCallback(GroupObject& go) -{ - if (go.objectReadBool()) - { - maxValue = 0; - minValue = 10000; - } +// create named references for easy access to group objects +GroupObject& goCurrent = groupObjects[0]; +GroupObject& goMax = groupObjects[1]; +GroupObject& goMin = groupObjects[2]; +GroupObject& goReset = groupObjects[3]; + +float currentValue = 0; +float maxValue = 0; +float minValue = RAND_MAX; +long lastsend = 0; + +void measureTemp() +{ + + long now = millis(); + if ((now - lastsend) < 2000) + return; + + lastsend = now; + int r = rand(); + currentValue = (r * 1.0) / (RAND_MAX * 1.0); + currentValue *= 100 * 100; + + // write new value to groupobject + goCurrent.objectWriteFloat(currentValue); + + if (currentValue > maxValue) + { + maxValue = currentValue; + goMax.objectWriteFloat(maxValue); + } + + if (currentValue < minValue) + { + minValue = currentValue; + goMin.objectWriteFloat(minValue); + } +} + +// callback from reset-GO +void resetCallback(GroupObject& go) +{ + if (go.objectReadBool()) + { + maxValue = 0; + minValue = 10000; + } } void setup() @@ -59,30 +64,38 @@ void setup() Serial.begin(115200); Serial.setDebugOutput(true); - randomSeed(millis()); - - knx.registerGroupObjects(groupObjects, 4); - knx.readMemory(); - - goReset.updateHandler = resetCallback; - - if (knx.configured()) - { - Serial.printf("Timeout: %d\n", knx.paramByte(0)); - Serial.printf("Zykl. senden: %d\n", knx.paramByte(1)); - Serial.printf("Min/Max senden: %d\n", knx.paramByte(2)); - Serial.printf("Aenderung senden: %d\n", knx.paramByte(3)); - Serial.printf("Abgleich %d\n", knx.paramByte(4)); + randomSeed(millis()); + + // register group objects + knx.registerGroupObjects(groupObjects, 4); + // read adress table, association table, groupobject table and parameters from eeprom + knx.readMemory(); + + // register callback for reset GO + goReset.updateHandler = resetCallback; + + // print values of parameters if device is already configured + if (knx.configured()) + { + Serial.printf("Timeout: %d\n", knx.paramByte(0)); + Serial.printf("Zykl. senden: %d\n", knx.paramByte(1)); + Serial.printf("Min/Max senden: %d\n", knx.paramByte(2)); + Serial.printf("Aenderung senden: %d\n", knx.paramByte(3)); + Serial.printf("Abgleich %d\n", knx.paramByte(4)); } - + + // start the framework. Will get wifi first. knx.start(); } void loop() { - knx.loop(); - if (!knx.configured()) - return; - + // 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; + measureTemp(); } diff --git a/examples/knx-esp-demo.xml b/examples/knx-esp-demo/knx-esp-demo.xml similarity index 100% rename from examples/knx-esp-demo.xml rename to examples/knx-esp-demo/knx-esp-demo.xml