Skip to content

Commit

Permalink
ultra with s0
Browse files Browse the repository at this point in the history
  • Loading branch information
mhendriks committed May 26, 2024
1 parent 0c689a6 commit 02007fb
Showing 1 changed file with 346 additions and 0 deletions.
346 changes: 346 additions & 0 deletions ultra-p1-h2o-s0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,346 @@
substitutions:
device_name: ultra-p1-h2o
device_description: "Ultra dongle with P1 and water sensor"
friendly_name: Ultra P1 H2O
prj_version: "2024.5.1"

esphome:
name: ${device_name}
comment: "${device_description}"
name_add_mac_suffix: false
project:
name: "Smartstuff.Ultra"
version: ${prj_version}
platformio_options:
upload_speed: 1500000

esp32:
variant: esp32s3
board: esp32-s3-devkitc-1

ethernet:
type: W5500
cs_pin: 10
clk_pin: 12
mosi_pin: 11
miso_pin: 13
interrupt_pin: 14

ota:

web_server:

# improv_serial:
# next_url: http://{{ip_address}}

api:
services:
- service: p1_dongle_reboot
then:
- button.press:
id: reboot
- service: set_water_total
variables:
new_total: int
then:
- pulse_meter.set_total_pulses:
id: watermeter_pulse
value: !lambda 'return new_total;'

dashboard_import:
package_import_url: github://mhendriks/esphome-p1/ultra-p1-h2o-s0.yaml@main

# Enable logging
logger:
level: error

uart:
rx_pin:
number: 18
inverted: true
baud_rate: 115200
rx_buffer_size: 1700

dsmr:
id: dsmr_instance
receive_timeout: 200ms
max_telegram_length: 1700
request_pin:
number: 17
inverted: true

globals:
- id: tot_count
type: float
restore_value: no # aanpassen naar no indien de nieuwe waarde onder de oude ligt
initial_value: '0' # beginstand -> aanpassen via Home Assistant services
- id: pulse_rate
type: int
restore_value: no # aanpassen naar no indien de nieuwe waarde onder de oude ligt
initial_value: '1000' # pulse rate van de kWh meter -> xxx pulses / kWh


light:
- platform: status_led
name: "status led"
output: status_output
internal: true
- platform: neopixelbus
variant: WS2812
pin: 42
num_leds: 1
name: "_Status LED"
id: esp32c3_rgb_led
entity_category: config
restore_mode: ALWAYS_OFF
internal: true

switch:
- platform: template
id: status_led_switch
# name: "Status LED Switch"
optimistic: true
on_turn_on:
- light.turn_on:
id: esp32c3_rgb_led
red: 0%
green: 0%
blue: 100%
brightness: 40%
transition_length: 50ms
on_turn_off:
- light.turn_off:
id: esp32c3_rgb_led
transition_length: 50ms

output:
- platform: template
id: status_output
type: binary
write_action:
- if:
condition:
lambda: return state > 0;
then:
- if:
condition:
switch.is_off: status_led_switch
then:
switch.turn_on: status_led_switch
else:
- if:
condition:
switch.is_on: status_led_switch
then:
switch.turn_off: status_led_switch

button:
- platform: restart
name: "_Restart device"
id: reboot
- platform: factory_reset
name: "_Restart with Factory Default Settings"
- platform: template
name: "_Reset - Total Energy"
id: button_reset_total
on_press:
- pulse_meter.set_total_pulses:
id: pulse
value: 0

binary_sensor:
- platform: gpio
pin:
number: 0
inverted: true
mode:
input: true
pullup: true
name: _PushButton
on_press:
then:
- switch.toggle: status_led_switch

time:
- platform: homeassistant
id: homeassistant_time
timezone: "Europe/Amsterdam"

sensor:
- platform: pulse_meter
name: "Watermeter pulse"
pin:
number: 46
mode:
input: true
pullup: true
id: watermeter_pulse
state_class: measurement
unit_of_measurement: 'L'
device_class: water
internal_filter: 13us
internal_filter_mode: EDGE
icon: mdi:flash-outline
accuracy_decimals: 0
total:
name: "Water Total"
device_class: water
state_class: total_increasing
icon: mdi:water
unit_of_measurement: L
accuracy_decimals: 0

- platform: pulse_meter
id: pulse
name: Current Power
pin:
number: 45
mode:
input: true
pullup: true #v3.5 aanzetten
state_class: measurement
unit_of_measurement: 'W'
device_class: power
internal_filter: 100ms
internal_filter_mode: EDGE
icon: mdi:flash-outline
filters:
#- multiply: 0.06 # (60s/1000 pulses per kWh)
- lambda: return x * ((60.0 / id(pulse_rate)) * 1000.0);
total:
name: "S0 Total Energy"
id: pulse_tot
unit_of_measurement: "kWh"
icon: mdi:circle-slice-3
state_class: total_increasing
device_class: energy
accuracy_decimals: 3
filters:
- lambda: return x * (1.0 / id(pulse_rate));

- platform: total_daily_energy
name: 'S0 Daily Energy'
id: s0_daily
power_id: pulse
unit_of_measurement: 'kWh'
icon: mdi:circle-slice-3
state_class: total_increasing
device_class: energy
accuracy_decimals: 3
filters:
# Multiplication factor from W to kW is 0.001
- multiply: 0.001

- platform: dsmr
# energy_delivered_lux:
# name: "Energy Consumed Luxembourg"
# state_class: total_increasing
energy_delivered_tariff1:
name: "Energy Consumed Tariff 1"
state_class: total_increasing
energy_delivered_tariff2:
name: "Energy Consumed Tariff 2"
state_class: total_increasing
# energy_returned_lux:
# name: "Energy Produced Luxembourg"
# state_class: total_increasing
energy_returned_tariff1:
name: "Energy Produced Tariff 1"
state_class: total_increasing
energy_returned_tariff2:
name: "Energy Produced Tariff 2"
state_class: total_increasing
power_delivered:
name: "Power Consumed"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
power_returned:
name: "Power Produced"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
electricity_failures:
name: "Electricity Failures"
icon: mdi:alert
electricity_long_failures:
name: "Long Electricity Failures"
icon: mdi:alert
voltage_l1:
name: "Voltage Phase 1"
voltage_l2:
name: "Voltage Phase 2"
voltage_l3:
name: "Voltage Phase 3"
current_l1:
name: "Current Phase 1"
current_l2:
name: "Current Phase 2"
current_l3:
name: "Current Phase 3"
power_delivered_l1:
name: "Power Consumed Phase 1"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
power_delivered_l2:
name: "Power Consumed Phase 2"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
power_delivered_l3:
name: "Power Consumed Phase 3"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
power_returned_l1:
name: "Power Produced Phase 1"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
power_returned_l2:
name: "Power Produced Phase 2"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
power_returned_l3:
name: "Power Produced Phase 3"
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 1000
gas_delivered:
name: "Gas Consumed"
state_class: total_increasing
gas_delivered_be:
name: "Gas Consumed Belgium"
state_class: total_increasing
- platform: uptime
name: "_Uptime"

text_sensor:
- platform: dsmr
identification:
name: "DSMR Identification"
p1_version:
name: "DSMR Version"
p1_version_be:
name: "DSMR Version Belgium"
- platform: version
name: "_ESPHome Version"
hide_timestamp: true

0 comments on commit 02007fb

Please sign in to comment.