Skip to content

Instantly share code, notes, and snippets.

@adlerweb
Last active August 28, 2024 07:45
Show Gist options
  • Save adlerweb/3b406c642749c394ab0d929b66d7154f to your computer and use it in GitHub Desktop.
Save adlerweb/3b406c642749c394ab0d929b66d7154f to your computer and use it in GitHub Desktop.
esphome:
name: smlgw
friendly_name: smlgw
esp32:
board: esp32-c3-devkitm-1
# Enable logging
logger:
level: WARN
# Enable Home Assistant API
api:
encryption:
key: "secret"
ota:
password: "secret"
platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
output_power: 8.5
uart:
id: uart_bus
tx_pin: 2
rx_pin: 3
baud_rate: 9600
sml:
id: mysml
uart_id: uart_bus
text_sensor:
#My device reports two firmware versions
#As this would report them squentially this
#would massively spam the logs
#- platform: sml
# name: "Firmware"
# obis_code: "1-0:0.2.0"
- platform: sml
name: "Hardware-Version"
obis_code: "1-0:96.50.1"
sensor:
- platform: sml
name: "Gebäudestrom Bezug"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:1.8.0"
unit_of_measurement: kWh
accuracy_decimals: 4
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.0001
- platform: sml
name: "Gebäudestrom Einspeisung"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:2.8.0"
unit_of_measurement: kWh
accuracy_decimals: 4
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.0001
- platform: sml
name: "Spannung L1"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:32.7.0"
unit_of_measurement: V
id: u_l1
accuracy_decimals: 2
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: sml
name: "Spannung L2"
id: u_l2
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:52.7.0"
unit_of_measurement: V
accuracy_decimals: 2
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: sml
name: "Spannung L3"
id: u_l3
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:72.7.0"
unit_of_measurement: V
accuracy_decimals: 2
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: sml
name: "Strom L1"
id: i_l1
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:31.7.0"
unit_of_measurement: A
accuracy_decimals: 2
device_class: current
state_class: measurement
filters:
- multiply: 0.01
- platform: sml
name: "Strom L2"
id: i_l2
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:51.7.0"
unit_of_measurement: A
accuracy_decimals: 2
device_class: current
state_class: measurement
filters:
- multiply: 0.01
- platform: sml
name: "Strom L3"
id: i_l3
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:71.7.0"
unit_of_measurement: A
accuracy_decimals: 2
device_class: current
state_class: measurement
filters:
- multiply: 0.01
- platform: sml
name: "Wirkleistung L1"
id: p_l1
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:36.7.0"
unit_of_measurement: W
accuracy_decimals: 0
device_class: power
state_class: measurement
filters:
- multiply: 1
- platform: sml
name: "Wirkleistung L2"
id: p_l2
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:56.7.0"
unit_of_measurement: W
accuracy_decimals: 0
device_class: power
state_class: measurement
filters:
- multiply: 1
- platform: sml
name: "Wirkleistung L3"
id: p_l3
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:76.7.0"
unit_of_measurement: W
accuracy_decimals: 0
device_class: power
state_class: measurement
filters:
- multiply: 1
- platform: sml
name: "Gebäude Wirkleistung"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:16.7.0"
unit_of_measurement: W
accuracy_decimals: 0
device_class: power
state_class: measurement
filters:
- multiply: 1
- platform: sml
name: "Netzfrequenz"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:14.7.0"
unit_of_measurement: Hz
accuracy_decimals: 1
device_class: frequency
state_class: measurement
filters:
- multiply: 0.1
- platform: sml
name: "Phasenwinkel L2-L1"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:81.7.1"
unit_of_measurement: °
accuracy_decimals: 0
state_class: measurement
- platform: sml
name: "Phasenwinkel L3-L1"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:81.7.2"
unit_of_measurement: °
accuracy_decimals: 0
state_class: measurement
- platform: sml
name: "Phasenverschiebung L1"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:81.7.4"
unit_of_measurement: °
accuracy_decimals: 0
state_class: measurement
- platform: sml
name: "Phasenverschiebung L2"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:81.7.15"
unit_of_measurement: °
accuracy_decimals: 0
state_class: measurement
- platform: sml
name: "Phasenverschiebung L3"
sml_id: mysml
server_id: "000000_your_device_id"
obis_code: "1-0:81.7.26"
unit_of_measurement: °
accuracy_decimals: 0
state_class: measurement
- platform: template
name: "Scheinleistung L1"
id: s_l1
unit_of_measurement: "VA"
device_class: apparent_power
state_class: measurement
lambda: |-
return (id(u_l1).state) * (id(i_l1).state);
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Scheinleistung L2"
id: s_l2
unit_of_measurement: "VA"
device_class: apparent_power
state_class: measurement
lambda: |-
return (id(u_l2).state) * (id(i_l2).state);
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Scheinleistung L3"
id: s_l3
unit_of_measurement: "VA"
device_class: apparent_power
state_class: measurement
lambda: |-
return (id(u_l3).state) * (id(i_l3).state);
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Gebäude Scheinleistung"
id: s_total
unit_of_measurement: "VA"
device_class: apparent_power
state_class: measurement
lambda: |-
return (id(s_l1).state) + (id(s_l2).state) + (id(s_l3).state);
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Blindleistung L1"
id: q_l1
unit_of_measurement: "VAr"
device_class: reactive_power
state_class: measurement
lambda: |-
float s = id(s_l1).state;
float p = id(p_l1).state;
return sqrt(pow(s, 2) - pow(p, 2));
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Blindleistung L2"
id: q_l2
unit_of_measurement: "VAr"
device_class: reactive_power
state_class: measurement
lambda: |-
float s = id(s_l2).state;
float p = id(p_l2).state;
return sqrt(pow(s, 2) - pow(p, 2));
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Blindleistung L3"
id: q_l3
unit_of_measurement: "VAr"
device_class: reactive_power
state_class: measurement
lambda: |-
float s = id(s_l3).state;
float p = id(p_l3).state;
return sqrt(pow(s, 2) - pow(p, 2));
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Gebäude Blindleistung"
id: q_total
unit_of_measurement: "VAr"
device_class: reactive_power
state_class: measurement
lambda: |-
return (id(q_l1).state) + (id(q_l2).state) + (id(q_l3).state);
accuracy_decimals: 0
update_interval: 15s
- platform: template
name: "Leistungsfaktor L1"
id: pf_l1
unit_of_measurement: ""
device_class: power_factor
state_class: measurement
lambda: |-
return (id(p_l1).state) / (id(s_l1).state);
accuracy_decimals: 2
update_interval: 15s
- platform: template
name: "Leistungsfaktor L2"
id: pf_l2
unit_of_measurement: ""
device_class: power_factor
state_class: measurement
lambda: |-
return (id(p_l2).state) / (id(s_l2).state);
accuracy_decimals: 2
update_interval: 15s
- platform: template
name: "Leistungsfaktor L3"
id: pf_l3
unit_of_measurement: ""
device_class: power_factor
state_class: measurement
lambda: |-
return (id(p_l3).state) / (id(s_l3).state);
accuracy_decimals: 2
update_interval: 15s
- platform: template
name: "Gebäude Leistungsfaktor"
unit_of_measurement: ""
device_class: power_factor
state_class: measurement
lambda: |-
return ((id(pf_l1).state) + (id(pf_l2).state) + (id(pf_l3).state))/3;
accuracy_decimals: 2
update_interval: 15s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment