JensenNick / huawei_solar_pees

Power, Energy and Economy Sensors in Home Assistant
MIT License
35 stars 5 forks source link

Update huawei_solar_pees.yaml #31

Closed JacobsenKim closed 7 months ago

JacobsenKim commented 7 months ago

Price sensor only need to be edit 1 place in 2 lines

Update price at start of HA, and every time Price sensor is change state.

Skærmbillede fra 2024-02-11 22-03-24

JensenNick commented 7 months ago

@JacobsenKim Fedt. Endnu engang tak for dit input. Det er så meget mere effektivt at have en at spare med. Jeg vil så gerne give dig lidt "street credit" så du kan blive noteret som "contributor" i det mindste. Jeg havde håbet på en løsning der kunne holdes i huawei_solar_pees_input.yaml, således at man slet ikke skal ind i "original" filen huawei_solar_pees.yaml og rode og sådan den er lige til at udskifte 1:1. Har ikke testet, men tænker måske at din løsning er lige til at overføre. Kunne man ikke også "nøjes" med input_text. Så skal man ikke angive min, max m.v. Tanken var at jeg skal have lavet et felt til Lovelace card hvor man skriver navnet på sin pris sensor og så "fungerer det".

Alle mine delta prissensorer _tt er afhængige af prissensoren som trigger. Muligvis har du kontrolleret at det virker - du nævnte noget om at priserne opdaterede? Jeg vil gerne bruge lidt tid på at undersøge regex_replace - det ville være et meget "clean cut", hvis muligt.

PS: Med "clean" så mener jeg at pris sensoren bliver sat ind i huawei_solar_pees.yaml, så der ikke er en omvej (til _input.yaml) når den først er sat, men det kan være at jeg har misforstået hvorledes regex_replace fungerer.

JensenNick commented 7 months ago

Arbejder på en template sensor der default heder energi_dat_service. Tænkte at det vil være elegant til de der ikke har meget forstand på HA eller yaml at de bare kunne installere unde at skulle sætte noget op. Men kan ikke få den til at hente prisen fra sensor navngivet med input_text.

i _pees_input.yaml

input_text:
## ------------------
## Electricity Prices
electricity_price_import:
name: "Electricity Price Import"
electricity_price_export:
name: "Electricity Price Export"

i _pees.yaml

template:
- sensor:
## ------------------
## Electricity Prices
- name: "Electricity Price Import (ts)"
unique_id: electricity_price_import_ts
unit_of_measurement: DKK
state_class: measurement
state: >
{% if not is_state('input_text.electricity_price_import', '') %}
{% set price_import = states('input_text.electricity_price_import') %}
{{ states('price_import') | float(0) }}
{% else %}
{{ states('sensor.energi_data_service') | float(0) }}
{% endif %}
- name: "Electricity Price Export (ts)"
unique_id: electricity_price_export_ts
unit_of_measurement: DKK
state_class: measurement
state: >
{% if not is_state('input_text.electricity_price_export', '') %}
{% set price_export = states('input_text.electricity_price_export') %}
{{ states('price_export') | float(0) }}
{% else %}
{{ states('sensor.energi_data_service_salg') | float(0) }}
{% endif %}
JensenNick commented 7 months ago

@JacobsenKim Jeg tror at jeg har "knækket koden". Nogle gange skal man bare prøve det det virker for enkelt til at være sandt... ingen automatisation eller behov for genstart, med fallback til energi data service... Havde ikke fantasi til at forestille mig at states af states ville fungere... Det var lidt tricky med is not is_states... ' ' fordi has_value virker ikke - den siger der er en værdi selvom at input_text er tomt.

_pees_input.yaml

input_text:
## ------------------
## Electricity Prices
electricity_price_import:
name: "Electricity Price Import"
electricity_price_export:
name: "Electricity Price Export"

_pees.yaml

template:
- sensor:
## ------------------
## Electricity Prices
- name: "Electricity Price Import (ts)"
unique_id: electricity_price_import_ts
unit_of_measurement: DKK
state_class: measurement
state: >
{% if not is_state('input_text.electricity_price_import', '') %}
{{ states ( states('input_text.electricity_price_import')) | float(0)}}
{% else %}
{{ states('sensor.energi_data_service') | float(0) }}
{% endif %}
- name: "Electricity Price Export (ts)"
unique_id: electricity_price_export_ts
unit_of_measurement: DKK
state_class: measurement
state: >
{% if not is_state('input_text.electricity_price_export', '') %}
{{ states ( states('input_text.electricity_price_export')) | float(0)}}
{% else %}
{{ states('sensor.energi_data_service_salg') | float(0) }}
{% endif %}
JacobsenKim commented 7 months ago

Fedt. Endnu engang tak for dit input. Det er så meget mere effektivt at have en at spare med. Jeg vil så gerne give dig lidt "street credit" så du kan blive noteret som "contributor" i det mindste. Jeg havde håbet på en løsning der kunne holdes i huawei_solar_pees_input.yaml, således at man slet ikke skal ind i "original" filen huawei_solar_pees.yaml og rode og sådan den er lige til at udskifte 1:1.

bare flyt koden ind i den fil du vil have den i., koden er faktisk lavet i huawei_solar_pees_input.yaml, også flyttet over i pees da jeg tænkte det var der priserne var brugt, men bare flyt de 2 input_number sensor og auto over i huawei_solar_pees_input.yaml,

Alle mine delta prissensorer _tt er afhængige af prissensoren som trigger. Muligvis har du kontrolleret at det virker - du nævnte noget om at priserne opdaterede?

ja alt kører som før, de 2 sensor her bliver opdateret med prisen fra pris sensor, hver gang pris sensor ændre pris og når HA starter så prisen altid er 1til1 med pris sensor.

# ------------
# input_number
# ------------
input_number:
# IMPORT PRICE SENSOR FOR PEES set by automation PEES Update Import Price Sensor
  import_price_sensor:
    name: Import Price
    icon: mdi:cash-minus
    unit_of_measurement: "DDK"
    min: -100
    max: 100
    step: 0.1
    mode: box
# EXPORT PRICE SENSOR FOR PEES set by automation PEES Update Export Price Sensor
  export_price_sensor:
    name: Export Price
    icon: mdi:cash-plus
    unit_of_measurement: "DDK"
    min: -100
    max: 100
    step: 0.1
    mode: box

De 2 sensor er så indsat in koden som energi sensor, så man ikke skal rode i koden men kun automation

Skærmbillede fra 2024-02-12 11-25-57

Ang. automation, det er muligt at have den i en seperat fil, når det hele er startet op kan man gå ind i automation og migrere automation, der efter slette filen, nu kan man ændre sensor via automation gui siden i HA. Det er kun hvis som mig kører med med anden sensor end EnergiData

automation:
  # IMPORT PRICE SENSOR FOR PEES
  - id: '1707675434179'
    alias: PEES Update Import Price Sensor
    description: Update Import Price Sensor for PEES input_number.import_price_sensor
    trigger:
      - platform: state
        entity_id:
          - sensor.nordpool_kwh_dk1_dkk_2_095_025 # Update with your import price sensor
      - platform: homeassistant
        event: start
    condition: []
    action:
      - service: input_number.set_value
        target:
          entity_id: input_number.import_price_sensor
        data:
          value: "{{ states('sensor.nordpool_kwh_dk1_dkk_2_095_025') }}" # Update with your import price sensor
    mode: single

  # EXPORT PRICE SENSOR FOR PEES
  - id: '1707675434279'
    alias: PEES Update Export Price Sensor
    description: Update Export Price Sensor for PEES input_number.export_price_sensor
    trigger:
      - platform: state
        entity_id:
          - sensor.nordpool_kwh_dk1_dkk_5_095_0  # Update with your export price sensor
      - platform: homeassistant
        event: start
    condition: []
    action:
      - service: input_number.set_value
        target:
          entity_id: input_number.export_price_sensor
        data:
          value: "{{ states('sensor.nordpool_kwh_dk1_dkk_5_095_0') }}" # Update with your export price sensor
    mode: single

Skærmbillede fra 2024-02-12 11-19-58

Skærmbillede fra 2024-02-12 11-20-42

Men jeg vil da lige prøve den text_input ting og se om den kan tage sensoren rent.

Jeg forstår ikke hvordan du vil benytte regex, da den jo skal kigge efter en sensor vi ikke kender. (hvad den skal søge efter er vel den sensor brueren skriver ind og det kan være alt muligt.

JensenNick commented 7 months ago

@JacobsenKim Jeg har lige opdateret alpha_004. Prøv lige at hente den ned derfra - inkl. card og input. Der var rettelse som lige er commited. Vi har kun _sale og ikke _salg :-).

PS: Har kun kontrolleret i TEMPLATE.

JacobsenKim commented 7 months ago

@JacobsenKim Jeg tror at jeg har "knækket koden". Nogle gange skal man bare prøve det det virker for enkelt til at være sandt... ingen automatisation eller behov for genstart, med fallback til energi data service... Havde ikke fantasi til at forestille mig at states af states ville fungere... Det var lidt tricky med is not is_states... ' ' fordi has_value virker ikke - den siger der er en værdi selvom at input_text er tomt.

_pees_input.yaml

input_text:
  ## ------------------
  ## Electricity Prices
  electricity_price_import:
    name: "Electricity Price Import"
  electricity_price_export:
    name: "Electricity Price Export"

_pees.yaml

template:
  - sensor:
      ## ------------------
      ## Electricity Prices
      - name: "Electricity Price Import (ts)"
        unique_id: electricity_price_import_ts
        unit_of_measurement: DKK
        state_class: measurement
        state: >
          {% if not is_state('input_text.electricity_price_import', '') %}
            {{ states ( states('input_text.electricity_price_import')) | float(0)}}
          {% else %}
            {{ states('sensor.energi_data_service') | float(0) }}
          {% endif %}
      - name: "Electricity Price Export (ts)"
        unique_id: electricity_price_export_ts
        unit_of_measurement: DKK
        state_class: measurement
        state: >
          {% if not is_state('input_text.electricity_price_export', '') %}
            {{ states ( states('input_text.electricity_price_export')) | float(0)}}
          {% else %}
            {{ states('sensor.energi_data_service_salg') | float(0) }}
          {% endif %}

Har lige prøvet din metode og det ser ud til at virke

Skærmbillede fra 2024-02-12 11-59-01

Skærmbillede fra 2024-02-12 11-44-43

JensenNick commented 7 months ago

@JacobsenKim Det er klart en MAJOR 2.0 det her :-). No backwords compatibility - YES! :-). Skal få kigget på fejlen med economy sensorerne ifm. opstart nu.

JacobsenKim commented 7 months ago

@JacobsenKim Det er klart en MAJOR 2.0 det her :-). No backwords compatibility - YES! :-). Skal få kigget på fejlen med economy sensorerne ifm. opstart nu.

:+1:

Har leget lidt med input_text metoden og det virker bare som det skal i templates:-D

Tilføjet ikon

input_text:
  ## ------------------
  ## Electricity Prices
  electricity_price_import:
    name: "Electricity Price Import"
    icon: mdi:cash-minus
  electricity_price_export:
    name: "Electricity Price Export"
    icon: mdi:cash-plus

Skærmbillede fra 2024-02-12 12-16-19

Nu vil jeg nulstille VM og prøve den nye

opdateret alpha_004. Prøv lige at hente den ned derfra - inkl. card og input.

JacobsenKim commented 7 months ago

Jeg ville vælge "flise" til de 2 så man ikke kommer til at rette i sensor tekst i gui

Med flise skal man klikke på den for så at ændre

Skærmbillede fra 2024-02-12 13-09-18

square: false
type: grid
cards:
  - type: tile
    entity: input_text.electricity_price_import
    view_layout:
      position: sidebar
  - type: tile
    entity: input_text.electricity_price_export
    view_layout:
      position: sidebar
columns: 1
view_layout:
  position: sidebar
title: Electricity Price Sensor
JensenNick commented 7 months ago

Jeg ville vælge "flise" til de 2 så man ikke kommer til at rette i sensor tekst i gui

Kiggede også på den. Flise er bare ikke en del af "standard" pakken. Den ligger i UI Lovelace Minimalist. Overvejer igen...

JacobsenKim commented 7 months ago

opdateret alpha_004. Prøv lige at hente den ned derfra - inkl. card og input.

Jeg får ingen pris med den nye pakke selv om sensor viser pris, har aktiveret alle _ps sensor, så det burde køre

Skærmbillede fra 2024-02-12 13-47-18

Skærmbillede fra 2024-02-12 13-46-44

Jeg har fundet fejlen

electricity_price_export_ts

mangler sensor.

sensor.electricity_price_export_ts

samme for import

Skærmbillede fra 2024-02-12 14-29-45

JacobsenKim commented 7 months ago

Kiggede også på den. Flise er bare ikke en del af "standard" pakken. Den ligger i UI Lovelace Minimalist. Overvejer igen...

Den er her, så burde være en del af std. HA https://www.home-assistant.io/dashboards/tile/

JensenNick commented 7 months ago

