ESPHome Integration for Itron EverBlu Cyble Water & Gas Meters (RADIAN Protocol)
TL;DR: Read your EverBlu Cyble water or gas meter directly in Home Assistant using ESPHome + ESP8266/ESP32 + CC1101 433 MHz radio. Production-ready v2.1.0 just released!
What is this?
I’ve been working on an ESPHome component that reads Itron EverBlu Cyble Enhanced RF meters (water and gas) using the RADIAN protocol on 433 MHz. The component provides native Home Assistant integration with automatic sensor discovery-no MQTT broker needed.
If you have one of these meters installed by your utility (common in UK/EU), you can now pull real-time consumption data directly into Home Assistant:
- Water meters: readings in liters (L)
- Gas meters: readings in cubic meters (m³)
- Plus signal diagnostics (RSSI, LQI), battery life, wake/sleep times, and more
Important: The ESPHome component uses the same proven codebase as the mature MQTT firmware version. All the core CC1101 radio handling, RADIAN protocol decoding, frequency calibration, and frame validation logic is shared between both implementations. This means you get years of testing and refinement in both integration methods.
Hardware Required
- ESP8266 (Wemos D1 Mini, NodeMCU, Adafruit HUZZAH) or ESP32 DevKit
- CC1101 433 MHz transceiver module (3.3V)
- Jumper wires and USB cable
Total cost: ~$5-15 depending on your board choice.
Key Features
- Native ESPHome component with YAML configuration
- Automatic frequency calibration (wide scan on first boot, adaptive tracking)
- Multi-layer frame validation (see below for details)
- Supports both water and gas meters with proper device classes and units
- Daily scheduled readings with configurable days (Monday-Friday, etc.)
- Signal diagnostics: RSSI, LQI, battery remaining, wake/sleep windows
- Over-the-air updates via ESPHome
- Tested on ESP8266 and ESP32 with real meters
Advanced Frame Validation
The firmware implements multiple layers of validation to ensure data integrity:
-
Manchester Decoding: RADIAN protocol uses Manchester encoding (IEEE 802.3 standard). The decoder verifies bit-level transitions before accepting any frame.
-
CRC-16/KERMIT Checksum: Each RADIAN frame includes a 16-bit checksum (polynomial 0x8408, init 0x0000). Technically this is a Frame Check Sequence (FCS), not a true CRC, but it’s highly effective at catching transmission errors and corrupted frames. The firmware rejects any frame that fails this check.
-
Frame Structure Validation:
- Preamble pattern matching (0xAAAAAAAA sync word)
- Fixed-length frame verification (58 bytes expected)
- Header field sanity checks (protocol version, frame type)
- Meter serial number matching (only accepts frames from your configured meter)
-
Temporal Validation:
- Wake window verification (Time Start/End must be valid 24-hour format)
- Reading counter continuity checks (detects duplicate or out-of-sequence frames)
- Battery level sanity bounds (0-200 months typical range)
-
Signal Quality Filtering:
- RSSI threshold (configurable, default -90 dBm)
- LQI (Link Quality Indicator) assessment
- Frequency error estimation for adaptive tuning
Result: You only get data when the firmware is highly confident the reading is genuine and accurate. No false positives, no corrupted values making it into Home Assistant.
Quick Start
1. Add the external component to your ESPHome YAML:
external_components:
- source:
type: git
url: https://github.com/genestealer/everblu-meters-esp8266-improved
ref: main
path: ESPHOME-release
components: [ everblu_meter ]
refresh: 1d
everblu_meter:
meter_year: 21 # From meter label (XX-YYYYYYY-ZZZ)
meter_serial: 12345678 # Middle part only
meter_type: water # or "gas"
volume:
name: "Water Volume"
battery:
name: "Water Meter Battery"
rssi:
name: "Water Meter Signal"
2. Wire the CC1101 to your ESP board (hardware SPI pins-see wiring guide)
3. Flash and wait ~2 minutes for the automatic frequency scan on first boot
4. Watch your sensors appear in Home Assistant
Migration from MQTT Firmware
If you’re currently using the standalone MQTT version of this project, switching to ESPHome is straightforward:
- Use the same
meter_yearandmeter_serialvalues from yourprivate.h - ESPHome will auto-discover sensors with similar entity IDs
- No need to reconfigure dashboards or automations
Documentation
Full integration guide: ESPHOME/README.md
GitHub repo: genestealer/everblu-meters-esp8266-improved
Wiring diagrams: Hardware section
Legal Note
The 433 MHz ISM band is license-exempt in UK/EU for low-power use. However, intercepting radio communications may have legal implications depending on your jurisdiction. This project is intended for personal use on your own property only. Consider obtaining utility permission. See LEGAL_NOTICE.md for details.
Feedback Welcome
I’ve been testing this on real meters for several months, but I’d love to hear from the community:
- Does it work with your meter model?
- Any issues with specific board/radio combinations?
- Feature requests or improvements?
Drop a comment or open an issue on GitHub. Happy to help with setup questions!
Credits: This builds on reverse engineering work by La Maison Simon, @neutrinus, and @psykokwak. The ESPHome component is my contribution to make it easier for the Home Assistant community to use.