mirror of
https://github.com/thelsing/knx.git
synced 2024-12-18 19:08:18 +01:00
Arduino set Knx uart bugfix (#32)
* 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 Arduino set knxUart * Update knx-bme680.ino * Update knx-demo.ino * Update knx-hdc1008.ino * Update knx-sonoffS20.ino * Update knx-bme680.ino * Update knx-demo.ino * Update arduino_platform.cpp * Update dpt.h * Update esp32_platform.h * Update esp_platform.h
This commit is contained in:
parent
f2d45b233a
commit
68b0002490
@ -42,10 +42,10 @@ bool trigger = false;
|
||||
// Entry point for the example
|
||||
void setup(void)
|
||||
{
|
||||
SerialDBG.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = SerialDBG;
|
||||
Serial.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = Serial;
|
||||
delay(5000);
|
||||
SerialDBG.println("start");
|
||||
Serial.println("start");
|
||||
|
||||
#ifdef ARDUINO_ARCH_ESP8266
|
||||
WiFiManager wifiManager;
|
||||
@ -92,8 +92,8 @@ void setup(void)
|
||||
if (knx.configured())
|
||||
{
|
||||
cyclSend = knx.paramInt(0);
|
||||
SerialDBG.print("Zykl. send:");
|
||||
SerialDBG.println(cyclSend);
|
||||
Serial.print("Zykl. send:");
|
||||
Serial.println(cyclSend);
|
||||
goRawTemperature.dataPointType(Dpt(9, 1));
|
||||
goPressure.dataPointType(Dpt(9, 1));
|
||||
goRawHumidity.dataPointType(Dpt(9, 1));
|
||||
@ -112,7 +112,7 @@ void setup(void)
|
||||
iaqSensor.updateSubscription(sensorList, sizeof(sensorList)/sizeof(bsec_virtual_sensor_t), BSEC_SAMPLE_RATE_LP);
|
||||
checkIaqSensorStatus();
|
||||
String output = "Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%], CO2";
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
}
|
||||
|
||||
// Function that is looped forever
|
||||
@ -150,7 +150,7 @@ void loop(void)
|
||||
output += ", " + String(iaqSensor.runInStatus);
|
||||
output += ", " + String(iaqSensor.stabStatus);
|
||||
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
updateState();
|
||||
|
||||
if (sendCounter++ == cyclSend || trigger)
|
||||
@ -180,26 +180,26 @@ void checkIaqSensorStatus(void)
|
||||
if (iaqSensor.status != BSEC_OK) {
|
||||
if (iaqSensor.status < BSEC_OK) {
|
||||
String output = "BSEC error code : " + String(iaqSensor.status);
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
for (;;)
|
||||
errLeds(); /* Halt in case of failure */
|
||||
}
|
||||
else {
|
||||
String output = "BSEC warning code : " + String(iaqSensor.status);
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
}
|
||||
}
|
||||
|
||||
if (iaqSensor.bme680Status != BME680_OK) {
|
||||
if (iaqSensor.bme680Status < BME680_OK) {
|
||||
String output = "BME680 error code : " + String(iaqSensor.bme680Status);
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
for (;;)
|
||||
errLeds(); /* Halt in case of failure */
|
||||
}
|
||||
else {
|
||||
String output = "BME680 warning code : " + String(iaqSensor.bme680Status);
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -216,10 +216,10 @@ void errLeds(void)
|
||||
uint8_t* loadBme680State(uint8_t* buffer)
|
||||
{
|
||||
// Existing state in EEPROM
|
||||
SerialDBG.println("Reading state from EEPROM");
|
||||
Serial.println("Reading state from EEPROM");
|
||||
|
||||
for (uint8_t i = 0; i < BSEC_MAX_STATE_BLOB_SIZE; i++) {
|
||||
SerialDBG.println(buffer[i], HEX);
|
||||
Serial.println(buffer[i], HEX);
|
||||
}
|
||||
|
||||
iaqSensor.setState(buffer);
|
||||
@ -232,10 +232,10 @@ uint8_t* saveBme680State(uint8_t* buffer)
|
||||
iaqSensor.getState(buffer);
|
||||
checkIaqSensorStatus();
|
||||
|
||||
SerialDBG.println("Writing state to EEPROM");
|
||||
Serial.println("Writing state to EEPROM");
|
||||
|
||||
for (uint8_t i = 0; i < BSEC_MAX_STATE_BLOB_SIZE; i++) {
|
||||
SerialDBG.println(buffer[i], HEX);
|
||||
Serial.println(buffer[i], HEX);
|
||||
}
|
||||
return buffer + BSEC_MAX_STATE_BLOB_SIZE;
|
||||
}
|
||||
@ -266,8 +266,8 @@ void updateState(void)
|
||||
// callback from trigger-GO
|
||||
void triggerCallback(GroupObject& go)
|
||||
{
|
||||
SerialDBG.println("trigger");
|
||||
SerialDBG.println((bool)go.value());
|
||||
Serial.println("trigger");
|
||||
Serial.println((bool)go.value());
|
||||
if (!go.value())
|
||||
return;
|
||||
|
||||
@ -275,11 +275,11 @@ void triggerCallback(GroupObject& go)
|
||||
/* We call bsec_update_subscription() in order to instruct BSEC to perform an extra measurement at the next
|
||||
possible time slot
|
||||
*/
|
||||
SerialDBG.println("Triggering ULP plus.");
|
||||
Serial.println("Triggering ULP plus.");
|
||||
bsec_virtual_sensor_t sensorList[] = {
|
||||
BSEC_OUTPUT_IAQ, BSEC_OUTPUT_CO2_EQUIVALENT
|
||||
};
|
||||
|
||||
iaqSensor.updateSubscription(sensorList, 1, BSEC_SAMPLE_RATE_ULP_MEASUREMENT_ON_DEMAND);
|
||||
checkIaqSensorStatus();
|
||||
}
|
||||
}
|
||||
|
@ -54,8 +54,8 @@ void resetCallback(GroupObject& go)
|
||||
|
||||
void setup()
|
||||
{
|
||||
SerialDBG.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = SerialDBG;
|
||||
Serial.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = Serial;
|
||||
|
||||
randomSeed(millis());
|
||||
|
||||
@ -77,16 +77,16 @@ void setup()
|
||||
goMin.dataPointType(DPT_Value_Temp);
|
||||
goMax.dataPointType(DPT_Value_Temp);
|
||||
|
||||
SerialDBG.print("Timeout: ");
|
||||
SerialDBG.println(knx.paramByte(0));
|
||||
SerialDBG.print("Zykl. senden: ");
|
||||
SerialDBG.println(knx.paramByte(1));
|
||||
SerialDBG.print("Min/Max senden: ");
|
||||
SerialDBG.println(knx.paramByte(2));
|
||||
SerialDBG.print("Aenderung senden: ");
|
||||
SerialDBG.println(knx.paramByte(3));
|
||||
SerialDBG.print("Abgleich: ");
|
||||
SerialDBG.println(knx.paramByte(4));
|
||||
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
|
||||
@ -110,4 +110,4 @@ void loop()
|
||||
return;
|
||||
|
||||
measureTemp();
|
||||
}
|
||||
}
|
||||
|
@ -21,10 +21,10 @@ uint32_t cyclSend = 0;
|
||||
// Entry point for the example
|
||||
void setup(void)
|
||||
{
|
||||
SerialDBG.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = SerialDBG;
|
||||
Serial.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = Serial;
|
||||
delay(5000);
|
||||
SerialDBG.println("start");
|
||||
Serial.println("start");
|
||||
|
||||
#ifdef ARDUINO_ARCH_ESP8266
|
||||
WiFiManager wifiManager;
|
||||
@ -45,15 +45,15 @@ void setup(void)
|
||||
{
|
||||
|
||||
cyclSend = knx.paramInt(0);
|
||||
SerialDBG.print("Zykl. send:");
|
||||
SerialDBG.println(cyclSend);
|
||||
Serial.print("Zykl. send:");
|
||||
Serial.println(cyclSend);
|
||||
}
|
||||
|
||||
// start the framework.
|
||||
knx.start();
|
||||
|
||||
String output = "Timestamp [ms], temperature [°C], relative humidity [%]";
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
}
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ void loop(void)
|
||||
String output = String(millis());
|
||||
output += ", " + String(temp);
|
||||
output += ", " + String(humi);
|
||||
SerialDBG.println(output);
|
||||
Serial.println(output);
|
||||
|
||||
if (sendCounter++ == cyclSend)
|
||||
{
|
||||
|
@ -24,8 +24,8 @@ void switchCallback(GroupObject& go)
|
||||
|
||||
void setup()
|
||||
{
|
||||
SerialDBG.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = SerialDBG;
|
||||
Serial.begin(115200);
|
||||
ArduinoPlatform::SerialDebug = Serial;
|
||||
|
||||
#ifdef ARDUINO_ARCH_ESP8266
|
||||
WiFiManager wifiManager;
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
Stream& ArduinoPlatform::SerialDebug = Serial;
|
||||
|
||||
ArduinoPlatform::ArduinoPlatform(HardwareSerial& knxSerial) : _knxSerial(knxSerial)
|
||||
ArduinoPlatform::ArduinoPlatform(HardwareSerial* knxSerial) : _knxSerial(knxSerial)
|
||||
{
|
||||
}
|
||||
|
||||
@ -68,19 +68,21 @@ int ArduinoPlatform::readBytes(uint8_t * buffer, uint16_t maxLen)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ArduinoPlatform::knxUart( HardwareSerial& serial )
|
||||
void ArduinoPlatform::knxUart( HardwareSerial* serial )
|
||||
{
|
||||
closeUart();
|
||||
_knxSerial = serial;
|
||||
setupUart();
|
||||
}
|
||||
|
||||
HardwareSerial& ArduinoPlatform::knxUart()
|
||||
HardwareSerial* ArduinoPlatform::knxUart()
|
||||
{
|
||||
return _knxSerial;
|
||||
}
|
||||
|
||||
void ArduinoPlatform::setupUart()
|
||||
{
|
||||
_knxSerial.begin(19200, SERIAL_8E1);
|
||||
_knxSerial->begin(19200, SERIAL_8E1);
|
||||
while (!_knxSerial)
|
||||
;
|
||||
}
|
||||
@ -88,33 +90,33 @@ void ArduinoPlatform::setupUart()
|
||||
|
||||
void ArduinoPlatform::closeUart()
|
||||
{
|
||||
_knxSerial.end();
|
||||
_knxSerial->end();
|
||||
}
|
||||
|
||||
|
||||
int ArduinoPlatform::uartAvailable()
|
||||
{
|
||||
return _knxSerial.available();
|
||||
return _knxSerial->available();
|
||||
}
|
||||
|
||||
|
||||
size_t ArduinoPlatform::writeUart(const uint8_t data)
|
||||
{
|
||||
//printHex("<p", &data, 1);
|
||||
return _knxSerial.write(data);
|
||||
return _knxSerial->write(data);
|
||||
}
|
||||
|
||||
|
||||
size_t ArduinoPlatform::writeUart(const uint8_t *buffer, size_t size)
|
||||
{
|
||||
//printHex("<p", buffer, size);
|
||||
return _knxSerial.write(buffer, size);
|
||||
return _knxSerial->write(buffer, size);
|
||||
}
|
||||
|
||||
|
||||
int ArduinoPlatform::readUart()
|
||||
{
|
||||
int val = _knxSerial.read();
|
||||
int val = _knxSerial->read();
|
||||
//if(val > 0)
|
||||
// printHex("p>", (uint8_t*)&val, 1);
|
||||
return val;
|
||||
@ -127,7 +129,7 @@ size_t ArduinoPlatform::readBytesUart(uint8_t *buffer, size_t length)
|
||||
uint8_t* pos = buffer;
|
||||
while (toRead > 0)
|
||||
{
|
||||
size_t val = _knxSerial.readBytes(pos, toRead);
|
||||
size_t val = _knxSerial->readBytes(pos, toRead);
|
||||
pos += val;
|
||||
toRead -= val;
|
||||
}
|
||||
@ -267,4 +269,4 @@ void println(double num)
|
||||
void println(void)
|
||||
{
|
||||
ArduinoPlatform::SerialDebug.println();
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ extern Stream& _serialDBG;
|
||||
class ArduinoPlatform : public Platform
|
||||
{
|
||||
public:
|
||||
ArduinoPlatform(HardwareSerial& knxSerial);
|
||||
ArduinoPlatform(HardwareSerial* knxSerial);
|
||||
|
||||
// ip stuff
|
||||
uint32_t currentIpAddress();
|
||||
@ -25,8 +25,8 @@ class ArduinoPlatform : public Platform
|
||||
int readBytes(uint8_t* buffer, uint16_t maxLen);
|
||||
|
||||
//uart
|
||||
virtual void knxUart( HardwareSerial& serial );
|
||||
virtual HardwareSerial& knxUart();
|
||||
virtual void knxUart( HardwareSerial* serial);
|
||||
virtual HardwareSerial* knxUart();
|
||||
virtual void setupUart();
|
||||
virtual void closeUart();
|
||||
virtual int uartAvailable();
|
||||
@ -40,5 +40,5 @@ class ArduinoPlatform : public Platform
|
||||
protected:
|
||||
uint32_t _mulitcastAddr;
|
||||
uint16_t _mulitcastPort;
|
||||
HardwareSerial& _knxSerial;
|
||||
HardwareSerial* _knxSerial;
|
||||
};
|
||||
|
@ -6,11 +6,11 @@
|
||||
|
||||
#include "knx/bits.h"
|
||||
|
||||
Esp32Platform::Esp32Platform() : ArduinoPlatform(Serial1)
|
||||
Esp32Platform::Esp32Platform() : ArduinoPlatform(&Serial1)
|
||||
{
|
||||
}
|
||||
|
||||
Esp32Platform::Esp32Platform( HardwareSerial& s) : ArduinoPlatform(s)
|
||||
Esp32Platform::Esp32Platform( HardwareSerial* s) : ArduinoPlatform(s)
|
||||
{
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ void Esp32Platform::macAddress(uint8_t * addr)
|
||||
|
||||
void Esp32Platform::restart()
|
||||
{
|
||||
Serial.println("restart");
|
||||
ArduinoPlatform::SerialDebug.println("restart");
|
||||
ESP.restart();
|
||||
}
|
||||
|
||||
@ -95,4 +95,4 @@ void Esp32Platform::commitToEeprom()
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -3,7 +3,6 @@
|
||||
#include <WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
|
||||
#define SerialDBG Serial
|
||||
|
||||
class Esp32Platform : public ArduinoPlatform
|
||||
{
|
||||
@ -11,7 +10,7 @@ class Esp32Platform : public ArduinoPlatform
|
||||
using ArduinoPlatform::_mulitcastPort;
|
||||
public:
|
||||
Esp32Platform();
|
||||
Esp32Platform( HardwareSerial& s);
|
||||
Esp32Platform( HardwareSerial* s);
|
||||
|
||||
// ip stuff
|
||||
uint32_t currentIpAddress() override;
|
||||
@ -35,4 +34,4 @@ private:
|
||||
WiFiUDP _udp;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -7,11 +7,11 @@
|
||||
|
||||
#include "knx/bits.h"
|
||||
|
||||
EspPlatform::EspPlatform() : ArduinoPlatform(Serial)
|
||||
EspPlatform::EspPlatform() : ArduinoPlatform(&Serial)
|
||||
{
|
||||
}
|
||||
|
||||
EspPlatform::EspPlatform( HardwareSerial& s) : ArduinoPlatform(s)
|
||||
EspPlatform::EspPlatform( HardwareSerial* s) : ArduinoPlatform(s)
|
||||
{
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ void EspPlatform::macAddress(uint8_t * addr)
|
||||
|
||||
void EspPlatform::restart()
|
||||
{
|
||||
Serial.println("restart");
|
||||
ArduinoPlatform::SerialDebug.println("restart");
|
||||
ESP.reset();
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
|
||||
#define SerialDBG Serial
|
||||
|
||||
class EspPlatform : public ArduinoPlatform
|
||||
{
|
||||
@ -12,7 +11,7 @@ class EspPlatform : public ArduinoPlatform
|
||||
|
||||
public:
|
||||
EspPlatform();
|
||||
EspPlatform( HardwareSerial& s);
|
||||
EspPlatform( HardwareSerial* s);
|
||||
|
||||
// ip stuff
|
||||
uint32_t currentIpAddress() override;
|
||||
@ -36,4 +35,4 @@ private:
|
||||
WiFiUDP _udp;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -285,7 +285,7 @@
|
||||
#define DPT_TimePeriodHrs_Z Dpt(203, 7)
|
||||
#define DPT_UFlowRateLiter_per_h_Z Dpt(203, 11)
|
||||
#define DPT_UCountValue16_Z Dpt(203, 12)
|
||||
#define DPT_UElCurrent?A_Z Dpt(203, 13)
|
||||
#define DPT_UElCurrent_Z Dpt(203, 13)
|
||||
#define DPT_PowerKW_Z Dpt(203, 14)
|
||||
#define DPT_AtmPressureAbs_Z Dpt(203, 15)
|
||||
#define DPT_PercentU16_Z Dpt(203, 17)
|
||||
@ -368,4 +368,4 @@ class Dpt
|
||||
unsigned short index;
|
||||
bool operator==(const Dpt& other) const;
|
||||
bool operator!=(const Dpt& other) const;
|
||||
};
|
||||
};
|
||||
|
@ -6,17 +6,17 @@
|
||||
#include <Arduino.h>
|
||||
#include <FlashAsEEPROM.h>
|
||||
|
||||
SamdPlatform::SamdPlatform() : ArduinoPlatform(Serial1)
|
||||
SamdPlatform::SamdPlatform() : ArduinoPlatform(&Serial1)
|
||||
{
|
||||
}
|
||||
|
||||
SamdPlatform::SamdPlatform( HardwareSerial& s) : ArduinoPlatform(s)
|
||||
SamdPlatform::SamdPlatform( HardwareSerial* s) : ArduinoPlatform(s)
|
||||
{
|
||||
}
|
||||
|
||||
void SamdPlatform::restart()
|
||||
{
|
||||
SerialDBG.println("restart");
|
||||
ArduinoPlatform::SerialDebug.println("restart");
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
|
||||
|
@ -4,17 +4,15 @@
|
||||
|
||||
#ifdef ARDUINO_ARCH_SAMD
|
||||
|
||||
#define SerialDBG SerialUSB
|
||||
|
||||
class SamdPlatform : public ArduinoPlatform
|
||||
{
|
||||
public:
|
||||
SamdPlatform();
|
||||
SamdPlatform( HardwareSerial& s);
|
||||
SamdPlatform( HardwareSerial* s);
|
||||
|
||||
void restart();
|
||||
uint8_t* getEepromBuffer(uint16_t size);
|
||||
void commitToEeprom();
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user