sbarmen Skrevet 3. august Skrevet 3. august (endret) Jeg har lekt litt med dette siste dagene og kommet frem til en løsning som jeg liker. Kort fortalt har jeg nordpool satt opp med virkelige priser, med strømstøtte og natt-tarriff osv osv. Så den viser hva det faktisk koster. Se her (takk til @stigvi for masse inspirasjon): Jeg har tidligere brukt priceanalyzer og Node-Red men ikke vært fornøyd fordi jeg får plutselige problemer pga feil på integrasjon eller annet. Nå har jeg brukt bare rene HA automasjoner som skal sikre at det ikke blir et problem. Neste krav er at du har satt opp VVB som en climate sensor. Jeg har en temperatur sensor på VVB og et smart relé for å bryte strømmen. Temp sensor er ESP32 med en dallas_temp sensor styrt av ESPHome. Koden for ESPhome er som følger: one_wire: - platform: gpio pin: GPIO21 sensor: - platform: dallas_temp address: 0xXXXXXXXXXXXXXXXX name: "Water Heater Temperature" unit_of_measurement: "°C" force_update: true bluetooth_proxy: active: true Climate sensor settes opp i configuration.yaml (fordi du får ikke satt maks/min temp i GUI). Unique_id setter du til hva du vil, da kan du endre navn o.l. i GUI om du ønsker, men ikke påkrevd. Fordelen med at det er en climate sensor er at jeg aldri skrur av VVB. Den vil ha en "failsafe" på low temp. Det betyr at man er ganske trygg på at det aldri blir helt iskaldt vann. For å ytterligere sikre mot dette kan du redusere utslagene i automasjonen (juster ned / opp med bare 5 eller 10 grader f.eks.). climate: - platform: generic_thermostat unique_id: 123nn342wwkjnee234 name: Varmtvannsbereder heater: switch.varmtvannsbereder target_sensor: sensor.water_heater_temperature min_temp: 30 max_temp: 80 ac_mode: false target_temp: 65 Min automasjon akkurat nå er å sjekke prisen kvart på hver time, for å se om neste timen er veldig dyr, eller veldig billig sammenlignet med denne timen ( mer enn 20% differanse opp eller ned). Dersom det er tilfelle pusher vi temperaturen kraftig opp eller ned siste kvarteret. Så når Nordpool integrasjonen setter ny pris på hel time så sjekker automasjonen igjen. Dersom det er en billig time (low_price fra nordpool) så setter den ned temperaturen. Dyre timer er valgt som de 12 dyreste timene i døgnet og da setter vi ned temperaturen på climate sensoren. Jeg har også en nedjustering av temperaturen fra 00 til 05, da lader typisk også elbilen (egen automasjon for å passe på effektmaks) men dette kan jo droppes eventuelt. Til sist, dersom ingen av de andre tingene slår inn så setter man "default temperatur". Default temperatur er basert på egen hjelper som jeg kaller VVB Target. Den har jeg satt opp som hjelper i HA. I denne automasjonen bruker jeg 2 hjelpere, en input number for target temperatur, og en input_boolean for å kunne gjøre det slik at brukeren kan endre target temperatur selv på climate sensoren. Når automasjonen kjører og justerer temperaturen så slår den på input_boolean.vvb_auto_update, så "vet" den neste automasjonen at det er automatisk justering av VVB temp som pågår. Dersom brukeren skifter temperatur på climate sensoren manuelt så skjer ikke dette og da justeres Måltemp input_number. Automasjon for å justere temp automatisk på VVB: alias: Optimal styring av varmtvannsbereder basert på strømpriser trigger: - platform: time_pattern minutes: 45 id: kvart-på - platform: state entity_id: sensor.nordpool attribute: current_price id: ny-pris - platform: homeassistant event: start id: ny-pris condition: [] action: - variables: current_price: "{{ states('sensor.nordpool') | float }}" next_price: > {% set now = now().hour %} {% set next_price = state_attr('sensor.nordpool', 'today')[now + 1] if now < 23 else state_attr('sensor.nordpool', 'tomorrow')[0] %} {{ next_price }} low_price_threshold: "{{ state_attr('sensor.nordpool', 'off_peak_2') }}" high_price_threshold: "{{ state_attr('sensor.nordpool', 'max') }}" current_setpoint: "{{ states('input_number.vvb_target') | float }}" price_change_threshold: 0.2 today_prices: "{{ state_attr('sensor.nordpool', 'today') }}" sorted_prices: "{{ today_prices | sort(reverse=True) }}" top_12_prices: "{{ sorted_prices[:12] }}" - service: input_boolean.turn_on target: entity_id: - input_boolean.vvb_auto_update data: {} - choose: - conditions: - condition: trigger id: kvart-på - condition: template value_template: "{{ next_price / current_price <= (1 - price_change_threshold) }}" sequence: - service: climate.set_temperature data: entity_id: climate.varmtvannsbereder temperature: "{{ current_setpoint - 20 }}" - conditions: - condition: trigger id: kvart-på - condition: template value_template: "{{ next_price / current_price >= (1 + price_change_threshold) }}" sequence: - service: climate.set_temperature data: entity_id: climate.varmtvannsbereder temperature: "{{ current_setpoint + 20 }}" - conditions: - condition: trigger id: kvart-på sequence: [] alias: Når utløst kvart på og ingenting skal gjøres (unngå at default handling kjøres) - conditions: - condition: trigger id: ny-pris - condition: template value_template: > {% set now = now().hour %} {{ today_prices[now] in top_12_prices }} sequence: - service: climate.set_temperature data: entity_id: climate.varmtvannsbereder temperature: "{{ current_setpoint - 15 }}" - conditions: - condition: trigger id: ny-pris - condition: state entity_id: sensor.nordpool attribute: low_price state: true sequence: - service: climate.set_temperature data: entity_id: climate.varmtvannsbereder temperature: "{{ current_setpoint + 15 }}" - conditions: - condition: time after: "00:00:00" before: "05:00:00" sequence: - service: climate.set_temperature data: entity_id: climate.varmtvannsbereder temperature: "{{ current_setpoint - 15 }}" default: - service: climate.set_temperature data: entity_id: climate.varmtvannsbereder temperature: "{{ current_setpoint }}" - service: input_boolean.turn_off target: entity_id: - input_boolean.vvb_auto_update data: {} mode: single Automasjon for å justere måltemp sensor hjelper. Denne lagrer så en ny måltemp med samme offset som gjeldende innstilling. Så f.eks., dersom vi nå er på en dyr time og vi har justert ned varmen med 15 grader så kan input_number.vvb_target stå på 65 grader, climate sensoren er da på 50 grader. Dersom du justerer climate opp med 5 grader, til 55, så vil input_number.vvb_target lagres til 55+15, altså 70 grader. alias: Oppdater varmtvannsbereder måltemp hjelper description: >- Denne automasjonen endrer hjelperen som er måltemperaturen til varmtvannsberederen. Den sjekker at ikke automasjonen har endret prisen først, og så setter den setpunkt med samme offset som climate sensoren har i øyeblikket. trigger: - platform: state entity_id: climate.varmtvannsbereder attribute: temperature condition: - condition: state entity_id: input_boolean.vvb_auto_update state: "off" action: - variables: current_setpoint: "{{ state_attr('climate.varmtvannsbereder', 'temperature') | float }}" previous_setpoint: "{{ trigger.from_state.attributes.temperature | float }}" stored_target: "{{ states('input_number.vvb_target') | float }}" - choose: - conditions: - condition: template value_template: "{{ previous_setpoint == stored_target }}" sequence: - service: input_number.set_value data: entity_id: input_number.vvb_target value: "{{ current_setpoint }}" - conditions: - condition: template value_template: "{{ previous_setpoint != stored_target }}" sequence: - service: input_number.set_value data: entity_id: input_number.vvb_target value: "{{ current_setpoint + (stored_target - previous_setpoint) }}" mode: single Dette er work-in-progress, men så langt fungerer det ganske godt. Neste skritt er at jeg skal sette opp samme logikk på to varmekabler på badene, og så kan det brukes på varme i andre rom slik som stue, kjøkken, soverom osv. Fordelen med å gjøre det på denne måten er at du får god WAF. Dersom kona skifter temp på climate sensorene i GUI eller på veggen, så fungerer det som forventet. Håper dette kan være nyttig for noen. 🙂 Endret 4. august av sbarmen Liten fix i automasjon 2 Siter
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.