Categories
fronius Koduautomaatika nordpool päikesepark

Kuidas nutikalt piirata päikeseenergia tootmist

Oli aeg mil energiahinnad tõusid ja alustasin antud blogi kirjutamist mõttega kuidas veidikene odavamalt elektrit tarbida läbi nutika ajastamise vastavalt börsihinnale. Möödas on poolteist aastat ja tekkinud on uued mured – mida teha kui majapidamises on tootmisüksus aga elektrihind on hoopis negatiivne?

Igat moodi kalkuleerides jõuab lõpuks järeldusele, et kõige otstarbekam on võimalikult palju elektrit oma majapidamises ise ära kasutada. Selleks tegin ringi ka oma süsteemi veidikene, mis arvestaks ka müügist saadava tuluga ning ajastaks tarbimist, arvestades seda et müügist ei saa võrguasu ega käibemaksu, mis ostu puhul arvele juurde tekivad. Lisaks on kasulik ka osta endale elektriauto ning sõita tasuta “kütusega”, mille puhul laadimishind võrdub kokkuhoitud bensiini/diisli hinnaga.

Kui auto on täis laetud, maja köetud, samas päike väljas ja hind negatiivne – ehk maksad hoopis müügi pealt peale, siis järgmine samm on piirata tootmist. Järgnev postitus kajastabki kuidas ma endal selle piiramise korraldasin.

Riistvara

Inverter. Mul majapidamises on tootmisüksuseks Fronius Symo 10kW päikeseinverter. Kirjutan lähtuvalt antud toote vaatepunktist.
Elektriarvesti. Et piirata tootmist peab saama kuidagi aimu palju energiat võrku anname või sealt võtame. Selleks on mul Selly 3EM elektriarvesti. Sobib ka Froniuse enda smartmeter, samas kuna mul seda pole ning pole ka oluline, siis lähtusin olemasolevast riistvarst.
Kontroller. Eelnevates blogipostitustes kirjeldatud Home Assistant tarkvara, mis nüüdseks jookseb mul Synologi võrgukettas olevas virtuaalmasinas.

Kõik vidinad on ühendatud ühtsesse arvutivõrku ning saavad seal omavahel suhelda.

Seadistamine

Elektrihind Nordpoolist
Elektrihinna saamiseks kasutan Nordpooli integratsiooni, mis on saadaval Home Assistanti HACS lisadest. Selle seadistamisest on ka varasemalt juttu. Eelnevates postitustes kirjeldatule lisasin hinna arvutusse olukorra, kus arvestan et peale päikese tõusu kaks tundi ning enne päikeseloojangut tund lahutatakse hinnast maha võrgutasu, käibemaks ning müügimarginal, mida maksame energiavahendajale. Eeldame siis et päeval antud kellaaegadel päike paistab ja toimub müük – elektrihind on siis minu jaoks müügist saadud tulu, mis viimasel ajal muutub negatiivseks.

Graafikul on näha punasega siis see raha mida ma saan/kaotan müügist. Sinine on hind mida maksaks kui mul poleks tootmist. Sellise (punase) hinna saamiseks kasutan järgmist koodilõiku. Kuna mul päikesepaneelid on paigutatud ida ja lääne suunale, siis kellaajad millal arvestan enne ja pärast päikesetõusu on arvestuslikud vastavatele suundadele. Lõunasse suunatud paneelide puhul ilmselt oleks mõistlik ca 3h enne loojangut ja 3h peale tõusu sättida parameetrid. Koodis ajad sekundites.

sensor:
  - platform: nordpool
    low_price_cutoff: 1
    VAT: false
    region: "EE"
    precision: 3
    price_type: MWh
    additional_costs: '
{% set sunrise_offset = 10800 %}
{% set sunset_offset = 3600 %}
{% set now2 = as_timestamp(now()) %}
{% set sunset = as_timestamp(state_attr("sun.sun", "next_setting")) %}
{% set sunrise = as_timestamp(state_attr("sun.sun", "next_rising")) %}
{% set nextday = as_timestamp(states("sensor.date")) + 86400 %}

{% if nextday < sunset %}
  {% set sunset = sunset - 86400 %}
{% endif %}
 
{% if nextday < sunrise %} 
  {% set sunrise = sunrise - 86400 %}
{% endif %}

{% set s = { "day": 44.300, "night": 25.200, "sunup": -7.5 } %} 
{% if now().weekday() in (5,6) %} 
  {% if ((sunrise + sunrise_offset) < now2) and (now2 < (sunset - sunset_offset)) %}
    {{s.sunup|float}}
  {% else %} 
    {{current_price * 0.2 + s.night|float}} 
  {% endif %} 
{% else %} 
  {% if ((sunrise + sunrise_offset) < now2) and (now2 < (sunset - sunset_offset)) %}
    {{s.sunup|float}}
  {% elif now().hour >=7 and now().hour < 22 %} 
    {{current_price * 0.2 + s.day|float}} 
  {% else %} 
    {{current_price * 0.2 + s.night|float}} 
  {% endif %} 
{% endif %}

Kolme faasi tarbimise arvestamine
Edasi tegin ühe sensori, mis liidab kolme faasi pealt liikuva võimsuse kokku ja väljastab selle kogutarbimisena. Kuna mu inverterit faaside kaupa nagunii juhtida ei saa, siis eeldan et tarbimine on sümmeetriline (tarbitakse kõiki faase võrdselt, mis alati päris täpne pole)

#tarbimine
  - sensor:
      - name: "Peaarvesti Maja current power"
        unique_id: maja_current_power
        state: >
          {{ 
            [ states('sensor.shellyem3_34945475eeb9_channel_a_power'), 
              states('sensor.shellyem3_34945475eeb9_channel_b_power'),
              states('sensor.shellyem3_34945475eeb9_channel_c_power'),
            ] | map('float') | sum
          }}
        availability: >
          {{ 
            [ states('sensor.shellyem3_34945475eeb9_channel_a_power'), 
              states('sensor.shellyem3_34945475eeb9_channel_b_power'),
              states('sensor.shellyem3_34945475eeb9_channel_c_power'),
            ] | map('is_number') | min
          }}
        unit_of_measurement: w
        device_class: power
        state_class: measurement

Inverterilt tootmisnäitude lugemine ModBusi/TCP kaudu
Antud inverteril on ka spetsiaalne integratsioon Home Assistantiga, kuid selle kaudu saab lugeda ainult põhiparameetreid ning juhtida ei saa. Juhtimiseks on õnneks tal olemas Modbus/TCP tugi, mida oskab ka HA. Kõigepealt loeme sealt välja parameetrid, mida meil juhtimiseks on tarvis kasutada. Piisab aktiivvõimsuse lugemisest – seda mõõdame ka Shelly arvestist. IP aadressid tuleb valida sellised mis on teile seadmetel. Modbusi registriväärtused on erinevad igal inverteri mudelil ja neid tuleb tootja kodulehtedelt otsida. Antud näites loeme veidikene rohkem parameetreid kuid vaja hetkel on vaid aktiivvõimsust.

modbus:
  name: FroniusMODBUS
  type: tcp
  host: 192.168.0.78
  port: 502
  sensors:
  #- name: "fronius_Phase_L1L2_voltage"
  #  slave: 1
  #  scan_interval: 20
  #  count: 2
  #  address: 40079
  #  data_type: float32
  #  unit_of_measurement: V
    
  #- name: "fronius_Phase_L2L3_voltage"
  #  slave: 1
  #  scan_interval: 20
  #  count: 2
  #  address: 40081
  #  data_type: float32
  #  unit_of_measurement: V'
    
  #- name: "fronius_Phase_L1L3_voltage"
  #  slave: 1
  #  scan_interval: 20
  #  count: 2
  #  address: 40083
  #  data_type: float32
  #  unit_of_measurement: V

  - name: "fronius_Phase_L1N_voltage"
    slave: 1
    scan_interval: 20
    count: 2
    address: 40085
    data_type: float32
    unit_of_measurement: V
    
  - name: "fronius_Phase_L2N_voltage"
    slave: 1
    scan_interval: 20
    count: 2
    address: 40087
    data_type: float32
    unit_of_measurement: V

  - name: "fronius_Phase_L3N_voltage"
    slave: 1
    scan_interval: 20
    count: 2
    address: 40089
    data_type: float32
    unit_of_measurement: V    

  - name: "fronius_AC_Power"
    slave: 1
    scan_interval: 10
    count: 2
    address: 40091
    data_type: float32
    unit_of_measurement: W
    
  - name: "fronius_Line_Frequency"
    slave: 1
    scan_interval: 20
    count: 2
    address: 40093
    data_type: float32
    unit_of_measurement: Hz
    
  #- name: "fronius_Apparant_Power"
  #  slave: 1
  #  scan_interval: 10
  #  count: 2
  #  address: 40095
  #  data_type: float32
  #  unit_of_measurement: VA
    
  - name: "fronius_power_limit"
    slave: 1
    scan_interval: 20
    address: 40242
    data_type: uint16
    unit_of_measurement: W
    
  - name: "fronius_power_limit_active"
    slave: 1
    scan_interval: 20
    address: 40246
    data_type: uint16

Juhtimine

Nüüd on kõik vajalik olemas, et saaks saata inverterile piiramise käske. Antud inverter eeldab et enne piirangu etteande väärtust on piiramise aktiveerimise registri väärtus “0”, seejärel anname ette etteandeväärtuse ning siis aktiveerime piiraja.
Automaatika trigeriks on võimuse näidu muutus arvestis ning tingimuseks et piirang rakendatakse on negatiivne hind

Automaatikaid saab seadistada Settings->Automation, seal tuleks lisada New Automation ja edasi Edit in YAML lisada järgnev kood:

alias: Fronius limit power
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.peaarvesti_maja_current_power
condition:
  - condition: template
    value_template: "{{ states('sensor.nordpool_mwh_ee_eur_3_10_0')|int < 0 }}"
action:
  - service: modbus.write_register
    data:
      hub: FroniusMODBUS
      slave: 1
      address: 40246
      value: "0"
  - service: modbus.write_register
    data:
      hub: FroniusMODBUS
      address: 40242
      slave: 1
      value: >-
        {%- set peaaervesti_power =
        states('sensor.peaarvesti_maja_current_power') %} {%- set inverter_power
        = states('sensor.fronius_ac_power') %} {%- set total_power =
        peaaervesti_power|int + inverter_power|int + 200 %} {{ total_power }}
  - service: modbus.write_register
    data:
      hub: FroniusMODBUS
      slave: 1
      address: 40246
      value: "1"
mode: single

Kui nüüd hind muutub positiivseks on vaja piiraja eemaldada, selleks tegin täiendava automaatika

alias: Fronius Limit power off when price is positive
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.peaarvesti_maja_current_power
condition:
  - condition: template
    value_template: "{{ states('sensor.nordpool_mwh_ee_eur_3_10_0')|int > 0 }}"
action:
  - service: modbus.write_register
    data:
      hub: FroniusMODBUS
      slave: 1
      address: 40246
      value: "0"
  - service: modbus.write_register
    data:
      hub: FroniusMODBUS
      address: 40242
      slave: 1
      value: 10000
mode: single

Antud asju teglikult on tarvis veidi veakindlamaks teha – lisada oleks tavis juhud kui näiteks börsihind pole saadaval või siis näiteks mõne arvesti väärtus hetkel on kättesaamatu HA-le (unknown või unavailable). Kunagi hiljem täiendan. Samas hetkel ta mul ilusasti töötab.

Visualiseerimine

Automaatikate sisse välja lülitamiseks lisasin paar nupukest – sellega peaksid kõik ise hakkama saama 🙂

Nagu näha lisasin ka käsitsi juhtimise võimaluse. Selleks tegin kaks helperit Settings->Devices->Helpers menüüs

Üks nendest siis slider ja teine toggle switch. Nende nuppude vajutuse peale inf osaatmiseks inverterisse tegin mõlema jaoks eraldi veel automaatikad:
Piiraja aktiveerimine

alias: Fronius Turn On Power Limit
description: ""
trigger:
  - platform: state
    entity_id:
      - input_boolean.fronius_power_limit_active
condition: []
action:
  - service: modbus.write_register
    data:
      hub: FroniusMODBUS
      slave: 1
      address: 40246
      value: >-
        {{ 1 if states('input_boolean.fronius_power_limit_active') == 'on' else
        0 }}
mode: single

Piiraja etteandeväärtuse muutmine

alias: Fronius Change Power Limit
description: ""
trigger:
  - platform: state
    entity_id:
      - input_number.fronius_power_limit
condition: []
action:
  - service: modbus.write_register
    data:
      hub: FroniusMODBUS
      address: 40242
      slave: 1
      value: "{{ states('input_number.fronius_power_limit') }}"
mode: single

