M-Bus (Meter-Bus) on Raspberry Pi Integration

Hi, I achieved that with Esphome in combination with this external component: github://SzczepanLeon/esphome-components.

In my case I’m using an ESP32 + CC1101 which supports multiple frequencies (https://aliexpress.com/item/1005008223029421.html)

Here is my sketch:

esphome:
  name: esp-004
  friendly_name: esp-004

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:
  level: DEBUG

api:
  encryption:
    key: !secret api_key_esp-004

ota:
  - platform: esphome
    password: !secret ota_pwd_esp-004

wifi:
  ssid: !secret wifi_iot_ssid
  password: !secret wifi_iot_password

time:
  - platform: sntp
    id: time_sntp

external_components:
  - source: github://SzczepanLeon/esphome-components@version_4
    refresh: 0d
    components: [ wmbus ]

wmbus:
  mosi_pin: GPIO13
  miso_pin: GPIO23
  clk_pin:  GPIO22
  cs_pin:   GPIO14
  gdo0_pin: GPIO21
  gdo2_pin: GPIO18

  led_pin: GPIO0
  led_blink_time: "1s"

  frequency: 868.950
  all_drivers: False
  sync_mode: True
  log_all: False

  mqtt:
    broker: 192.168.1.50
    username: !secret mqtt_user
    password: !secret mqtt_pwd

sensor:
  - platform: wmbus
    meter_id: !secret multical_id
    type: multical21
    key: !secret multical_key
    sensors:
      - name: "Multical21 RSSI"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"

      - name: "Multical21 Water Usage"
        field: "total"
        accuracy_decimals: 3
        unit_of_measurement: "m³"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"