mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	* bugfix, print not allowed in constructor * Update tpuart_data_link_layer.cpp - start confirm timout only after last byte was sent - increase BYTE_TIMEOUT * -bugfix, change debug Uart not possible * Update esp32_platform.cpp * Update esp_platform.cpp * Update knx-bme680.ino * Update knx-demo.ino * Update knx-hdc1008.ino * Update knx-sonoffS20.ino
		
			
				
	
	
		
			114 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <knx.h>
 | 
						|
 | 
						|
#ifdef ARDUINO_ARCH_ESP8266
 | 
						|
#include <WiFiManager.h>
 | 
						|
#endif
 | 
						|
 | 
						|
// create named references for easy access to group objects
 | 
						|
#define goCurrent knx.getGroupObject(1)
 | 
						|
#define goMax knx.getGroupObject(2)
 | 
						|
#define goMin knx.getGroupObject(3)
 | 
						|
#define goReset knx.getGroupObject(4)
 | 
						|
 | 
						|
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.value(currentValue);
 | 
						|
 | 
						|
    if (currentValue > maxValue)
 | 
						|
    {
 | 
						|
        maxValue = currentValue;
 | 
						|
        goMax.value(maxValue);
 | 
						|
    }
 | 
						|
 | 
						|
    if (currentValue < minValue)
 | 
						|
    {
 | 
						|
        minValue = currentValue;
 | 
						|
        goMin.value(minValue);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// callback from reset-GO
 | 
						|
void resetCallback(GroupObject& go)
 | 
						|
{
 | 
						|
    if (go.value())
 | 
						|
    {
 | 
						|
        maxValue = 0;
 | 
						|
        minValue = 10000;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void setup()
 | 
						|
{
 | 
						|
    Serial.begin(115200);
 | 
						|
    ArduinoPlatform::SerialDebug = &Serial;
 | 
						|
 | 
						|
    randomSeed(millis());
 | 
						|
 | 
						|
#ifdef ARDUINO_ARCH_ESP8266
 | 
						|
    WiFiManager wifiManager;
 | 
						|
    wifiManager.autoConnect("knx-demo");
 | 
						|
#endif
 | 
						|
 | 
						|
    // read adress table, association table, groupobject table and parameters from eeprom
 | 
						|
    knx.readMemory();
 | 
						|
 | 
						|
    // print values of parameters if device is already configured
 | 
						|
    if (knx.configured())
 | 
						|
    {
 | 
						|
        // register callback for reset GO
 | 
						|
        goReset.callback(resetCallback);
 | 
						|
        goReset.dataPointType(DPT_Trigger);
 | 
						|
        goCurrent.dataPointType(DPT_Value_Temp);
 | 
						|
        goMin.dataPointType(DPT_Value_Temp);
 | 
						|
        goMax.dataPointType(DPT_Value_Temp);
 | 
						|
 | 
						|
        Serial.print("Timeout: ");
 | 
						|
        Serial.println(knx.paramByte(0));
 | 
						|
        Serial.print("Zykl. senden: ");
 | 
						|
        Serial.println(knx.paramByte(1));
 | 
						|
        Serial.print("Min/Max senden: ");
 | 
						|
        Serial.println(knx.paramByte(2));
 | 
						|
        Serial.print("Aenderung senden: ");
 | 
						|
        Serial.println(knx.paramByte(3));
 | 
						|
        Serial.print("Abgleich: ");
 | 
						|
        Serial.println(knx.paramByte(4));
 | 
						|
    }
 | 
						|
 | 
						|
    // pin or GPIO the programming led is connected to. Default is LED_BUILTIN
 | 
						|
    // knx.ledPin(LED_BUILTIN);
 | 
						|
    // is the led active on HIGH or low? Default is LOW
 | 
						|
    // knx.ledPinActiveOn(HIGH);
 | 
						|
    // pin or GPIO programming button is connected to. Default is 0
 | 
						|
    // knx.buttonPin(0);
 | 
						|
 | 
						|
    // start the framework.
 | 
						|
    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;
 | 
						|
 | 
						|
    measureTemp();
 | 
						|
}
 |