Skip to content

Commit bba40bb

Browse files
committed
Fixed OpenZWave battery level for some sensor types
1 parent c22cfad commit bba40bb

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

hardware/ZWaveBase.cpp

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -461,13 +461,13 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
461461
{
462462
if (pEnergyDevice->bValidValue)
463463
{
464-
SendKwhMeter(pEnergyDevice->nodeID, pEnergyDevice->instanceID, (pDevice->hasBattery) ? pDevice->batValue : 255, pDevice->floatValue, pEnergyDevice->floatValue / pEnergyDevice->scaleMultiply, "kWh Meter");
464+
SendKwhMeter(pEnergyDevice->nodeID, pEnergyDevice->instanceID, BatLevel, pDevice->floatValue, pEnergyDevice->floatValue / pEnergyDevice->scaleMultiply, "kWh Meter");
465465
}
466466
}
467467
else
468468
{
469469
//No kWh meter, send as normal Power device
470-
SendWattMeter(pDevice->nodeID, pDevice->instanceID, (pDevice->hasBattery) ? pDevice->batValue : 255, pDevice->floatValue, "Power Meter");
470+
SendWattMeter(pDevice->nodeID, pDevice->instanceID, BatLevel, pDevice->floatValue, "Power Meter");
471471
}
472472
}
473473
else if (pDevice->devType == ZDTYPE_SENSOR_POWERENERGYMETER)
@@ -506,21 +506,21 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
506506
}
507507
if (bHaveValidPowerDevice)
508508
{
509-
SendKwhMeter(pDevice->nodeID, pDevice->instanceID, (pDevice->hasBattery) ? pDevice->batValue : 255, pPowerDevice->floatValue, pDevice->floatValue / pDevice->scaleMultiply, "kWh Meter");
509+
SendKwhMeter(pDevice->nodeID, pDevice->instanceID, BatLevel, pPowerDevice->floatValue, pDevice->floatValue / pDevice->scaleMultiply, "kWh Meter");
510510
}
511511
else
512512
{
513-
SendKwhMeter(pDevice->nodeID, pDevice->instanceID, (pDevice->hasBattery) ? pDevice->batValue : 255, 0, pDevice->floatValue / pDevice->scaleMultiply, "kWh Meter");
513+
SendKwhMeter(pDevice->nodeID, pDevice->instanceID, BatLevel, 0, pDevice->floatValue / pDevice->scaleMultiply, "kWh Meter");
514514
}
515515
}
516516
else if (pDevice->devType == ZDTYPE_SENSOR_VOLTAGE)
517517
{
518518
int sid = (int)(ID1 << 24) | (ID2 << 16) | (ID3 << 8) | ID4;
519-
SendVoltageSensor(0, sid, pDevice->batValue, pDevice->floatValue, "Voltage");
519+
SendVoltageSensor(0, sid, BatLevel, pDevice->floatValue, "Voltage");
520520
}
521521
else if (pDevice->devType==ZDTYPE_SENSOR_PERCENTAGE)
522522
{
523-
SendPercentageSensor((int)(ID1 << 24) | (ID2 << 16) | (ID3 << 8) | ID4, 0, pDevice->batValue, pDevice->floatValue, "Percentage");
523+
SendPercentageSensor((int)(ID1 << 24) | (ID2 << 16) | (ID3 << 8) | ID4, 0, BatLevel, pDevice->floatValue, "Percentage");
524524
}
525525
else if (pDevice->devType==ZDTYPE_SENSOR_AMPERE)
526526
{
@@ -545,7 +545,7 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
545545
}
546546
else if (pDevice->devType == ZDTYPE_SENSOR_UV)
547547
{
548-
SendUVSensor(ID3, ID4, pDevice->batValue, pDevice->floatValue, "UV");
548+
SendUVSensor(ID3, ID4, BatLevel, pDevice->floatValue, "UV");
549549
}
550550
else if (pDevice->devType == ZDTYPE_SENSOR_TEMPERATURE)
551551
{
@@ -560,12 +560,12 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
560560
if (!pHumDevice->bValidValue)
561561
return;
562562
uint16_t NodeID = (ID3 << 8) | ID4;
563-
SendTempHumSensor(NodeID, pDevice->batValue, pDevice->floatValue, pHumDevice->intvalue, "TempHum");
563+
SendTempHumSensor(NodeID, BatLevel, pDevice->floatValue, pHumDevice->intvalue, "TempHum");
564564
}
565565
else
566566
{
567567
uint16_t NodeID = (ID3 << 8) | ID4;
568-
SendTempSensor(NodeID, pDevice->batValue, pDevice->floatValue, "Temperature");
568+
SendTempSensor(NodeID, BatLevel, pDevice->floatValue, "Temperature");
569569
}
570570
}
571571
else if (pDevice->devType==ZDTYPE_SENSOR_HUMIDITY)
@@ -588,12 +588,12 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
588588
ID4 = pTempDevice->instanceID;
589589

