This is lifted straight out of the emonTH sketch. It’s the instruction to emonHub on how to decode the data, and you’ll also find this in emonhub.conf :
emonhub.conf node decoder:
See: emonhub/configuration.md at emon-pi · openenergymonitor/emonhub · GitHub
[[23]]
nodename = emonTH_5
firmware = V2.x_emonTH_DHT22_DS18B20_RFM69CW_Pulse
hardware = emonTH_(Node_ID_Switch_DIP1:OFF_DIP2:OFF)
[[[rx]]]
names = temperature, external temperature, humidity, battery, pulseCount
datacodes = h,h,h,h,L
scales = 0.1,0.1,0.1,0.1,1
units = C,C,%,V,p
In datacodes, h = signed integer (2 bytes), L = unsigned long (4 bytes)
Everything else should be reasonably obvious.
If you look further down the sketch
emonth.battery=int(analogRead(BATT_ADC)*0.0322); //read battery voltage, convert ADC to volts x10
which ties in with the 0.1 multiplier.
If you’re getting 29 as an integer value, then it’s reading the battery voltage as 2.9 V. Are you running it on the battery, and nothing else (like the FTDI programmer)? We did have some faulty units slip through at the beginning of the year, but this doesn’t appear to be the same problem.
This always assumes that you have the standard sketch in your emonTH, and that you’re decoding the values using emonHub. I’m beginning to think that’s not happening, and you’re decoding the pulse count as two integers rather than a long, and the -28 is the RSSI (signal strength).
Do you actually have a Node 23 defined in your emonHub.conf?