Täna on esimene päev kus katsetasin ja tundub et töötab päris ilusasti. Näha on et veidikene tootsin rohkem – see tulenes sellest et käsitsilisasin 200W rohkem tootmist kui vaja, et veidikene siluda faaside ebasümmeetriast tulenevat valearvestust. Odavam on pigem veidikene müüa negatiivse hinnaga kui osteds maksta võrgutasu ja käibemaksu.

Kena katsetamiset! 🙂

Categories
Koduautomaatika nordpool

Võrgutasu komponendi lisamine

Kuna öö ja päeva võrgutasude erinevus on piisavalt suur, siis kohati summa mida masma peab võib olla ka Nordpooli madala hinna puhul öösel hoopis soodsam.

Et arvesse võtta võrgutasu tuleks configuration.yaml faili lisama järgneva koodi. Kui varem oli nordpooli sensor seadistatud läbi graafilise interface vastavalt juhendile, siis antud snipi lisamine tekitab sama nimelise sensori, koos Elektrilevi võrk 4 paketi võrgutasudega. Midagi rohkemat muutma ei pea.

Tänud Martin Raudlale!

sensor:
  - platform: nordpool
    low_price_cutoff: 1
    VAT: true
    region: "EE"
    precision: 3
    price_type: MWh
    additional_costs: '{% set s = { "day": 34000, "night": 19500 } %} {% if now().weekday() in (5,6) %} {{s.night|float}} {% else %} {% if now().hour >= 7 and now().hour < 22%} {{s.day|float}} {% else %} {{s.night|float}} {% endif %} {% endif %}'
Categories
Koduautomaatika nordpool

Börsikontrolleri täiendused peale kuuajalist kasutamist

Peale kuuajalist kasutamist panen siia ülesse ka mõned täiustused mida vahepal olen teinud. Antud postituses kajastan põhiliselt täiustusi mis seotud soojuspumba juhtimisega. Tegelikkuses olen vahepeal juba automatiseerinud ära pool oma elamaisest (välisvalgustus, väravaajamite juhtimine, erinevad õhu- ja temperatuurimonitorid, sisevalgustuse juhtimine, energiaarvestid). Nendest ehk kijutan täpsemalt järgmisel korral.

Tundelise temperatuuri järgi juhtimine

Tundeline temperatuur (real feel) on temperatuur, mis arvestab ka tuule ja niiskuse mõju küttetundide arvutamiseks. Antud näite puhul arvestame vaid tuule osakaalu. Selle arvutamiseks on mingi üldtuntud valem, mille sisu väga lahkama ei tahaks hakata. Kolleeg (Indrek V) saatis facebooki postituses oma nägemuse antud sensorist, mis tuleb lisada templatede sektsiooni konfiguratsioonifailis.

  - sensor:
    - name: keskminetemp_real_feel
      unique_id: keskminetemp_real_feel
      state: >-
        {% set list=state_attr('weather.openweathermap', 'forecast') %}
        {% set temp_rf_0=13.2+0.6215*list[0].temperature-11.37*(list[0].wind_speed**0.16)+0.3965*list[0].temperature*(list[0].wind_speed**0.16)|float %}
        {% set temp_rf_4=13.2+0.6215*list[4].temperature-11.37*(list[4].wind_speed**0.16)+0.3965*list[4].temperature*(list[4].wind_speed**0.16)|float %}
        {% set temp_rf_8=13.2+0.6215*list[8].temperature-11.37*(list[8].wind_speed**0.16)+0.3965*list[8].temperature*(list[8].wind_speed**0.16)|float %}
        {% set temp_rf_12=13.2+0.6215*list[12].temperature-11.37*(list[12].wind_speed**0.16)+0.3965*list[12].temperature*(list[12].wind_speed**0.16)|float %}
        {{ ((temp_rf_0+temp_rf_4+temp_rf_8+temp_rf_12)/4)|round(1) }}

Antud koodijada tekitab juurde sensori nimega keskminetemp_real_feel

Asendame selle oma eelnevalt loodud sensori heatrequest (mis kalkuleerib küttetundude vajadust) koodis, eelneva keskminetemp sensoriga

Edaspidi arvutatakse töötunnid, arvestades ka tuule mõju.

Lisatunnid ja minimalne tööaeg

Et oleks mugavam küttegraafikut muuta (seadistada vajaminevaid küttetunde) tegin eraldi slideri, mis aritmeetiliselt liidab ning lahutab vajadusel siis sensori heatrequest poolt arvutatud tundidele soovitud koguse juurde.

Samuti tekitasin lisaks ka slideri, mille alusel määratakse minimaalne küttetundide kogus, kui näiteks teoreetiliselt maja kütmiseks enam polegi vaja soojuspumpa, samas aga soojuspump peaks töötama, et ta kütaks soojavee boilerit.

Selleks lisame konfiguratsioonifaili järgmised read (tekitavad vajalikud sliderid)

input_number:
  pumbatunnid_input:
    name: pumbatunnid_input
    min: -3
    max: 3
    step: 1
    unit_of_measurement: h
  pumbatunnid_min_input:
    name: pumbatunnid_min_input
    min: 0
    max: 5
    step: 1
    unit_of_measurement: h

Sliderite lisamiseks tuleb valida menüüst Edit Dashboard, ning sealt alt lisada kaart Entities

Kui slaiderid loodud, siis tuleb vastavad muutujad ka koodis õigetesse kohtadesse lisada.

Lisan screenshoti

Ongi korras!

Kütteaja ja toatemperatuuri võrdlus

Lisasin tubadesse ka temperatuuriandurid, mille alusel saab jälgida, mis toas tegelikult toimub. Süsteemi häälestamiseks väga vajalik riistapuu. Samuti lisasin süsteemi ka energiakuluarvesti. Nende lisamisest kirjutan järgmisel korral. Hetkel panen ülesse ühe graafiku, kus mõlemad kokku pandud ja kust näeb kui kaua maja jahtub, kui kaua ülesse köeb ning kuidas mõjub lisaküte (kamin)

Pildilt on näha, et soojuspump alustas tööd kusagil südaöösel, ca 300W elektrienergiat tarbides. Vaikselt-vaikselt hakkas kasvama ka toatemperatuur.

Graafikult on ka näha, kui kiirelt toatemperatuurile mõjus kamina süütamine. Hetkelga tõusis temperatuur ca 2C.

Toredat automatiseerimist!

Categories
Koduautomaatika nordpool

Börsikontrolleri muudatused / parandused peale nädalast testimist

Mõned vead on välja tulnud. Allpool annan ülevaate parandustest

Pumba taimer

Koodius oli väike viga sees, arvas in et for loop puhul algab i väärtus ühest, aga oli null. Muutke ära pumba taimeri kood selliselt:

  - binary_sensor:
      - name: pumba taimer
        unique_id: pumba taimer
        state: >-
          {% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %}
          {% set t = now() %}
          {% for i in range(states('sensor.heatrequest')|int) %}
            {% if (t >= l[i].start and t <= l[i].end) %}
              {{ true }}
            {% endif %}
          {% endfor %}

Salapärane väljalülitus öösel

Mingil veidral põhjusel on soojuspump ennast vahel südaöösel välja lülitanud. Kuna pumba taimeri olek ei muutunud ning switch lülitas pumba lihtsalt välja, ei rakendu ka triger, et seda uuesti sisse lülitada. Kuni täpne viga pole teada tuleks lisada üks kontroll, mis vaatab kell 00:01, kas pump ikka on sees kui ta peaks sees olema.

Lisage konfiguratisioonifaili lõppu selline osa:

automation Soojuspumba juhtimine2:  
    alias: kontroll
    trigger:
      - platform: time
        at:
        - '00:01:00'
    condition:
      condition: state
      entity_id: binary_sensor.pumba_taimer
      state: "on"
    action:
      - service: 'switch.turn_on'
        entity_id: switch.soojuspump

File Editor

Samba aseme väga mugav asi, mida konfiguratsioonifailide muutmiseks kasutada on File Editor. Siis pole vaja hakata windowsi all ip aadresse taga ajama, saab otse Home Assistanti kasututajaliidesest faili muuta.

Installeerimiseks mingi Configuration -> Add-ons vajutage Add-on store ning otsige File Editor.

Categories
Koduautomaatika nordpool

Kuidas ise valmistada börsihinda jälgiv kontroller?

Uuendus: 21.01.2022 Loodud Facebooki grupp teema arutamiseks.
Uuendus: 22.01.2022 Algse tekstiga võrreldes on lisatud ka mõned muudatused. Vaadake kindlasti siit, kui esialgse kirjelduse järgi valmistasite
Uuendus: 06.02.2022 Täiendused peale kuuajalist kasutamist

Mis? Kuidas? Millal?

Kõigepealt seletaks lahti, mis asi on börsihinda jälgiv kontroller? Tegemist on juhtimisseadmega, mille abil saab sisse-välja lülitada teisi elektriseadmeid, vastavalt Nordpooli börsihinnale.

Mis kasu tast on? Kasu on väga lihtne – ta juhib teisi seadmeid ajal mil börsihind on soodne – seega maksate tarbimise eest vähem. Antud juhendis kirjeldan ma peaasjalikult kuidas juhtida õhk-vesi soojuspumpa, kuid seda võib panna juhtima ka mitmeid muid seadmeid – radiaatorid, nõudepesumasinad, tuled, tsirkulatsioonipumbad jne.

Kuna oleks mõistlik antud juhtimissüsteemi rakendada? Iga hoone puhul ei pruugi küttesüsteemide kellaajaline juhtimine olla otstarbekas. Selline juhtimine eeldab, et hoones on kuidagi võimalik salvestada soojust. Õhk-vesi kütte puhul on kõige sobilikum, kui kasutate põrandkütet, mille mass hoiab maja soojana ka peale soojusallika väljalülitamist. Veel parem, kui teil on ka akupaak, kuhu sooja vett salvestada. Samuti sõltub otstarbekus hoone soojapidavusest. Tähtis on – kui kaua seisab maja soe ilma kütmata? Selle kindlaks tegemine on suhteliselt lihtne. Lülitage küttesüsteem välja ja jälgige mis juhtuma hakkab. Kui maja on soe ka näitks 12h pärast, siis antud lahendus on teile sobilik. Loomulikult sõltub soojapidavus ka välisõhu tempeatuurist. Mul enda maja püsib soe veel 16h järjest, kui välistemperatuur on 0 C. Kui väljas on aga -20 kraadi, siis üle nelja tunni ei kannata kütet väljas hoida.

Juhtimise põhimõte

Nagu eelnevas peatükis kirjeldatud, on mõistlik küttesüsteemi juhtida mitme erineva parameetri alusel. Olulisemad parameetertid on välisõhutemperatuur ning elektrihind. Samuti tuleb kindlaks määrata hoone küttevajadus, mida saab tuletada piirdekonstruktsioonide soojusjuhtiuvuse järgi. Me siin nüüd nii keeruliseks ei lähe ja lahendame asja katse-eksituse meetodil. Muud parameetrid, millede järgi võib veel juhtida on ruumi sisemine temperatuur, tuulekiirus, akupaagi temperatuur jne – nii peeneks samuti hetkel ei lähe.

Antud juhendis katsume soojuspumba juhtimiseks kasutada järgnevat lahendust.

  1. Kõigepealt tõmbame internetist jooksva päeva börsihinnad, tunni aja kaupa
  2. Võtame internetist piirkondliku ilmaprognoosi ning arvutame välja järgneva 12h keskmise temperatuuri
  3. Arvutame välja keskmise temperatuuri alusel mitu tundi on tarvis antud päeval kokku kütta, et maja ei jahtuks
  4. Valime välja odavaimad tunnid, millede koguse arvutasime eelnevas punktis
  5. Lülitame soojuspumpa sisse-välja vastavatel kellaaegadel.

Kindlasti peab arvestama, et me sellise tegevusega energiat otseselt väga kokku ei hoia kuna eeldame, et maja jääb siiski peaaegu kontstantselt soojaks. Välja lülitatud ajal kütab maja salvestatud energia põrandaplaadis ning akupaagis. Peale kütte sisse lülitamist peame need mõlemad uuesti “täis laadima”. Küll aga saame valida aega, millal on kõige odavam seda laadimist teostada.

Mida on tarvis?

OK, aitab mulast – läheme nüüd asja kallale.

Vajalikud seadmed on järgmised:

Raspberry Pi

Kogu asja juhtimiseks kasutame Miniarvutit Raspberry Pi 4. Sobib ka Raspberry Pi 3, kui see on juba olemas.

Osta saab ühest Taani veebipoest. Tuli kohale kolme päevaga. Hind 53€. Eestis kohapealt hetkel kusagilt ei leidnud.

Soovitav juurde tellida ka korpus 10€. Enda oma printisin ise välja 3D printeriga ning polnud vaja tellida.

Võib tarvis minna ka microHDMI kaablit (tegmist siiski päris arvutiga ning võib vajadusel ka kuvari/teleka taha ta pista) ja toiteplokki (kõlbab ka tavaline telefonilaadija USB-C otsikuga).

Releemoodul 5V

Kuna soojuspumbal on juhtimiseks üks sisend, mis eeldab potentsiaali vaba kontakti, siis selleks kasutame 5V releed. Relee juhtimisega saab meie Raspberry Pi ilusasti hakkama.

Releed saab tellida näiteks Oomipoest 2,5€ või AliExpressist 0,7€

Juhtmed ja muu pudi-padi

Mugavamaks ühendamiseks võiks kasutada pistikuga ühendusjuhtmeid, mis ilusasti sobivad releemooduli ning Raspberry ühendamiseks. Osta saab sealt samast poest kust Raspberrygi või AliExpressist sama raha eest terve hunniku.

Vaja võib veel minna juhet (2 soonelist) soojuspumba ja releemooduli vahele ning arvuti patch-kaablit (RJ45 otsikutega) Raspberry ühendamiseks ruuteriga.

SD kaart

Kindasti on tarvis ka ühte mälukaarti, võib ola ilmselt suht suvaline, minimaalselt 8GB SD kaart, kuhu peale salvestatakse juhtimistarkvara. Vaja on ka SD kaardi lugerit, millega arvutist tarkvara peale saab laadida.

Tarkvara installeerimine

Nüüd läheb asi juba põnevamaks. Kirjeldan samm sammult mida tarvis teha.

Juhtimiseks kasutame tarkvara nimega Home Assistant. Tegemist on väga võimeka nuti-kodu juhtimise tarkvaraga, millega saata kindlasti ka paljusid muid kodus olevaid nutiseadmeid juhtida. Olgu selleks siis valgustid, telekad, kaamerad või mõni muu tark vidin. Võimalused on suhteliselt piiramatud. Meie keskendume siin hetkel vaid oma teemale.

Installeerimise juhendi leiate siit. Ei hakka seda ümber jutustama, kuid tegevus lühidalt järgmine:

  • Laadite alla tarkvara (vastavalt kas Raspberry Pi 4 või 3 jaoks, 64bit)
  • Laadite alla SD kaardi ettevalmistamise tarkvara Balena Etcher
  • Selle abiga valmistage ette SD kaart ning pistke see oma Raspberry (milelle olete juba ümbrise ümber pannud) sisse.
  • Pistke Pi-le külge juhe, mis ühendatud ruuteriga ning USB kaabel toiteks

Edasi tuleb veidikene oodata kuni süsteem ennast ülesse laadib. Peale paari minutit, kui kõik läks õigesti, minge oma arvuti (mis peab internetis olema sama ruuteri kaudu) internetibrowserissse ning sisestage aadressiks http://homeassistant.local:8123 Ilmuma peab järgnev lehekülg.

Sisestage oma nimi, valige parool ja looge omale konto. Järgmisel lehel pange paika oma asukoht, see on tähtis ka hiljem, et saada sobivat ilmaprognoosi. Edasi veel paar lehte. Viimasel otsitakse ülesse kõik võrgus olevad seadmed, millega ta oskab suhelda. Vajutagi Finish. Kui kõik möödus korrektselt peaks tulema ette taoline pilt. Õnnitlen. Esimene samm on teostatud.

Lisamoodulite installeerimine

Nüüd kus baastarkvara on installeeritud, peame tõmbama juurde paar moodulit ning programmeerima Pi soojuspumpa juhtima. Kirjeldan antud juhendis vaid seda mida ise tegin, et enda süsteem tööle saada. Läheneda võib kõikidele asjadele mitmel eriviisil, kõiki kaalutlusi ei hakka lahti seletama.

Lisamoodulite installeerimine

Lülitage sisse “Advanced mode“, selleks vajutage all vasakul nurgas oma nimele ning avanenud menüüs lülitage sisse advanced mode

Samba

Installeerige mõned vajalikud “lisad”. Minge menüüsse Configuration -> Addons, valige “add-on store“. Sealt installeerige “Samba share”. Antud lisa abil saate hiljem ligi oma Raspberry Pi seadistustefailile üle võrgu).

Peale installeerimist muutke ka Samba konfiguratsiooni. Valige kasutajanimi ning parool. Seejärel salvestage.

Minge tagasi Info lehele ja lülitage Samba tööle

SSH & Web Terminal

Installeerige SSH terminal. Pikemalt ei hakka seletama aga seda läheb hiljem ühe käsu sisestamiseks tarvis. Peale installeerimist samuti käivitage (Start). Samuti valige Show in sidebar, et ta sinna küljepaneelile ilmuks.

HACS – Home Assistant Community Store

Antud tarkvara võimaldab ligipääsu kolmanda osapoolte äppidele, mida samuti tarvis. HACS installeerimine on veidikene keerulisem. Juhend selleks asub nende kodulehel. Lühidalt:

Minge äsja seadistatud ssh terminali: Valige vasakul menüüst Terminal

Avanenud konsoolile kirjutage järgnev rida:

wget -O - https://get.hacs.xyz | bash -

Kui kõik läks hästi on HACS installeeritud ning avanes järgnev pilt:

Tehke ka nüüd üks alglaadimine oma Home Assistantile.

Configuration->Settings ja valige restart

HACS on nüüd teie Raspberrysse tõmmatud. Selle installeerimiseks minge Configuration -> Devices & Services. Valige sealt Add Integration ning otsige HACS. Nõustuge kõikide tingimustega ning valige “Submit”.

Edasi suunatakse teid GitHubi, kus peate tegema konto ja seal oma HACS-i koopia autoriseerima. Et asi sujuks kiiremini soovitan GitHubi konto eelnevalt juba teostada.

NordPool

Nüüd kui see kadalip läbitud on aeg installeerida NordPooli hinnamoodul. Seda saab paigaldada äsja installeeritud HACS poest. Minge HACS -> Integrations. Valige Explore & Download repositories ning otsige “Nordpool“.

Peale installeerimist tehke ka üks alglaadimine Configuration -> Settings -> Restart.

Nordpooli mooduli aktiveerimiseks minge Configuration -> Devices and Services ning “Add Integration“. Otsige “Nordpool“. Millegipärast ta ei tahtnud sinna mul ilmuda enne kui olin browserile restardi teinud.

Nüüd on tähtis koht. Peate valima õiged parameetrid ning hinnapiirkonnad.

Nüüd on Nordpool seadistatud süsteemi jaoks kui “Sensor”, mis siis “mõõdab” hinda. Antud sensori info alusel on võimalik teha hiljem automatiseerimisi ning arvutusi. Sensori nimeks meie piirkonnas sai “nordpool_mwh_ee_eur_3_10_02”. Kui te teete teised valikud, muutub ka sensori nimi ning peate seda hilisemas konfigureerimises arvestama.

Apexcharts-card

Ilusate börsiraafikute kuvamiseks installeerige HACS->Frontend alt veel “apexcharts-card

OpenWeatherMap

Kasutame OpenWeatherMaps teenust ilmaprognoosi saamiseks. Selle paigaldamiseks tuleb minna Configuration->Devices&Services ja valida Add Integration, kust alt leiate OpenWeatherMaps. Nüüd küsitakse teie asukohta ning API võtit (Selle genereerimiseks klikake pakutud lingil. Võtab veidi aega et kasutaja teha).

Jälgige et Mode oleks hourly (uuendatakse tunni tagant)

Nüüd on kõik vajalikud tarkvarajupid ja äpid installeeritud. Jääb üle vaid kogu see krempel koos tööle panna.

Konfigureerimine

Hakkame siis pihta. Home Assistant hoiab oma konfiguratsioone ja seadistusi enda sees, failis nimaga configuration.yaml. Olgu ennetavalt öeldiudud, et põhilised asjad saab ka läbi ilusa veebiliidese teostatud. Kuna antud ülesanne on veidikene custom made, siis seetõttu tuleb ka veidi failis surkida. Kui soovite täpsemalt aru saada, mida me teeme, siis peaks kindlasti tutvuma ka manualiga. Antud platvorm on väga võimas ja kindlasti kui selle pumbaga ühele poole saate, soovitan ka muid asju kodus vaadata, automatiseerimise pilgu läbi, mis siis võiks hoopis lihtsalmalt käia.

Konfiguratsioonifailile ligipääsemiseks installeerisime eelnevalt Samba Share mooduli. Et seda näha, kirjutage oma windowsi failihalduri aadressi reale \\<ip aadress>. Mu koduruuter andis talle aadressiks 192.168.0.67. IP aadressi saate vaadata kui lähede HA menüüsse Configuration-> Addons Bacup Supervisor, sealt ülevalt valite System. Kaardil Host peaksite nägema oma IP aadressi. Hiljem saab antud menüüs seadistada ka WiFi, peale mida võite oma võrgukaabli eemaldada (hiljem täpsemalt).

Nüüd küsitakse teilt kasutajanime ning parooli, mida eelnevalt Samba seadistamise ajal sisestasite.

Edasi minge kausta config ning avage tekstiredaktoriga (notepad näiteks) fail configuration.yaml

Configuration.yaml

Paari sõnaga kirjeldan ette üldiselt, mida me siin teeme. Et midagi juhtida on meil tarvis juhtimisinfot (mille aluselt juhtimine toimub, HA puhul nimetame neid sensoriteks) ning juhitavat seadet. Antud konfiguratsioonifailis tekitame ise juurde mõned sensorid ja samuti tekitame ka “lüliti” soojuspumba juhtimiseks. Lüliti hakkab hiljem juhtima releed.

Avame faili

Faili ees olevad read peab kindlasti säilitama. hiljem kirjeldatud read kopeerige sinna alla lihtsalt. Failis on näha, et antud faili liidetakse hiljem ka teiste failide sisu. Meid hiljem huvitab veel nendest fail automations.yaml.

Muidu üldiselt on igasugused andurid juba sisse ehitatud. Kui tahame tekitada oma virtuaalseid andureid, siis tuleb kasutada selleks ette nähtud “templatete” põhist kirjeldust. Templated kirjeldatakse mingis Jinja keeles, mida nägin esimest korda. Täpsemalt saab uurida siit.

Kindlasti jälgige ka “joondust”, et erinevad read oleks üksteise kohal alla õiges kohas. All väike tulevikupilt, kuhu tahame jõuda.

Keskmise temperatuuri sensor

Keskmist tuleviku temperatuuri on tarvis, et saaks aru mis lähiajal juhtuma hakkab ning vastavalt sellele reageerida. Arvestades maja soojapidavust tundub, et mõistlik on arvutada ca järgneva 12h keskmine. Pikemaaegsem annab liiga keskmise, millele kütte süsteem ei jõua reageerida õigesti. Keskmise temperatuuri arvutamisks kasutasin lihtsalt lahendust, liitsin kokku nelja prognoositava tunni temperatuurid ning jagasin neljaga. Sensori nimeks tuleb “keskminetemp”.

template:

  - sensor: 
    - name: keskminetemp
      unique_id: keskminetemp
      state: >-
        {% set list=state_attr('weather.openweathermap', 'forecast') %}
        {{ (list[0].temperature + list[4].temperature + list[8].temperature + list[12].temperature) / 4 }}

Salvestage fail. Nüüd laadime iga sammu järel konfiguratsiooni uuesti sisse ja testime et töötaks. Seda sammu ma rohkem ei kirjelda aga peaks tegema iga sammu järel. Minge “Configuration->Settings“. Vajutage kõigepealt Check Configuration, mis kontrollib et vigu polels. Kui on OK, siis vajutage all “Template Entities“, mis laadib konfiguratsioonist sisse uued seaded.

Peale seda peaks tekkima sensor “keskminetemp“. See tekib üldjuhul ka Overview rubriiki. Seal hiljem korrastame kõik vajalikud andmed ära. OpenWeatherMap on kõvasti seal segadust tekitanud.

Teine koht, kust saate parameetreid vaadata on Developer Tools. Seal on loetletud kõik parameetrid mida süsteem kasutab.

Küttevajadus

Järgmisena katsume keskmise temperatuuri alusel välja arvutada, mitu tundi on vaja küttesüsteemil töötada. Selleks võib kasutada midagi väga keerukat aga ma lahendasin suhteliselt lineaarse valemi abil. Ise kasutasin sellist valemit (keskminetemp-6)x(-0,5)+6. See andis tulemuseks eelnevalt katsetatud küteajad, kus 0 kraadi juures on mul vaja pumpa töös hoida 9 tundi, -20 puhul 19 tundi. Võibolla vaja hiljem ka korrigeerida. Graafikut saate katsetada Excelis.

Et kuna ööpäevas on 24 tundi, mis ei saa negatiivseks minna, panin ka programmiliselt piirangud. Samuti jätsin et päevas vähemalt 1h asi kütaks, et suvel saaks veeboileri selle ajaga kasvõi köetud siis kõige odavamal tunnil.

  • sensor:
    • name: heatrequest
      unique_id: heatrequest
      state: >-
      {% set req_hours = (states(‘sensor.keskminetemp’)|int – 6) * -0.5 + 6 %}
      {% if (req_hours > 24) %}
      req_hours=24
      {% elif (req_hours < 1) %}
      req_hours=1
      {% endif %}
      {{ req_hours|int }}

Testige ja vaadake kas tekkis sensor nimega “heatrequest” ja ta peab näitama ka mingeid numbreid.

Pumba taimer

Järgmine sensor mille teeme on binaarne, ehk tema väljund on 0 või 1. See on nüüd üks tähtsamaid osasid, mis siis valib välja eelmises punktis saadud tundude koguse hulgast need kõige magusamad (odavamad). Kui tund on odav, siis annab väärtuseks 1, kui kallis siis 0. Antud info järgi hakkame juhtima ka pumpa.

  - binary_sensor:
      - name: pumba taimer
        unique_id: pumba taimer
        state: >-
          {% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %}
          {% set t = now() %}
          {% for i in range(states('sensor.heatrequest')|int) %}
            {% if (t >= l[i].start and t <= l[i].end) %}
              {{ true }}
            {% endif %}
          {% endfor %}

Vaadake, et Nordpooli sensori nimi on sama mille te eelnevalt tekitasite. Peale seda testige kas sensor töötab. Antud sensor peaks tekkima binaarsensorite rubriiki

Odava hinna piir

See miinimumhind, millega taimer sisse lülitub oleks ilus ka teada saada. Selleks tegin järgmise sensori, mille nimeks odavhind. Hiljem saab selle ka graafikul ilusasti visualiseerida.

  - sensor:
      - name: odavhind
        unique_id: odavhind
        state: >-
          {% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %}
          {{ l[states('sensor.heatrequest')|int-1].value }}

Soojuspumba lüliti

Nüüd on sensoritega kõik. Tekitame juurde ka ühe “lüliti”, mis hakkab soojuspumpa hiljem juhtima. Juhtimiseks kasutame Raspberry plaadil olevaid ühendusi (pin), mida siis tarkvaraliselt sisse ja välja lülitame, nagu tavalülitigi toimib. Hilisemas riistvara ühenduste peatükis selgitan lähemalt. Hetkel on vaja vaid teada et ühendame soojuspumba pinile nr 17.

switch:
  - platform: rpi_gpio

    ports:
      17: soojuspump
      18: reserv

Edasi tuleb teha restart (Configuration->Settings ja sealt Restart).

Tekkis juurde kaks lülitit (meelega jätsin teise reservi, et tulevikus midagi sinna ka ühendada)

Soojuspumba automaatjuhtimine

Nüüd kus kõik vajalikud komponendid on olemas, jääb vaid üle see süsteem automatiseerida.

Lisage järgmised read ning salvestage.

automation Soojuspumba juhtimine:
    initial_state: 'on'
    alias: Soojuspumba juhtimine
    trigger:
      - platform: state
        entity_id: binary_sensor.pumba_taimer
        to: 'on'
      - platform: state
        entity_id: binary_sensor.pumba_taimer
        to: 'off'
    action:
      - service_template: 'switch.turn_{{trigger.to_state.state}}'
        entity_id: switch.soojuspump

Siin sisuliselt automatiseeritakse lüliti switch.soojuspump juhtimine vastavalt trigerile, milleks on binary_sensor.pumba_taimer . Selliseid automatiseerimisi saab tegelikult teostada ka graafiliselt Configuration – Automation menüüs.

Täpsemalt automatiseerimise kohta saate lugeda siin.

Tehke veel üks restart.

Menüüsse Configuration->Automation & Scenes peab ilmuma nupp “Soojuspumba juhtimine”, mis sisselülitatud asendis käivitab automaatjuhtimise.

Palju õnne! Teil on nüüd laua peal juba töötav süsteem olemas!

Lisan siia pisikeselt kogu konfiguratsioonifaili sisu, et saaksite copy&pasteda.



# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

lovelace:
#  mode: yaml
  resources:
  - url: /local/apexcharts-card.js?v=1.10.0
    type: module
# Text to speech
tts:
  - platform: google_translate


group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

template:

  - sensor: 
    - name: keskminetemp
      unique_id: keskminetemp
      state: >-
        {% set list=state_attr('weather.openweathermap', 'forecast') %}
        {{ (list[0].temperature + list[4].temperature + list[8].temperature + list[12].temperature) / 4 }}

  - sensor: 
    - name: heatrequest
      unique_id: heatrequest
      state: >-
        {% set req_hours = (states('sensor.keskminetemp')|int - 6) * -0.5 + 6 %}
        {% if (req_hours > 24) %} 
          req_hours=24
        {% elif (req_hours < 0) %} 
          req_hours=0
        {% endif %}
        {{ req_hours|int }}

  - binary_sensor:
      - name: pumba taimer
        unique_id: pumba taimer
        state: >-
          {% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %}
          {% set t = now() %}
          {% for i in range(states('sensor.heatrequest')|int) %}
            {% if (t >= l[i].start and t <= l[i].end) %}
              {{ true }}
            {% endif %}
          {% endfor %}

  - sensor:
      - name: odavhind
        unique_id: odavhind
        state: >-
          {% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %}
          {{ l[states('sensor.heatrequest')|int-1].value }}

switch:
  - platform: rpi_gpio
#    invert_logic: true
    ports:
      17: soojuspump
      18: reserv

automation Soojuspumba juhtimine:
    initial_state: 'on'
    alias: Soojuspumba juhtimine
    trigger:
      - platform: state
        entity_id: binary_sensor.pumba_taimer
        to: 'on'
      - platform: state
        entity_id: binary_sensor.pumba_taimer
        to: 'off'
    action:
      - service_template: 'switch.turn_{{trigger.to_state.state}}'
        entity_id: switch.soojuspump
  

  

Graafikud ja visualiseerimine

Enne kui läheme juhtmeid ühendama, teeme veel mõned ilusad graafikud, mida saate hiljem mobiilist ja arvutist vaadata. Kogu jälgimise osa on siis juba eelnevalt vaadeldud Overview menüüs.

Graafikute saamiseks lisage eelmises peatükis kirjaldatud konfiguratsioonifaili ülaossa veel järgmine lõik:

lovelace:
  resources:
  - url: /local/apexcharts-card.js?v=1.10.0
    type: module

Eelnevalt paigaldatud graafikute kuvamise mooduli apexchart-card aktiveerimiseks minge menüüsse Configuration -> Dashboard, siis valge ülevalt menüüst Resources. Valige Add resource ning kirjutage avanenud aknasse

/local/apexcharts-card.js?v=1.10.0

Lisage ka teine ressurss

/hacsfiles/apexcharts-card/apexcharts-card.js?hacstag=3317011521100

Tulemus võiks olla midagi sellist

Salvestage ning tehke restart. NB! sulgege ka browseri aken ja käivitage uuesti. Vastasel juhul need graafiku elemendid ei ilmu.

Minge uuesti menüüsse Overview, seal paremal üleval menüüst valige “Edit Dashboard”. Ma siinkohal jätan nüüd teile vavastamise rõõmu, et saaksite puhastada oma Dashboardi ebaolulisest ja teha uue kaardi, kus kõik antud rakenduse jaoks olevad elemendid kokku koondatud.

Mul endal tekkis midagi sellist:

Lisame ka ühe ilusa graafiku börsihindadega. Selleks valime Add Card ning otsime Apexchart-cardi, mille eelnevalt aktiveerisime.

Avanenud konfiguratsiooniaknasse lisage järgnev kood:

type: custom:apexcharts-card
experimental:
  color_threshold: true
graph_span: 24h
header:
  title: Elektrihind täna
  show: true
span:
  start: day
apex_config:
  dataLabels:
    enabled: true
now:
  show: true
  label: Hetkel
series:
  - entity: sensor.nordpool_mwh_ee_eur_3_10_02
    name: Elektrihind täna
    type: column
    data_generator: |
      return entity.attributes.raw_today.map((start, index) => {
        const andmed = [new Date(start["start"]).getTime(), entity.attributes.raw_today[index]["value"]];
        return andmed;
      });
    color_threshold:
      - value: 0
        color: green
        opacity: 1
      - value: 60
        color: yellow
      - value: 100
        color: red
  - entity: sensor.odavhind
    name: Madal hind
    unit: €
    type: line

Tulemus võiks olla midagi taolist

Sinine joon näitab millise hinna tasemelt kütma hakatakse täna. Graafiku järgi tundub päris hea lõige. Endale lisasin veel ühe graafiku, kuhu panin järgmise koodi, mis teeb tänase ja homse hinna võrdluse:

type: custom:apexcharts-card
experimental:
  color_threshold: true
graph_span: 24h
header:
  title: Elektrihind homme vs täna
  show: true
span:
  start: day
  offset: +1d
now:
  show: true
  label: Hetkel
series:
  - entity: sensor.nordpool_mwh_ee_eur_3_10_02
    name: Hind homme
    type: column
    data_generator: |
      return entity.attributes.raw_tomorrow.map((start, index) => {
        return [new Date(start["start"]).getTime(), entity.attributes.raw_tomorrow[index]["value"]];
      });
  - entity: sensor.nordpool_mwh_ee_eur_3_10_02
    name: Hind täna
    offset: '-1d'
    type: column
    data_generator: |
      return entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["start"]).getTime(), entity.attributes.raw_today[index]["value"]];
      });

Nüüd softi poolega on kõik!

Endale veel lisasin siia kaamerapildi ja veid muud pudi-padi.

WIFI ühendus

Et kogu süsteem mobiilsem oleks ning ei peaks olema võrgukaabliga ruuteri taga, oleks mõistlik kodusesse wifisse ühenduda.
Wifi võrku ühendumiseks minge Configuration->Addons, Backup&Supervisior, valige ülevalt menüüst System ning lahtris IP Address vajutage Change.

Klikkige WLAN0 peale ning valige pildil olevad settingud ning otsige oma wifi võrk

Kui võrk leitud, sisestage kindlasti ka ligipääsu parool. Üldjuhul WPA-PSK on õige valik

Valige Reboot Host, mille peale taaskäivitatakse Pi. Ühendage lahti võrgukaabel ning vaadake, kas ta ilmub tagasi võrku 🙂

Juhtmete ühendamine

Juhtmete ühendamise jagan kahte etappi. Kontrolleri ja relee vahelised ühendused. ning Relee ja soojuspumba vahelised ühendused.

Raspberry Pi ühendamine releemooduliga

Kõgepealt siia üks pilt, kus on lahti seletatud Pi ühendused.

Eelnevalt oli ka juttu, kui seadistasime lülitit, siis programmis viitasime pordile “17”.

See tähendaski, et käsu rakendumisel antakse antud klemmile GND suhtes. 5V. Tehke ühendused selliselt:

Pi +5V ühendage relee Vcc klemmiga
Pi GND ühendage relee GND klemmiga
Pi GPIO17 ühendage relee IN klemmiga

Relee võite kahepoolse teibiga liimida näiteks Pi karbi külge.

Kui nüüd süsteem toimib, siis peab kuulma relee klõpsamist kui vajutada soojuspumba lülitit.

Kui soojuspump peaks tööle minema, lülituvad klemmid COM ja NO kokku. See annabki käsu soojuspumba käivitumiseks.

Relee ühendamine soojuspumbaga

Nüüd on kontrolleri pool kõik valmis. Jääb ühendada vaid soojuspumba klemmidele. See osa on muidugi huvitav kuna kõikidel soojuspumpadel see erinevalt lahendatud. Peata ülesse otsima manuali. Toon näitena kuidas enda Panasonic WH-SXF12D9E8 puhul asi käib.

Netist leidsin “Service manuali”. Sarnane asi peaks olema kõikidel pumpadel. Pildil on näha et klemmid 17 ja 18 on kokku sillatud. Ühendasin antud silla lahti ja panin asemele meie relee. Kui sild maas, soojuspump lülitub välja, kui kinni, soojuspump lülitub sisse. Enne ühenduste teostamist lülitage kindlasti oma soojuspump välja ning lülitage ka kilbist kaitse välja. Kõik mida teete on omal vastutusel!

Siin üks foto ka pumba sisemusest kuidas ühenduse teostasin. Punase juhtmega olnud silla ühendasin lahti ning selle asemele ühendasin releemooduli väljundi.

Edasi tuleb lihtsalt kõik kokku kruvida ning viisakaks muuta. Raspberry võib ka kusagile soojuspumba kesta sisse peita, kui sinna WiFi levib. Vaja vaid toidet USB-C kaabliga!

Kokkuvõte

Iseenesest polegi väga keerulime sellist juhtimist ise teostada. Peab veidikene olema elektrialaseid teadmisi. Kui ise ei saa hakkama, siis kindlasti leiate kellegi vastava eriala tuttava 🙂

Kuna see Home Automation on väga võimekas, siis jätkan enda kodu automatiseerimist. Kirjutan ka tulevikus, mida olen korda saatnud. Juba olen tellinud erinevaid huvitavaid vidinaid, mida ühendada HA-ga ning millega saab väga odavalt väga huvitavaid asju korda saata.

Loodan, et antud kirjutus meeldis teile!