590590
uint16_t NodeID = (ID3 << 8) | ID4;
591-
SendTempHumSensor(NodeID, pDevice->batValue, pTempDevice->floatValue, pDevice->intvalue, "TempHum");
591+
SendTempHumSensor(NodeID, BatLevel, pTempDevice->floatValue, pDevice->intvalue, "TempHum");
592592
}
593593
else
594594
{
595595
uint16_t NodeID = (ID3 << 8) | ID4;
596-
SendHumiditySensor(NodeID, pDevice->batValue, pDevice->intvalue, "Humidity");
596+
SendHumiditySensor(NodeID, BatLevel, pDevice->intvalue, "Humidity");
597597
}
598598
}
599599
else if (pDevice->devType == ZDTYPE_SENSOR_VELOCITY)
@@ -671,7 +671,7 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
671671
}
672672
else if (pressure >= 1029)
673673
nforecast = wsbaroforcast_sunny;
674-
SendTempHumBaroSensorFloat(pDevice->nodeID, pDevice->batValue, pTempDevice->floatValue, pHumDevice->intvalue, pDevice->floatValue, nforecast, "TempHumBaro");
674+
SendTempHumBaroSensorFloat(pDevice->nodeID, BatLevel, pTempDevice->floatValue, pHumDevice->intvalue, pDevice->floatValue, nforecast, "TempHumBaro");
675675
}
676676
}
677677
else if (pDevice->devType == ZDTYPE_SENSOR_LIGHT)
@@ -683,9 +683,7 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
683683
lmeter.id4=ID4;
684684
lmeter.dunit=pDevice->scaleID;
685685
lmeter.fLux=pDevice->floatValue;
686-
lmeter.battery_level=255;
687-
if (pDevice->hasBattery)
688-
lmeter.battery_level=pDevice->batValue;
686+
lmeter.battery_level= BatLevel;
689687
sDecodeRXMessage(this, (const unsigned char *)&lmeter, NULL, BatLevel);
690688
}
691689
else if (pDevice->devType == ZDTYPE_SENSOR_GAS)
@@ -699,14 +697,11 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
699697
}
700698
else if (pDevice->devType == ZDTYPE_SENSOR_WATER)
701699
{
702-
int battery_level = 255;
703-
if (pDevice->hasBattery)
704-
battery_level = pDevice->batValue;
705-
SendMeterSensor(ID3, ID4, battery_level, pDevice->floatValue,"Water");
700+
SendMeterSensor(ID3, ID4, BatLevel, pDevice->floatValue,"Water");
706701
}
707702
else if (pDevice->devType == ZDTYPE_SENSOR_CO2)
708703
{
709-
SendAirQualitySensor(ID3, ID4, pDevice->batValue, int(pDevice->floatValue), "CO2 Sensor");
704+
SendAirQualitySensor(ID3, ID4, BatLevel, int(pDevice->floatValue), "CO2 Sensor");
710705
}
711706
else if (pDevice->devType == ZDTYPE_SENSOR_SETPOINT)
712707
{
@@ -717,9 +712,7 @@ void ZWaveBase::SendDevice2Domoticz(const _tZWaveDevice *pDevice)
717712
tmeter.id3=ID3;
718713
tmeter.id4=ID4;
719714
tmeter.dunit=1;
720-
tmeter.battery_level=255;
721-
if (pDevice->hasBattery)
722-
tmeter.battery_level=pDevice->batValue;
715+
tmeter.battery_level= BatLevel;
723716
tmeter.temp=pDevice->floatValue;
724717
sDecodeRXMessage(this, (const unsigned char *)&tmeter, NULL, BatLevel);
725718
}

hardware/ZWaveBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class ZWaveBase : public CDomoticzHardwareBase
9595
isFLiRS=false;
9696
hasWakeup=false;
9797
hasBattery=false;
98-
batValue = 0;
98+
batValue = 255;
9999
floatValue=0;
100100
intvalue=0;
101101
bValidValue=true;

0 commit comments

Comments
 (0)