# EverBlu Water Meter - Complete Example Configuration # This example shows all available sensors and configuration options esphome: name: everblu-water-meter # Choose your board configuration below (uncomment one): # ========== ESP8266 (Adafruit HUZZAH) ========== esp8266: board: huzzah framework: version: recommended # Arduino core (explicit) # ========== ESP32 (uncomment to use instead of ESP8266) ========== # esp32: # board: esp32dev # framework: # type: arduino # Required since ESPHome 2026.1.0 (everblu_meter needs Arduino.h) # # # Note: For ESP32, change SPI pins below from GPIO14/13/12 to GPIO18/23/19 # WiFi configuration wifi: ssid: "YourWiFiSSID" password: "YourWiFiPassword" # Enable logging logger: level: DEBUG # Enable Home Assistant API api: encryption: key: "your-32-byte-base64-encoded-key-here" # Enable OTA updates ota: password: "YourOTAPassword" # Time component (required for scheduled readings) time: - platform: homeassistant id: homeassistant_time timezone: Europe/London # SPI bus shared with the CC1101 radio spi: id: main_bus clk_pin: GPIO14 mosi_pin: GPIO13 miso_pin: GPIO12 # EverBlu Meter Component 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: id: my_water_meter spi_id: main_bus # Meter identification (REQUIRED) # Enter the code printed under the barcode, with dashes. # Format on label: YY-SSSSSSS-NNN (year - serial - suffix) # The 3-digit suffix is optional. # Example (with suffix): label '21-1234567-800' -> meter_code: '21-1234567-800' # Example (without suffix): label '21-1234567-800' -> meter_code: '21-1234567' meter_code: "21-1234567-800" # Replace with your meter's code cs_pin: GPIO15 # CC1101 CS / NSS — ESP8266 Huzzah GPIO15 (D8); safe on Huzzah (onboard pull-down keeps it LOW at boot) gdo0_pin: GPIO5 # CC1101 GDO0 -> ESP8266 Huzzah GPIO5 (D1) gdo2_pin: GPIO4 # REQUIRED (v3.0.0+): CC1101 GDO2 -> ESP8266 GPIO4 (D2), hardware FIFO threshold. # Avoid SPI bus pins (GPIO12/13/14/15) and gdo0_pin. # To keep legacy SPI polling instead, remove this line and add: # disable_gdo2_fifo_management: true # Optional: set meter_type to 'gas' for gas meters (defaults to water) # Link to time component time_id: homeassistant_time # Optional: Timezone offset in MINUTES (default: 0 = UTC) # ⚠️ IMPORTANT: ESPHome's 'timezone' setting above is NOT automatically used! # You must manually set this parameter for scheduling in your local timezone. # This is a static offset (doesn't auto-adjust for DST). # Examples: 60 = UTC+1, -300 = UTC-5, 660 = UTC+11 (Melbourne summer) # timezone_offset: -240 # US Eastern EDT (UTC-4) # Optional: Reading schedule (default: Monday-Friday at 10:00 UTC) # read_hour is always in UTC - timezone_offset converts this to your local time # reading_schedule: "Monday-Sunday" # Presets: "Monday-Friday", "Monday-Saturday", "Monday-Sunday" or a single day: "Monday".."Sunday" # read_hour: 10 # Hour in UTC (0-23) # read_minute: 0 # Minute (0-59) # Optional: Read retry behaviour # max_retries: 5 # Read attempts before entering cooldown (default: 5, range 1-50) # retry_cooldown: 1h # Cooldown after max_retries failed attempts (default: 1h) # Optional: Front-end RX input attenuation (default: 0) # Only needed when the device is permanently mounted very close to the meter (< 0.5 m) # and the log shows *** NEAR-FIELD SATURATION DETECTED ***. # Values: 0 (default), 6, 12, 18 (dB — approximate actual LNA gain reduction) # rx_attenuation: 0 # Control buttons request_reading_button: name: "Read Meter Now" deep_scan_button: name: "Deep Frequency Scan" reset_frequency_button: name: "Reset Frequency Offset" stop_reading_button: name: "Stop Reading" # Prints a full wiring/radio diagnostic block to the log. Press this and attach the # output when reporting a problem. diagnostic_report_button: name: "Diagnostic Report" # Volume sensors volume: name: "Water Volume" counter: name: "Read Counter" # Battery sensor battery: name: "Meter Battery" # Radio quality sensors rssi: name: "Meter RSSI" rssi_percentage: name: "RSSI Percentage" lqi: name: "LQI" lqi_percentage: name: "LQI Percentage" # Statistics sensors total_attempts: name: "Total Read Attempts" successful_reads: name: "Successful Reads" failed_reads: name: "Failed Reads" frequency_offset: name: "Frequency Offset" tuned_frequency: name: "Tuned Frequency (MHz)" frequency_estimate: name: "Frequency Estimate" # Diagnostic text sensors meter_serial_sensor: name: "Meter Serial" meter_year_sensor: name: "Meter Year" meter_clock_sensor: name: "Meter Clock" meter_model_sensor: name: "Meter Type" reading_schedule_sensor: name: "Reading Schedule" reading_time_utc_sensor: name: "Reading Time (UTC)" # Timing sensors (24-hour format: HH:MM) time_start: name: "Reading Start Time" time_end: name: "Reading End Time" # Status text sensors status: name: "Meter Status" error: name: "Last Error" radio_state: name: "CC1101 State" timestamp: name: "Last Reading Time" history_json: name: "Meter History (JSON)" firmware_version: name: "Firmware Version" # Binary sensors active_reading: name: "Reading Active" radio_connected: name: "CC1101 Connected"