Auto lämpimäksi energiaa säästäen

Auto lämpimäksi energiaa säästäen

Talvi lähestyy ja kelit viilenevät. Sisällä, talon sähkökaapissa olevalla kellokytkimellä voi asettaa mihin aikaan autokatoksen pistorasia ja niissä kiinni oleva auton lämmitys kytkeytyy päälle ja pois. Asian voi kuitenkin hoitaa fiksumminkin. Apuun tulee jälleen iTead Sonoff, tällä kertaa Pow -malli.

Sonoff Pow
Sonoff Pow

Sonoff Pow on hieman Basic -mallia kookkaampi, mutta se voi käsitellä maksimissaan 16A virtaa, joten se riittää auton moottorinlämmittimelle ja myös sisätilanlämmittimelle. Laite ei itsessään ole vesitiivis, joten se tarvitsee koteloida asianmukaisesti mikäli se asennetaan ulkotiloihin. Laiteohjelmiston päivitys ja liittäminen Home Assistantiin tapahtuu samalla tavalla kuin Sonoff Basicilla aikaisemmin olohuoneen valojen kanssa.

Lähtöajalle tehdään parametri, jota voidaan muuttaa Home Assistantin käyttöliittymässä, lisäämällä configuration.yaml -tiedostoon alla olevat rivit.

input_datetime:
  lahtoaika:
    name: Lähtöaika
    has_date: false
    has_time: true
    initial: '07:15'

Tarvittava lämmitysaika lasketaan ulkoilman lämpötilan perusteella niin että jos pakkasta on yli 10 astetta, on lämmitysaika aina kaksi tuntia. Jos ulkolämpötila on yli 0 astetta, ei autoa lämmitetä lainkaan. 0…-10 asteen välillä tarvittava lämmitysaika lasketaan lineaarisella kaavalla, niin että 0 asteessa lämmitysaika on 30 minuuttia ja -10 asteessa 120 minuuttia. Lämmityksen aloitusaika lasketaan tämän jälkeen vähentämällä tarvittava lämmitysaika lähtöajasta. Sonoff Pow osaa kertoa myös senhetkisen tehon ja jännitteen kun nille tekee omat sensorit.

- platform: template
  sensors:
    autonlammitysaika:
      value_template: '{%if states.sensor.ulkoilma.state | float>0%}0{%elif states.sensor.ulkoilma.state | float<-10 %}120{%else%}{{(states.sensor.ulkoilma.state|multiply(-9)+30)|int}}{%endif%}'
      friendly_name: 'Tarvittava lämmitysaika'
      unit_of_measurement: "min"
      icon_template: 'mdi:timelapse'

- platform: mqtt
  name: "Auton lammitysteho"
  state_topic: "autotalli/1/power"
  qos: 1
  unit_of_measurement: "W"
  value_template: "{{ value_json.Power }}"

- platform: mqtt
  name: "Auton lammitysjannite"
  state_topic: "autotalli/1/power"
  qos: 1
  unit_of_measurement: "V"
  value_template: "{{ value_json.Voltage }}"

Auton lämmitys käynnistetään alla olevalla automaatiolla kun kellonaika on sama kuin auton lämmityksen aloitusaika. Ehtona on että lämmitys on asetettu automaattiseksi. Lisäksi automaatio toimii tässä tapauksessa vain arkipäivisin. Lämmitys lopetetaan kun kello on lähtöaika.

- alias: 'Auton lämmitys päälle'
  trigger:
    platform: template
    value_template: '{{states.sensor.time.state == states.sensor.autonlammitysaloitusaika.state}}'
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: input_select.autonlammitysasetus
        state: 'Automaattinen'
      - condition: time
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
  action:
    - service: switch.turn_on
      entity_id: switch.auton_lammitys
Auton lämmitys
Auton lämmitys

7 thoughts on “Auto lämpimäksi energiaa säästäen

  1. Mittaileeko tämä lennosta lämpötilaa ja sen mukaan kytkee päälle?
    Elinjos lähtöaika on laitettu illalla 7:15 ja 5:15 on -20 nii n laittaa silloin lämmityksen päälle?

    1. Juurikin noin. Lämmityksen aloitusaika päivittyy jatkuvasti ulkolämpötilan ja lähtöajan mukaan. Lämmitys käynnistetään kun tuo aika saavutetaan.

  2. tästä vielä. jälkimmäisessä on
    states.sensor.autonlammitysaloitusaika.state ja tuossa keskimmäisessä on autonlammitysaika niin onko nuo samaa ? vai missä tuo sensor määritettän?

    1. autonlammitysaika on aika minuutteina ja autonlämmitysaloitusaika on kellonaika kun lämmitys käynnistetään. Lämmityksen aloitusaika saadaan vähentämällä lämmitysaika lähtöajasta. Olet oikeassa ettei sitä varsinaisesti määritelty suoraan missään, koska en ole keksinyt sille kovinkaan eleganttia toteutustapaa. Alla kuitenkin sensorin määrittely koko hirveydessään. Siinä aloitusaika muutetaan ensin minuuteiksi jotta em. vähennyksen voi tehdä. Vähennyslaskun jälkeen tulos muutetaan takaisin kellonaikaesitysmuotoon jotta se toimii automaatiossa tehtävässä vertailussa.

      autonlammitysaloitusaika:
      value_template: '{% if ((states.input_datetime.lahtoaika.state[0:2]|int*60+states.input_datetime.lahtoaika.state[3:5]|int-states.sensor.autonlammitysaika.state|int)/60)|int < 10 %}0{% endif %}{{((states.input_datetime.lahtoaika.state[0:2]|int*60+states.input_datetime.lahtoaika.state[3:5]|int-states.sensor.autonlammitysaika.state|int)/60)|int}}:{% if ((((states.input_datetime.lahtoaika.state[0:2]|int*60+states.input_datetime.lahtoaika.state[3:5]|int-states.sensor.autonlammitysaika.state|int)/60)-((states.input_datetime.lahtoaika.state[0:2]|int*60+states.input_datetime.lahtoaika.state[3:5]|int-states.sensor.autonlammitysaika.state|int)/60)|int)*60)|int < 10 %}0{% endif %}{{((((states.input_datetime.lahtoaika.state[0:2]|int*60+states.input_datetime.lahtoaika.state[3:5]|int-states.sensor.autonlammitysaika.state|int)/60)-((states.input_datetime.lahtoaika.state[0:2]|int*60+states.input_datetime.lahtoaika.state[3:5]|int-states.sensor.autonlammitysaika.state|int)/60)|int)*60)|int}}'

  3. kiitos paljon!
    joku tuossa mättää itelläni kun ei käynnisty, mutta jatkan tutkimuksia

    1. Toivottavasti saat toimimaan. Kannattaa laittaa nuo kaikki sensorit (lähtöaika, lämmitysaika ja lämmityksen aloitusaika) näkyviin tai ainakin katsoa states (tilat) -toiminnon kautta että ne saavat järkeviä arvoja.

      Automaatiossa oleva vertailu vaatii toimiakseen että aloitusaika on muodossa ’HH:MM’, kuten on myös states.sensor.time.state. Testausmielessä voi kannattaa kokeilla tuota vertailua ensin kiinteään kellonaikaan ja vasta sen jälkeen laskea aloitusaika lähtöajan ja lämpötilan perusteella.

  4. siinä lähtöajassa se taitaa vika juuri tulla kun etusivulla on vaikka nyt 07:14PM vaikka states kohdassa aika oikeassa muodossa 19:14,
    asetukset on oikein metric aika vyöhyke oikein.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *