Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

haraldov

Medlemmer
  • Innlegg

    216
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    8

Innlegg skrevet av haraldov

  1. Jeg bruker en Appdaemon app som jeg er godt fornøyd med som heter ad-automoli https://github.com/benleb/ad-automoli for å styre lys. .

    On 19/03/2024 at 12:16, mk1 black limited said:

    1. Jeg vil ha forskjellig lysnivå basert på når på døgnet det er

    2. Jeg vil at lyset ikke skal slå seg på i det hele tatt dersom en variabel (helper) er satt

    1. Jeg bruker flere HA scener som har forskjellig lysstyrke og varme

    2. Se på  disable_switch_entities:

     

    En annen app jeg også er fornøyd med når jeg bruker Appdaemon er ControllerX, https://xaviml.github.io/controllerx/ som gjør det veldig enkelt å sette opp fjernkontroller for å styre lys eller media. 

     

    Jeg vil også anbefale Schedy https://hass-apps.readthedocs.io/en/stable/apps/schedy/ når du først bruker Appdaemon. Den beste multi purpose scheduler som finnes for HA, mener nå jeg. 

  2. Har ikke kjøpt noe ny z-wave kontroller ennå. Aeotec Gen 5+ fungerer fortsatt fint.

    Vurderer likevel å kjøpe Zooz - ZST10-700 som Tronika selger. Denne er støtte i Home Assistent https://www.home-assistant.io/docs/z-wave/controllers/

    Kunne også vurdert zooz 800serie, men NVM Backup/Restore er ennå ikke støttet for 800 serie.

     

    3 hours ago, Terje Klungervik said:

    Aeotec gen7 kontrolleren der zwave nettet bare knelte. "Controller unable to transmitt".

    En ting du kunne ha prøvd er å bygge opp et mer stabilt z-wave mesh nettverk med flere zwave repetere. Selv om antennen på kontrolleren er dårlig vil zwave repetere som er nærme kontrolleren videresende meldinger fra batteri noder eller andre noder som også er zwave repetere. Mer informasjon her: https://docs2.hubitat.com/how-to/build-a-solid-zwave-mesh 

  3.  

    On 03/02/2024 at 18:22, minim said:

    Er det Zigbee2mqtt som er tingen for conbee 2 adapter og HA også?

     

    Du har tre valg og det er ZHA som er innebygd i Home Assistant (https://www.home-assistant.io/integrations/zha/) og Deconz (https://www.home-assistant.io/integrations/deconz/) og zigbee2mqtt du må kjøre som en Home Assistant addon. Conbee 2 er støttet i alle de tre zigbee løsningene. 

     

    Jeg bruker zha nå etter å ha brukt deconz og deretter zigbee2mqtt tidligere. Fordelen med zha er den tette intergrasjonen med home assistant. Ulempen er ikke så god støtte for alle zigbee enheter. Men kjøper en riktig enhet så slipper man mye av dette bryet. Blackadder har en godt oppdatert liste: https://zigbee.blakadder.com/zha.html

     

    Zigbee2mqtt bruker nok de fleste. God zigbee enhet støtte og godt bruker webgrensesnitt. Kommuniserer med Home Assistant ved hjelp av mqtt.

    • Like 1
  4. For

    3 hours ago, torsteint said:

    Skjønner, er det noe og hente på dette da?

     

    Forfatter av programmet mener at en kan spare 5 % og 8% daglig med lineær optimisering enn å bruke en regel basert fremgangsmåte.

    Kilde: https://community.home-assistant.io/t/emhass-an-energy-management-for-home-assistant/338126

     

    Men det blir likevel ikke mye i kroner på å spare strøm (ENØK tiltak) når vi har tidenes beste strømstøtte https://www.nrk.no/norge/xl/de-som-tjener-best_-fikk-mest-stromstotte-1.16638845

     

  5. Nei, machine learning forecast (ml forecast) av ditt historiske strømforbruk vil ikke forsvinne. ml forecast data lagres og brukes når du bruker mpc til å optimere den beste strømsparing. 

    image.png.7f15a79b71ac43bced35655f27b686db.png 

     

    Model Predictive Control (mpc) eller day-ahead optimisering kan bruke forecast data om historisk strømforbruk (naive eller ml forecast data), strømproduksjon fra solceller, strømpris for salg av solcellestrøm og kjøp av importert strøm til å lage en 24 timers forecast av hvilke tidspunkter det er best å bruke eller spare strøm. Håper dette hjelper.  

    image.png.2d9cb21010709fc054835f50759c58ce.png

  6. Er ikke sikker på om jeg svarer på spørsmålet ditt, men her hvordan jeg bruker mlforecast i emhass.

     

    Jeg bruker ml forecast i emhass med default verdier (https://emhass.readthedocs.io/en/latest/mlforecaster.html) bortsett fra at jeg bruker "days_to_retrieve" = 10 i rest kommandoene for å spesifisere 10 dager med sensordata som mlforecast skal hente ut i fra homeassistant databasen. Dette er data fra "sensor.power_load_no_var_loads". Skal helst være flere dager enn dette. Jeg bruker også i "num_lags" = 24 (tilsvarer 24 timer i døgnet) da jeg bruker nordpool data som har strømpriser for hver time.

     

    rest_command:
      ml_forecast_fit:
        url: http://localhost:5000/action/forecast-model-fit
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          "days_to_retrieve": 10,
          "num_lags": 24
          }
    
      ml_forecast_tune:
        url: http://localhost:5000/action/forecast-model-tune
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          }

     

    Kjører hver uke denne automatiseringen for å oppdatere mlforecast fit:

    alias: EMHASS ml forecaster model fit each sunday 23:05
    description: ""
    trigger:
      - platform: time
        at: "23:05:00"
    condition:
      - condition: time
        weekday:
          - sun
    action:
      - service: rest_command.ml_forecast_fit
        data: {}
    mode: single

     

    og deretter ml forecast tune:

    alias: EMHASS ml forecaster model tune each sunday 23:15
    description: ""
    trigger:
      - platform: time
        at: "23:15:00"
    condition:
      - condition: time
        weekday:
          - sun
    action:
      - service: rest_command.ml_forecast_tune
        data: {}
    mode: single

     

     I loggen ser det slik ut etter å ha kjørt mlforecast automatiseringen.

    2023-12-21 17:29:24,348 - web_server - INFO - Setting up needed data
    2023-12-21 17:29:24,461 - web_server - INFO - Retrieve hass get data method initiated...
    2023-12-21 17:29:57,908 - web_server - INFO -  >> Performing a machine learning forecast model fit...
    2023-12-21 17:29:57,910 - web_server - INFO - Performing a forecast model fit for load_forecast
    2023-12-21 17:29:57,930 - web_server - INFO - Training a KNeighborsRegressor model
    2023-12-21 17:29:58,042 - web_server - INFO - Elapsed time for model fit: 0.11151599884033203
    2023-12-21 17:29:58,128 - web_server - INFO - Prediction R2 score of fitted model on test data: -0.333963984019525
    2023-12-21 17:30:00,257 - web_server - INFO - Setting up needed data
    2023-12-21 17:30:00,265 - web_server - INFO -  >> Publishing data...
    2023-12-21 17:30:00,265 - web_server - INFO - Publishing data to HASS instance
    2023-12-21 17:30:00,330 - web_server - INFO - Successfully posted to sensor.p_pv_forecast = -6.44
    2023-12-21 17:30:00,375 - web_server - INFO - Successfully posted to sensor.p_load_forecast = 1917.72
    2023-12-21 17:30:00,407 - web_server - INFO - Successfully posted to sensor.p_deferrable0 = 1964.0
    2023-12-21 17:30:00,437 - web_server - INFO - Successfully posted to sensor.p_deferrable1 = -5331.21
    2023-12-21 17:30:00,466 - web_server - INFO - Successfully posted to sensor.p_deferrable2 = 2193.0
    2023-12-21 17:30:00,499 - web_server - INFO - Successfully posted to sensor.p_deferrable3 = 0.0
    2023-12-21 17:30:00,528 - web_server - INFO - Successfully posted to sensor.p_deferrable4 = 1450.0
    2023-12-21 17:30:00,564 - web_server - INFO - Successfully posted to sensor.p_deferrable5 = 0.0
    2023-12-21 17:30:00,592 - web_server - INFO - Successfully posted to sensor.p_deferrable6 = 3110.06
    2023-12-21 17:30:00,621 - web_server - INFO - Successfully posted to sensor.p_grid_forecast = 5310.0
    2023-12-21 17:30:00,646 - web_server - INFO - Successfully posted to sensor.total_cost_fun_value = -202.03
    2023-12-21 17:30:00,671 - web_server - INFO - Successfully posted to sensor.optim_status = Infeasible
    2023-12-21 17:30:00,702 - web_server - INFO - Successfully posted to sensor.unit_load_cost = 1.4
    2023-12-21 17:30:00,734 - web_server - INFO - Successfully posted to sensor.unit_prod_price = 0.065
    2023-12-21 17:30:31,107 - web_server - INFO - Setting up needed data
    2023-12-21 17:30:31,117 - web_server - INFO - Retrieve hass get data method initiated...
    2023-12-21 17:31:00,751 - web_server - INFO -  >> Performing a machine learning forecast model tune...
    2023-12-21 17:31:00,757 - web_server - INFO - Bayesian hyperparameter optimization with backtesting
    Number of models compared: 70,
             10 bayesian search in each lag configuration.
    
    lags grid:   0%|          | 0/7 [00:00<?, ?it/s]
    lags grid:  14%|█▍        | 1/7 [00:09<00:59,  9.97s/it]
    lags grid:  29%|██▊       | 2/7 [00:11<00:25,  5.17s/it]
    lags grid:  43%|████▎     | 3/7 [00:13<00:14,  3.58s/it]
    lags grid:  57%|█████▋    | 4/7 [00:15<00:08,  2.84s/it]
    lags grid:  71%|███████▏  | 5/7 [00:16<00:04,  2.40s/it]
    lags grid:  86%|████████▌ | 6/7 [00:18<00:02,  2.24s/it]
    lags grid: 100%|██████████| 7/7 [00:20<00:00,  2.05s/it]
    lags grid: 100%|██████████| 7/7 [00:20<00:00,  2.91s/it]
    2023-12-21 17:31:21,247 - web_server - INFO - Elapsed time: 20.490362644195557
    2023-12-21 17:31:21,355 - web_server - INFO - R2 score for optimized prediction in train period: -0.30239850496571674
    2023-12-21 17:31:21,362 - web_server - INFO - R2 score for optimized prediction in test period: -0.08380513951771618
    2023-12-21 17:31:21,362 - web_server - INFO - Number of optimal lags obtained: 48

     

    I Emhass konfigurasjonen endrer du fra naive til mlforecast.

    image.png.79a97fe17cf1f2d454977eee280e5c68.png

     

    Kjør deretter automatiseringen for day-ahead forecast optimisering. For mitt vedkommende er det å kjøre rest kommandoen: 

    alias: EMHASS day-ahead optimization
    description: ""
    trigger:
      - platform: time
        at: "13:45:00"
    condition: []
    action:
      - service: rest_command.trigger_tibber_forecast
        data: {}
    mode: single

     

    Loggen ser slik ut i emhass hvis alt går bra.

    2023-12-21 17:34:21,698 - web_server - INFO - Setting up needed data
    2023-12-21 17:34:21,710 - web_server - INFO - Retrieving weather forecast data using method = scrapper
    2023-12-21 17:34:29,123 - web_server - INFO - Retrieving data from hass for load forecast using method = mlforecaster
    2023-12-21 17:34:29,124 - web_server - INFO - Retrieve hass get data method initiated...
    2023-12-21 17:34:56,966 - web_server - INFO -  >> Performing dayahead optimization...
    2023-12-21 17:34:56,967 - web_server - INFO - Performing day-ahead forecast optimization
    2023-12-21 17:34:57,005 - web_server - INFO - Perform optimization for the day-ahead
    2023-12-21 17:34:57,133 - web_server - INFO - Status: Infeasible
    2023-12-21 17:34:57,133 - web_server - INFO - Total value of the Cost function = -138.77

     

  7. Vannbåren varmesystem er en flyttbar last så i utgangspunktet kan emhass brukes til å styre varmen. Jeg bruker emhass til oppvarming av varmtvannsbereder noe som også gjøres ved vannbåren varmesystem. Du tenker kanskje på å bygge et blått batteri istedenfor et husbatteri. Leste litt om dette her før monterte solceller: https://solcellekysten.no/2016/09/24/energistyring/

  8. 6 hours ago, PutiPlot said:

    Kan man hente ut dataene fra enheten "direkte"/lokalt?

    Bruker du Home Assistant kan du bruke denne plugin: https://github.com/toreamun/amshan-homeassistant for å kunne få data lokalt til en mqtt server.

    Hvis du ikke ønsker å bruke Tibber Pulse er programvare ams2mqtt et godt alternativ https://github.com/UtilitechAS/amsreader-firmware. Her kan du kjøpe ferdiglaget amsleser: https://amsleser.no/

  9. Emhass bruker pvlib biblioteket for å gjøre spørringer om inverter. Her er databasen som en csv fil du kan søke i: https://github.com/NREL/SAM/blob/develop/deploy/libraries/CEC Inverters.csv

    Se om du finner en inverter som passer med din egen og bruk den. https://community.home-assistant.io/t/emhass-an-energy-management-for-home-assistant/338126/51?u=haraldov 

     

    pvlib.pvsystem.retrieve_sam

    https://pvlib-python.readthedocs.io/en/stable/reference/generated/pvlib.pvsystem.retrieve_sam.html

     

    Emhass bruker inverter- og solcelle-data og forecast fra værtjeneste til å spå "pv power production forecast" for neste dag.

    PV power production forecast (internally based on the weather forecast and the characteristics of your PV plant). This is given in Watts.

    https://emhass.readthedocs.io/en/latest/intro.html#passing-your-own-data

     

    Du kan alternativt bruke data fra Solcast https://solcast.com/ eller Forecast Solar https://www.home-assistant.io/integrations/forecast_solar/  og sende disse data til emhass med rest kommando. De vil overstyre den interne "pv power production forecast"

  10. 6 hours ago, thoralex said:

    Hvor/hvordan legger du inn rest commands for timesprisene?

     

    Jeg bruker rest commands til å sende timeprisene til emhass api. Du kan lese mer om rest kommandoer her: https://www.home-assistant.io/integrations/rest_command/

    Du kan få problemer nå du kopierer disse kommandoene som jeg limer inn til template editor. Jeg har opplevd at Visual Studio Code endrer på anførselstegnene " "og single ticks slik at template edit og emhass ikke godtar kommandoene. Hvis du opplever det kan File editor være bedre å bruke da den ikke fikser på slike tegn. Dobbelsjekk derfor min kode med hva som står i template editor. Dette er et vanlig problem de feste sliter med. 

    Du kan også bruke shell command https://www.home-assistant.io/integrations/shell_command/ istedenfor rest commands. Fordelen med rest command er at den gir mere tilbakemelding i loggen.  

    I emhass dokumentasjonen er det et eksempel hvordan bruke shell kommand til å legge inn timepriser fra Nordpool https://emhass.readthedocs.io/en/latest/forecasts.html#passing-your-own-forecast-data. Entsoe går fint også men test i template editor først før du sender data til emhass.

    rest_command:
      ml_forecast_fit:
        url: http://localhost:5000/action/forecast-model-fit
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          "days_to_retrieve": 60,
          "num_lags": 24
          }
      ml_forecast_tune:
        url: http://localhost:5000/action/forecast-model-tune
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          }
      trigger_nordpool_forecast:
        url: http://localhost:5000/action/dayahead-optim
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          "load_cost_forecast":{{((state_attr('sensor.nordpool', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24] }},
          "prod_price_forecast":{{((state_attr('sensor.nordpool_uten_avgifter', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool_uten_avgifter', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24]}},
          "def_total_hours":{{states('sensor.list_operating_hours_of_each_deferrable_load')}}
          }
      publish_data:
        url: http://localhost:5000/action/publish-data
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {"custom_deferrable_forecast_id": [
          {"entity_id": "sensor.p_deferrable0","unit_of_measurement": "W", "friendly_name": "Varmtvannsbereder"},
          {"entity_id": "sensor.p_deferrable1","unit_of_measurement": "W", "friendly_name": "Varmekabel stue og kjøkken"},
          {"entity_id": "sensor.p_deferrable2","unit_of_measurement": "W", "friendly_name": "Varmekabel bad1etg"},
          {"entity_id": "sensor.p_deferrable3","unit_of_measurement": "W", "friendly_name": "Varmekabel bad2etg"},
          {"entity_id": "sensor.p_deferrable4","unit_of_measurement": "W", "friendly_name": "Varmekabel gang"},
          {"entity_id": "sensor.p_deferrable5","unit_of_measurement": "W", "friendly_name": "Varmepumpe"},
          {"entity_id": "sensor.p_deferrable6","unit_of_measurement": "W", "friendly_name": "Easee lader"}
          ]}
      trigger_mpc_0600_forecast:
        url: http://localhost:5000/action/naive-mpc-optim
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          "load_cost_forecast":{{((state_attr('sensor.nordpool', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24] }},
          "prod_price_forecast":{{((state_attr('sensor.nordpool_uten_avgifter', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool_uten_avgifter', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24]}},
          "def_total_hours": [1, 1, 1, 1, 1, 5, 0],
          "prediction_horizon": 6
          }
      trigger_mpc_1200_forecast:
        url: http://localhost:5000/action/naive-mpc-optim
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          "load_cost_forecast":{{((state_attr('sensor.nordpool', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24] }},
          "prod_price_forecast":{{((state_attr('sensor.nordpool_uten_avgifter', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool_uten_avgifter', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24]}},
          "def_total_hours": [2, 0, 0, 0, 0, 3, 1],
          "prediction_horizon": 6
          }
      trigger_mpc_1800_forecast:
        url: http://localhost:5000/action/naive-mpc-optim
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          "load_cost_forecast":{{((state_attr('sensor.nordpool', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24] }},
          "prod_price_forecast":{{((state_attr('sensor.nordpool_uten_avgifter', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool_uten_avgifter', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24]}},
          "def_total_hours": [2, 1, 1, 1, 1, 3, 1],
          "prediction_horizon": 6
          }
      trigger_mpc_0000_forecast:
        url: http://localhost:5000/action/naive-mpc-optim
        method: POST
        content_type: "application/json"
        timeout: 300
        payload: >-
          {
          "load_cost_forecast":{{((state_attr('sensor.nordpool', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24] }},
          "prod_price_forecast":{{((state_attr('sensor.nordpool_uten_avgifter', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool_uten_avgifter', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24]}},
          "def_total_hours": [2, 0, 0, 0, 0, 0, 2],
          "prediction_horizon": 6
          }

     

    6 hours ago, thoralex said:

    hvordan håndterer emhass feil? Tenker spesielt om den ikke får strømpriser eller andre sensorer detter ut.

     

     

    Når Rest kommandoer ikke får tilbakemelding om at alt er ok fra emhass server logger den til Home Assistant loggen mener jeg. Dette er grunnen til at jeg bruker rest kommandoer istedenfor shell kommand som brukes i dokumentasjonen. Så hvis strømpriser ikke oppdateres får du en melding i loggen. Hvis andre sensorer detter ut får du meldinger av Home Assistant i loggen.

    Emhass addon logger til sin egen logg som du kan finne i Settings->System->Logs. Du kan søke i den etter error eller warning.

    image.thumb.png.d944d14f91a6c10ee21f0264a417aad7.png 

     

    6 hours ago, thoralex said:

    Gjør emhass styring mot nettleietrinn, eller må det automatiseres utenom?

     

    Dette må automatiseres utenom.

    1) Du kan f.eks bruke PowerWiz til dette: https://theawesomegarage.com/blog/powerwiz-for-home-assistant-control-your-power . Har ikke prøvd det selv, men ser lovende ut

    2) Du kan også bruke Home Assistant automatisering som du ser her: https://github.com/kimmilde/home-assistant

    3) Du kan også bruke et Pyscript https://github.com/custom-components/pyscript som Stigvi har laget. Du finner mer om dette her: 

     

    7 hours ago, thoralex said:

    Hva gjør man med deferrable loads som ikke har strømmåling når man beregner "power loads no var loads"?

     

    Du må nok ha strømmåling. Jeg bruker en Fibaro wallplug på varmepumpen, en Aeotec Heavy Duty Switch til varmtvannsberederen.

     

    7 hours ago, thoralex said:

    Og hva setter man som "nominal power of deferrable load" på f.eks.  varmepumpe som har stor variasjon i forbruk?

     

    Er ikke noe ekspert på dette, men jeg mener nominell effekt er den høyeste wattstyrken som varmepumpen kan oppnå. Dette kan du finne i manualen eller bruke en strømplugg til å måle den høyeste effekten varmepumpen har.

    Det er iallefall det jeg setter inn for min varmepumpe som har nominell effekt på 3000 Watt

    - nominal_power_of_deferrable_loads: 3000

    • Like 2
  11. Min automatisering av day-ahead optimisering ser slik ut. Denne har jeg disablet da jeg bruker mpc optimisering så oppdaterer 6 timer i døgnet. Grunnen til det er at det er enklere å styre varmepumpe og elbilladning da. Skal en begynne med emhass ville jeg valgt day-ahead optimisering i starten.

    alias: EMHASS day-ahead optimization each day 13:55
    description: ""
    trigger:
      - platform: time
        at: "13:55:00"
    condition: []
    action:
      - service: rest_command.trigger_nordpool_forecast
        data: {}
    mode: single

     

    Hvis du ønsker oftere oppdatering av f.eks tider de flyttbare lastene skal være på kan du bruke mpc optimisering. F.eks trenger jeg å ha nattsenking på varmepumpen. Jeg bruker da en mpc automatisering klokken 00:00 hvor "def_total_hours": [2, 0, 0, 0, 0, 0, 2] ser slik ut. Varmepumpetid er i fet skrift i def_total_hours og er 0 timer i en seks timers periode.

    alias: "Emhass: Mpc optimisering klokken 00:00"
    description: ""
    trigger:
      - platform: time
        at: "00:00:00"
    condition: []
    action:
      - service: rest_command.trigger_mpc_0000_forecast
        data: {}
    mode: single

     

    og en som trigger klokken 06:00 hvor "def_total_hours": [1, 1, 1, 1, 1, 5, 0] ser slik ut. Varmepumpetid er nå 5 timer på i en seks timers periode.

    Support for elbillading og varmepumpe er på todo listen til utvikleren David https://github.com/davidusb-geek/emhass/wiki 

     

    Et tips på veien:

    Husk å teste ut rest command i template editor først. Det er lett at det blir feil med doble ticks (hermetegn ") og single ticks i template.

    image.png.5f44891af8e365e7d4b4dc37f6a25e5c.png

     

    image.png.aca9a3ecf2cdeebbf97f09f1a7c0fb4d.png

     

  12. I min enebolig styrer jeg varmen ved hjelp av Home Assistent og Python addon EMHASS (Energy Management for Home Assistant). Programmet EMHASS tar hensyn til høye og lave strømpriser, kraftproduksjon fra solcellepaneler og energilagring fra batterier og beregner med lineær programmering en optimalisert energibruk. I Home Assistant kan en deretter lage daglige automatiseringer basert på EMHASS sine forslag, som å styre varmekabler, varmepumpe og varmtvannsbereder når det er best å senke eller øke temperaturen. I mitt hjem senkes og økes varmekablene i stue, kjøkken, gang, bad1etg og bad2etg med tre grader, varmepumpe en grad og varmtvannsberederen slås av og på.

     

    Dokumentasjon: https://emhass.readthedocs.io/en/latest/forecasts.html

    Emhass addon: https://github.com/davidusb-geek/emhass-add-on

     

    Emhass begreper: 

    deferrable loads = flyttbare laster som f.eks varmekabler med høy varmekapasitet

    Dayahead Optimization = oppdaterer strømpriser og tidspunkter de flyttbare lastene skal være på hvert døgn. Nordpool leverer strømprisene 24 timer frem i tid så Dayahead Optimization er det første dere bør prøve.

    MPC controller = Ønsker dere oppdatere strømpriser oftere enn hvert døgn (24 timer) så kan dere bruke mpc som optimaliseringsmetode. Jeg bruker det nå da jeg vil kontrollere tidspunkter varmepumpen og ladningen skal skje. Jeg oppdaterer da strømpriser og tidspunkter lastene skal være på hver 6 time. Kan oppdateres oftere hvis dere ønsker.

     

    Jeg bruker Nordpool til å hente strømprisene. Min enebolig har 12 solceller på garasjetaket med 3 mikroinvertere og 6 solceller på hovedhus med to mikroinvertere. Jeg har ikke husbatteri ennå.

     

    I Emhass addon -> Configuration har jeg brukt default verdier bortsett fra disse innstillingene:

    "optimization_time_step": 60    # Dette betyr 60 minutter fordi Nordpool leverer strømprisene hver time

    "sensor_power_photovoltaics": "sensor.ecu_current_power"  # Apsystem ECU sensor for produsert strøm fra solceller i Watt

    "sensor_power_load_no_var_loads": "sensor.power_load_no_var_loads"  # Template sensor som tar import strøm (AMS reader Active import) og trekker i fra deferrable loads du ønsker å ha med i emhass.

     

    template:
    
      - sensor:
    
          - name: "Power load no var loads"
    
            unique_id: fbfeef21-1aa3-4a54-b781-426f46fef597
    
            unit_of_measurement: W
    
            device_class: power
    
            state: >
    
              {% set powerload = states('sensor.ams_cf58_p') | float(default=0) %}
    
              {% set vkbad1etg = states('sensor.varmekabel_bad1etg_electric_consumption_w') | float(default=0) %}
    
              {% set vkbad2etg = states('sensor.varmekabel_bad2etg_electric_consumption_w') | float(default=0) %}
    
              {% set vkgang = states('sensor.varmekabel_gang_electric_consumption_w') | float(default=0) %}
    
              {% set vkgmlstue = states('sensor.varmekabel_gmlstue_electric_consumption_w') | float(default=0) %}
    
              {% set vknystue = states('sensor.varmekabel_nystue_electric_consumption_w') | float(default=0) %}
    
              {% set vkkjokken = states('sensor.varmekabel_kjokken_electric_consumption_w') | float(default=0) %}
    
              {% set vvb = states('sensor.bryter_varmvannsbereder_electric_consumption_w') | float(default=0) %}
    
              {% set varmepumpe = states('sensor.strombryter_varmepumpe_power') | float(default=0) %}
    
              {% set easee = states('sensor.easee_home_13794_power') | float(default=0) %}
    
              {% set value = (powerload - vkbad1etg - vkbad2etg - vkgang - vkgmlstue - vknystue - vkkjokken - varmepumpe - vvb - easee) | round(1,default=0) %}
    
              {% if value < 0.0  %}
    
                {{ 0.0 }}
    
              {% else %}
    
                {{ value }}
    
              {% endif %}

     

    "number_of_deferrable_loads": 7   # Antall flyttbare laster (deferrable loads) jeg vil ha styring av

     "list_nominal_power_of_deferrable_loads":   # Oppgis som en liste verdi med den nominelle lasten til de flyttbare lastene jeg har. Du finner disse verdien i dokumentasjon til lastene. Du må oppgi alle de syv lastene.

    "list_operating_hours_of_each_deferrable_load":   # Oppgi i antall timer de flyttbare lastene skal være på. Jeg har valgt å bruke mpc optimalisering istedenfor Dayahead Optimization så disse tidene blir oppdatert hver 6 time med shell commands. Du må oppgi alle de syv lastene som i list_nominal_power_of_deferrable_loads

    "list_peak_hours_periods_start_hours":    # Når skal oppvarmingen skje. Jeg har satt klokken 06:00.  Du må oppgi alle de syv lastene som i list_nominal_power_of_deferrable_loads

    "list_peak_hours_periods_end_hours":   # Når skal oppvarming avsluttes. Jeg har satt klokken 23:00.  Du må oppgi alle de syv lastene som i list_nominal_power_of_deferrable_loads

    "list_treat_deferrable_load_as_semi_cont":  # Jeg bruker true her. Du må oppgi alle de syv lastene som i list_nominal_power_of_deferrable_loads

     "load_peak_hours_cost": 0.1907    # Sett en statisk timeverdi mellom 06:00 - 23:00. Jeg bruker rest commands for å oppdatere dynamisk timeprisene så denne prisen blir overskrevet.

     "load_offpeak_hours_cost": 0.1419  # Sett en statisk timeverdi mellom 23:00 - 06:00. Jeg bruker et rest commands for å oppdatere dynamisk timeprisene så denne prisen blir overskrevet.

     "photovoltaic_production_sell_price": 0.065 # Sett en statisk kroneverdi. Jeg bruker et rest commands for å oppdatere dynamisk timeprisene så denne prisen blir overskrevet.

     "maximum_power_from_grid": 5310  # Mine solceller produserer teoretisk maksimum 5310 Watt

    "list_pv_module_model":  # Her oppgis alle solcellepanelene 

    "list_pv_inverter_model":  # Her oppgis alle invertere. Jeg har mikroinvertere så det blir en del av dem.

    "list_surface_tilt"   # Takvinkel. Du må oppgi takvinkel for alle solcellene

    "list_surface_azimuth": Azimuth grad.  Du må oppgi azimuthvinkel for alle solcellene

     "list_modules_per_string":    # Du må oppgi azimuthvinkel for alle solcellene

     "list_strings_per_inverter":   # Du må oppgi azimuthvinkel for alle solcellene

     

    Resten av konfigurasjonsfilen ligger som vedlegg.

     

    Her er noen av rest commands jeg bruker for å oppdatere dynamisk timeprisene for load_cost_forecast og prod_price_forecast og hvor lenge lastene skal være på. Jeg legger ved resten av emhass oppsettet som en package fil https://www.home-assistant.io/docs/configuration/packages/.

    rest_command:
    
      trigger_nordpool_forecast:
    
        url: http://localhost:5000/action/dayahead-optim
    
        method: POST
    
        content_type: "application/json"
    
        timeout: 300
    
        payload: >-
    
          {
    
          "load_cost_forecast":{{((state_attr('sensor.nordpool', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24] }},
    
          "prod_price_forecast":{{((state_attr('sensor.nordpool_uten_avgifter', 'raw_today') | map(attribute='value') | list  + state_attr('sensor.nordpool_uten_avgifter', 'raw_tomorrow') | map(attribute='value') | list))[now().hour:][:24]}},
    
          "def_total_hours":{{states('sensor.list_operating_hours_of_each_deferrable_load')}}
    
          }

     

     

    image.png

    emhass_addon_config.json emhass.yaml

    Emhass automatiseringer for varmekabler. 

     

    alias: "Emhass: Endre temperatur på varmekabel bad1etg. Sjekker hvert 5 minutt."
    description: ""
    trigger:
      - platform: time_pattern
        minutes: /5
    condition:
      - condition: time
        after: "06:00:00"
        before: "23:00:00"
    action:
      - if:
          - condition: numeric_state
            entity_id: sensor.p_deferrable2
            above: 0.1
        then:
          - service: climate.set_temperature
            data:
              temperature: 23
              hvac_mode: heat
            target:
              entity_id:
                - climate.varmekabel_bad1etg
        else:
          - service: climate.set_temperature
            data:
              temperature: 20
              hvac_mode: heat
            target:
              entity_id:
                - climate.varmekabel_bad1etg
    mode: single


    Emhass automatisering for varmepumpe. 

    alias: "Emhass: Endre temperatur på varmepumpe. Sjekker hvert 5 minutt."
    description: ""
    trigger:
      - platform: time_pattern
        minutes: /5
    condition:
      - condition: state
        entity_id: binary_sensor.kontaktsensor_uteplassdor_contact
        state: "off"
      - condition: time
        after: "06:00:00"
        before: "23:00:00"
    action:
      - if:
          - condition: numeric_state
            entity_id: sensor.p_deferrable5
            above: 0.1
        then:
          - service: climate.set_temperature
            data:
              temperature: 23
              hvac_mode: heat
            target:
              entity_id:
                - climate.varmepumpe
        else:
          - service: climate.set_temperature
            data:
              temperature: 22
              hvac_mode: heat
            target:
              entity_id:
                - climate.varmepumpe
    mode: single

     

    Emhass automatisering for elbil ladning med Easee lader:

     

    alias: "Emhass: Slå av og på lading av elbil. Sjekker hvert 5 minutt."
    description: ""
    trigger:
      - platform: time_pattern
        minutes: /5
    condition: []
    action:
      - if:
          - condition: numeric_state
            entity_id: sensor.p_deferrable6
            above: 0.1
        then:
          - service: easee.set_circuit_dynamic_limit
            data:
              currentP1: 5
              device_id: 4edada93978baf0956025a39acec389f
        else:
          - service: easee.set_circuit_dynamic_limit
            data:
              currentP1: 0
              device_id: 4edada93978baf0956025a39acec389f
    mode: single
     

     

    • Like 1
  13. Home Assistant har en EMHASS addon som jeg bruker for å styre varmepumpe, elbillader og termostater. Fordelen med denne addon er at den ikke bruker regelstyrt automatisering som å senke temperatur når klokken er 23:00 og øke når klokken er 06:00 (nattsenking). Ved å bruke lineær programmering for å optimalisere energibruk tar programmet også hensyn til flere faktorer som er det billig eller dyr strøm i dag eller neste dag, produserer solcellene neste dag mye kraft, skal husbatteriet lades eller tappes.

    Hvis dette er noe for deg så finner du dokumentasjonen her: https://emhass.readthedocs.io/en/latest/intro.html og addon her: https://github.com/davidusb-geek/emhass-add-on

    Hvis ønskelig så kan jeg skrive litt om mitt Emhass oppsett også.

  14. Du kan bruke shell_command. Se her:  https://www.home-assistant.io/integrations/shell_command/

    Den er ikke spesielt brukervennlig da det er lett å gjøre feil, men med litt tålmodighet og utprøving kan du sende curl kommandoer med den som en service

     

    Som et eksempel bruker jeg nå shell_command for å sende oppdateringer til emhass server addon. Den ser slik ut:

      publish_data: "curl -i -H \"Content-Type:application/json\" -X POST -d '{\"custom_deferrable_forecast_id\": [
        {\"entity_id\": \"sensor.p_deferrable0\",\"unit_of_measurement\": \"W\", \"friendly_name\": \"Varmtvannsbereder\"},
        {\"entity_id\": \"sensor.p_deferrable1\",\"unit_of_measurement\": \"W\", \"friendly_name\": \"VKNystue-Varmepumpe\"},
        {\"entity_id\": \"sensor.p_deferrable2\",\"unit_of_measurement\": \"W\", \"friendly_name\": \"VKGmlstue-Bad2etg\"},
        {\"entity_id\": \"sensor.p_deferrable3\",\"unit_of_measurement\": \"W\", \"friendly_name\": \"VKBad1etg-Kjøkken-Gang\"}
        ]}' http://localhost:5000/action/publish-data"

     

    Kan nå bruke command_shell for å kjøre publish_data som en service:

    image.png.24fb837dbb90b4f920099a2bef7c0bfe.png

  15. Jeg ville ikke ha brukt usb 3 tilkoblingen på pc (den blåfargete usb tilkoblingen). Hvis du må gjøre det bruk en usb2 hub i mellom som forsynes med egen strøm.  Grunnen til at usb3 port bør ikke brukes til tilkobling er på grunn av interference. Conbee stick (zigbee) bruke 2.4 GHz noe som både WiFi, microbølger brukes også. Z-stick vil også bli påvirket av usb3 interference.  Se her: https://community.home-assistant.io/t/usb3-0-radio-frequency-interference/288695

  16. On 25/02/2023 at 21:37, haraldov said:

    Jeg har brukt firmware 7.18.2 (den som Aeotec anbefaler) og nå 7.19.2 på min Aeotec zstick-7. Det er fire Fibaro Dimmer 2 noder (fw versjon 3.5) som dør etter ett døgn

    Jeg lagde en egen github sak på node-zwave-js på dette problemet. Jeg fikk som svar at Aeotec zstick-7 EU versjon ikke var anbefalt lengre på grunn av dårlig RF ytelse. I tillegg er Fibaro Dimmer 2 enhetene bak en bryter med metall og plast. Dette kan gjøre at RF signalene ikke kommer frem alltid enten på grunn av svakt signal fra zstick-7 og/eller at Fibaro Dimmer 2 enheten ikke tar imot signal på grunn av dårlig antenne.

     

    Så nå må jeg få kjøpt meg en av disse anbefalte z-wave kontrollere: 

    • Aeotec Gen5+ (the + is important), with firmware 1.2 (update is here if necessary)
    • Zooz ZSt10-700 (if you can get your hands on a EU version)
    • Silicon labs UZB7 (or UZB3 works too, but that's also the older 500 series)
    • 800 series does not support NVM restore yet, last I tested.

    Se mer her: https://github.com/zwave-js/node-zwave-js/issues/5596

  17. Jeg har brukt firmware 7.18.2 (den som Aeotec anbefaler) og nå 7.19.2 på min Aeotec zstick-7. Det er fire Fibaro Dimmer 2 noder (fw versjon 3.5) som dør etter ett døgn. De andre nodene har jeg ikke opplevd at dør (Aeotec multisensor og heavy duty switch, Heatit z-trm3, Fibaro smoke detector).

     

    Jeg har ikke ventet så lenge at de har våknet opp igjen, men når jeg pinger Dimmer 2 nodene så våkner de opp. Jeg trenger et stabilt zwave nettverk så jeg har gått tilbake til Aeotec zstick 5+ uten disse problemene.

    Jeg tror at dette er et kjent problem for utviklerene da de har opprettet en egen sak for noder som har kommunikasjonsproblemer med zwave-js driver versjon 10.x (https://github.com/zwave-js/node-zwave-js/issues/4994).

    Så jeg tror kommunikasjonsproblemet gjelder bare ett fåtall enheter og hos meg var det Fibaro Dimmer 2 (FGD212). 

  18. Jeg synes det er rart at dere ikke bruker default verdiene som zwave-utviklerene foreslår:

    Normal Power Level: 0 dBm

    Measured output power at 0 dBm: 3,3 dBm

     

    Men det er mulig noe jeg ikke forstår her. Isåfall bør dere dokumentere hvorfor dere bruker disse verdiene da andre brukere kan gjøre det samme.

     

    Jeg har forøvrig fått min første døde node i dag etter at noden ble intervjuet på nytt igår som foreslått av zwave utviklerene.  Går nok tilbake til Aeotec zstick 5+ hvis dette forsetter. Den bare fungerer.

     

     

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.