mirror of
https://github.com/thelsing/knx.git
synced 2025-09-28 17:50:25 +02:00
Cleaning
Some strange bug/feature... Information is transmitted only when the device got time from KNX, I have put if (timeStatus() == timeSet && resetPeriod != 0) { resetEnergyLoop(); } But don't know if it's enough...
This commit is contained in:
parent
7618e82c00
commit
81a0a1a164
@ -38,7 +38,7 @@ const uint8_t physicalCount = 6; // voltage,current,power_factor,power,energy,fr
|
|||||||
uint8_t percentCycle = 0; // better to define a global or read knx.paramByte each time... ?
|
uint8_t percentCycle = 0; // better to define a global or read knx.paramByte each time... ?
|
||||||
uint32_t timePeriod = 0; // same here,
|
uint32_t timePeriod = 0; // same here,
|
||||||
uint8_t resetPeriod = 0; //same here ...
|
uint8_t resetPeriod = 0; //same here ...
|
||||||
uint8_t resetEnergy = 0; // and here... disabled/day/week/month
|
//uint8_t resetEnergy = 0; // and here... disabled/day/week/month
|
||||||
|
|
||||||
bool progMode = true;
|
bool progMode = true;
|
||||||
|
|
||||||
@ -54,11 +54,10 @@ struct Physical {
|
|||||||
void loop(){
|
void loop(){
|
||||||
// unsigned long currentMillis = millis();
|
// unsigned long currentMillis = millis();
|
||||||
// Delta Change update as defined in ETS
|
// Delta Change update as defined in ETS
|
||||||
int32_t deltaPercent = ( 100 * ( _value - _lastValue ) / _value );
|
float deltaPercent = ( 100 * ( _value - _lastValue ) / _value );
|
||||||
if ( percentCycle != 0 && abs(deltaPercent) >= percentCycle )
|
if ( percentCycle != 0 && abs(deltaPercent) >= percentCycle )
|
||||||
{
|
{
|
||||||
_trigger = true;
|
_trigger = true;
|
||||||
_lastValue = _value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Refresh groupAddress value as defined in ETS since last update
|
// Refresh groupAddress value as defined in ETS since last update
|
||||||
@ -70,6 +69,7 @@ struct Physical {
|
|||||||
// UpdateGO but send to bus only if triggered by time or value change percentage
|
// UpdateGO but send to bus only if triggered by time or value change percentage
|
||||||
if (_trigger){
|
if (_trigger){
|
||||||
knx.getGroupObject(_GOaddr).value(_value, _dpt);
|
knx.getGroupObject(_GOaddr).value(_value, _dpt);
|
||||||
|
_lastValue = _value;
|
||||||
_lastMillis = millis();
|
_lastMillis = millis();
|
||||||
_trigger = false;
|
_trigger = false;
|
||||||
}else{
|
}else{
|
||||||
@ -143,7 +143,6 @@ class Blinker
|
|||||||
|
|
||||||
Blinker led = Blinker(ledPin);
|
Blinker led = Blinker(ledPin);
|
||||||
|
|
||||||
|
|
||||||
void callBackProgMode(GroupObject& go){
|
void callBackProgMode(GroupObject& go){
|
||||||
progMode = (bool)go.value();
|
progMode = (bool)go.value();
|
||||||
}
|
}
|
||||||
@ -172,7 +171,7 @@ void resetCallback(GroupObject& go)
|
|||||||
{
|
{
|
||||||
if (go.value())
|
if (go.value())
|
||||||
{
|
{
|
||||||
resetEnergy = true;
|
pzem.resetEnergy();
|
||||||
goReset.value(false);
|
goReset.value(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -181,7 +180,7 @@ void setup() {
|
|||||||
pinPeripheral(PIN_SERIAL2_RX, PIO_SERCOM);
|
pinPeripheral(PIN_SERIAL2_RX, PIO_SERCOM);
|
||||||
pinPeripheral(PIN_SERIAL2_TX, PIO_SERCOM);
|
pinPeripheral(PIN_SERIAL2_TX, PIO_SERCOM);
|
||||||
|
|
||||||
SerialUSB.begin(9600);
|
// SerialUSB.begin(9600);
|
||||||
Serial2.begin(9600);
|
Serial2.begin(9600);
|
||||||
|
|
||||||
ArduinoPlatform::SerialDebug = &SerialUSB;
|
ArduinoPlatform::SerialDebug = &SerialUSB;
|
||||||
@ -238,12 +237,17 @@ void loop() {
|
|||||||
if (knx.configured() && !progMode)
|
if (knx.configured() && !progMode)
|
||||||
{
|
{
|
||||||
refreshValueLoop();
|
refreshValueLoop();
|
||||||
resetEnergyLoop();
|
|
||||||
|
|
||||||
for (uint8_t i=0; i< physicalCount; i++)
|
for (uint8_t i=0; i< physicalCount; i++)
|
||||||
{
|
{
|
||||||
Physical[i].loop();
|
Physical[i].loop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (timeStatus() == timeSet && resetPeriod != 0)
|
||||||
|
{
|
||||||
|
resetEnergyLoop();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (progMode)
|
else if (progMode)
|
||||||
{
|
{
|
||||||
@ -257,7 +261,7 @@ void refreshValueLoop(){
|
|||||||
|
|
||||||
if (millis() - lastPzemUpdate >= pzemInterval)
|
if (millis() - lastPzemUpdate >= pzemInterval)
|
||||||
{
|
{
|
||||||
for (uint8_t i=0; i< physicalCount; i++)
|
for (uint8_t i=0; i < physicalCount; i++)
|
||||||
{
|
{
|
||||||
float isaValue;
|
float isaValue;
|
||||||
switch (i) { //maybe a pointer or reference could be nicer...
|
switch (i) { //maybe a pointer or reference could be nicer...
|
||||||
@ -282,11 +286,18 @@ void refreshValueLoop(){
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isnan(isaValue))
|
if(!isnan(isaValue))
|
||||||
{
|
{
|
||||||
Physical[i].setValue(isaValue);
|
Physical[i].setValue(isaValue);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Physical[i].setValue(-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
lastPzemUpdate = millis();
|
||||||
|
led.set(500, 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,14 +350,14 @@ void prodModeLoop(){ // run Only if progMode triggered ( at start or callback)
|
|||||||
{
|
{
|
||||||
knx.progMode(true);
|
knx.progMode(true);
|
||||||
timerProgPrevMillis = millis();
|
timerProgPrevMillis = millis();
|
||||||
led.set(500, 250);
|
led.set(50, 100);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (millis() - timerProgPrevMillis > timerProgMode) {
|
if (millis() - timerProgPrevMillis > timerProgMode) {
|
||||||
knx.progMode(false);
|
knx.progMode(false);
|
||||||
goProgMode.value(false);
|
goProgMode.value(false);
|
||||||
progMode = 0;
|
progMode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user