Kiggede også på den. Flise er bare ikke en del af "standard" pakken. Den ligger i UI Lovelace Minimalist. Overvejer igen...

Den er her, så burde være en del af std. HA https://www.home-assistant.io/dashboards/tile/

Du har ret. Jeg havde kigget på det. Den kræver at man har vælger en entity når kortet sættes op - det syntes jeg virkede lidt forkert. Tanken var at Lovelace cardet var optional. Ambitionen var lidt at ramme bredt, også dem der nærmest bare vil "plug n' play". Jeg tænker at det bla. betyder at hvis man ikke ønsker en effektivitets korrigeret sensor eller egne pris sensorer så skulle man kunne copy/paste package filen og det var det. Med IF > ELSE på de nye elpris sensorer vil det selvfølgeligt være en mulighed, da der er fall back til EDS. Hmmm...

PS: Jeg ledte efter en decideret dropdown "entity menu", men syntes ikke at jeg kunne finde en. Det undrer mig lidt, for jeg mener at der er sådan en.

JacobsenKim commented 7 months ago

Kiggede også på den. Flise er bare ikke en del af "standard" pakken. Den ligger i UI Lovelace Minimalist. Overvejer igen...

Den er her, så burde være en del af std. HA https://www.home-assistant.io/dashboards/tile/

Du har ret. Jeg havde kigget på det. Den kræver at man har vælger en entity når kortet sættes op - det syntes jeg virkede lidt forkert. Tanken var at Lovelace cardet var optional. Ambitionen var lidt at ramme bredt, også dem der nærmest bare vil "plug n' play". Jeg tænker at det bla. betyder at hvis man ikke ønsker en effektivitets korrigeret sensor eller egne pris sensorer så skulle man kunne copy/paste package filen og det var det. Med IF > ELSE på de nye elpris sensorer vil det selvfølgeligt være en mulighed, da der er fall back til EDS. Hmmm...

PS: Jeg ledte efter en decideret dropdown "entity menu", men syntes ikke at jeg kunne finde en. Det undrer mig lidt, for jeg mener at der er sådan en.

Om det er tile eller den anden gør det ikke minde plug and play, ønsker man ikke stille på det kan man jo bare undlade kortet, om det er med tile eller den anden hvor man retter direkte i fromt end.

Hvordan vil du lave en drop down når du ikke kender brugerens sensor ?

JensenNick commented 7 months ago

Hvordan vil du lave en drop down når du ikke kender brugerens sensor ?

Jeg mener at der fås entity dropdown list allerede, men usikker på om det eks. kun omfatter lyskilder "light" eller kontakter "switch". Den søger blandt tilgængelige enities.

JensenNick commented 7 months ago

Hvordan vil du lave en drop down når du ikke kender brugerens sensor ?

Jeg mener at der fås entity dropdown list allerede, men usikker på om det eks. kun omfatter lyskilder "light" eller kontakter "switch". Den søger blandt tilgængelige enities.

Det er denne jeg har set, men den heller ikke en del af standard pakken.

https://github.com/thomasloven/lovelace-auto-entities?tab=readme-ov-file

JacobsenKim commented 7 months ago

Hvordan vil du lave en drop down når du ikke kender brugerens sensor ?

Jeg mener at der fås entity dropdown list allerede, men usikker på om det eks. kun omfatter lyskilder "light" eller kontakter "switch". Den søger blandt tilgængelige enities.

Det er denne jeg har set, men den heller ikke en del af standard pakken.

https://github.com/thomasloven/lovelace-auto-entities?tab=readme-ov-file

Jo men ser samme problem, hvad skal den søger på, her kender de jo eks. light. så det søger de på også om de er on eller off, men hvad hedder peter poul hansen pris sensor, det ved du ikke så du kan ikke sætte en søg op på noget vi ikke kender, andre drop down jeg har kigget på skal man også definere en liste, hvad vi ved er at det nok er en sensor.* men det giver en lang liste og HA kan ikke lide noget over 255 tegn.

Jeg tror du har den bedste løsning nu hvor dem der ikke bruger default sensor bare skriver sin sensor ind også er det fixed. Dem der bruger default kan slette pris sensor fra lovelance.

JacobsenKim commented 7 months ago

smid denne i template, den laver en liste over sensor.

Print out a list of all the sensor sorted by entity_id:
{% for state in states.sensor | sort(attribute='entity_id') %}
  {{ state.entity_id }}
{% endfor %}