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();
 | |
| }
 |