I’m currently working on a project to read data from my EMonTH2 sensors using an RFM69HCW module mounted on a Raspberry Pi 5 (with the Adafruit Radio Bonnet). My EMonPi system has been working for years with these sensors and I want to keep it as-is, but I’m trying to replicate the sensor functionality on the new Pi5 setup before I purchase dedicated EMonTH sensors for it.
What I’ve Done So Far:
- I have the RFM69 initialized for 433 MHz operation (using a custom Python script) and the module is successfully entering receive (RX) mode.
- My current code polls the FIFO and reads incoming data, but I’m getting unexpected results:
- The FIFO length values read from register 0x00 are extremely high (e.g., 223, 197, 253, etc.) instead of the small, expected value (around 11 bytes).
- Occasionally, when I decode the packets, the resulting data fields (such as temperatures, humidity, battery, pulse count, and RSSI) are clearly off.
What I Need to Confirm/Understand:
Packet Mode:
Are the EMonTH2 sensors using variable‑length or fixed‑length packet mode when transmitting?
If variable‑length, does the first byte represent the packet length?
Packet Format:
What is the exact packet structure of the EMonTH2 sensor data?
My assumptions are:
Byte 0: Packet length (expected to be 11 bytes for the payload),
Byte 1: Node ID,
Bytes 2–3: Internal Temperature (little‑endian, scaled by a factor, possibly 0.1 or 0.01),
Bytes 4–5: External Temperature,
Bytes 6–7: Humidity
Byte 8: Battery Voltage (×0.1 V),
Bytes 9–10: Pulse Count,
Byte 11: RSSI (raw value to be negated for dBm))
Any clarification on byte order and scaling would be extremely helpful.
RFM69 Register Settings:
Could someone please confirm the recommended RFM69 configuration settings (especially for registers controlling packet mode, modulation, sync word, packet filtering, and DataModul) for interfacing with the EMonTH2 sensors?
Are there any specific adjustments needed to ensure that the FIFO data is correctly interpreted as valid sensor packets?
Any known issues or best practices when reading the RSSI value or handling the FIFO data from the sensor transmissions?
I’d really appreciate pointers toward documentation, posts or experience from anyone who’s interfaced the EMonTH2 sensors with an RFM69 module. My goal is to ensure that my RFM69 on the Pi5 is configured exactly as needed so I can properly decode the sensor data.
I know I have asked for a lot of information, but thank you in advance for your help!