Hello There,
i have some Battery Nodes with DHT22. I force send any 30min. Hum/Temp/BatteryPercent and as addon Battery Voltage.
Everythink is fine but i received the BatteryVoltage only one Time since start. I define a MultiSensor in the config.json:
{
"class": "MySensorsMulti",
"id": "multi1",
"name": "Voltage Sensors",
"attributes": [
{
"name": "BattVoltage Kinderzimmer",
"nodeid": 14,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Kinderzimmer: ",
"unit": "V"
},
{
"name": "BattVoltage Schlafzimmer",
"nodeid": 15,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Schlafzimmer: ",
"unit": "V"
},
{
"name": "BattVoltage Bad",
"nodeid": 16,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Bad: ",
"unit": "V"
},
{
"name": "BattVoltage Dusche",
"nodeid": 17,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Dusche: ",
"unit": "V"
},
{
"name": "BattVoltage Flur",
"nodeid": 18,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Flur: ",
"unit": "V"
},
{
"name": "BattVoltage Arbeitszimmer",
"nodeid": 19,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Arbeitszimmer: ",
"unit": "V"
},
{
"name": "BattVoltage Wohnzimmer",
"nodeid": 20,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Wohnzimmer: ",
"unit": "V"
},
{
"name": "BattVoltage Kueche",
"nodeid": 21,
"sensorid": 3,
"type": "float",
"acronym": "Spannung Küche: ",
"unit": "V"
},
{
"name": "BattVoltage HWR",
"nodeid": 22,
"sensorid": 3,
"type": "float",
"acronym": "Spannung HWR: ",
"unit": "V"
}
]
}
Part of my Code from Mysensors:
if (batterie_check >= 30 || first_run <= 2) {
delay(500);
int inputValue = analogRead(BATTERY_SENSE_PIN);
float voltageDividerFactor = (R1 + R2) / R2;
float maxValue = voltageDividerFactor * VREF;
float voltsPerBit = maxValue / ADC_PRECISION;
float batteryVoltage = voltsPerBit * inputValue;
Serial.print("Battery Voltage: ");
Serial.print(batteryVoltage);
Serial.println(" V");
gw.send(msgVolt.set(batteryVoltage, 1));
int batteryPercentage = ((batteryVoltage - VMIN) / (VMAX - VMIN)) * 100;
Serial.print("Battery percent: ");
Serial.print(batteryPercentage);
Serial.println(" %");
gw.sendBatteryLevel(batteryPercentage);
batterie_check = 1;
first_run++;
} else {
batterie_check++;
}
Thanks!