Vanhaan pesutorniin lisää älyä

Vanhaan pesutorniin lisää älyä

Monissa uusissa kodinkoneissa on nykyisin erilaisia niin kutsuttuja älyominaisuuksia. Esimerkiksi pyykinpesukoneen jäljellä olevaa pesuaikaa voi seurata älypuhelimella ja pesukoneelta saa ilmoituksen puhelimeen kun pesuohjelma on päättynyt. Näiden ominaisuuksien takia uutta konetta ei kannata kuitenkaan hankkia, sillä ominaisuudet saa vanhaankin koneeseen Home Assistantin avulla. Tällöin ei myöskään tarvitse käyttää laitevalmistajan omaa sovellusta. 

Pesuohjelman alkaminen, päättyminen ja jopa pesuohjelman eri vaiheet voidaan päätellä koneen hetkellisen ottotehon avulla. Laitteen ottotehoa voidaan seurata esimerkiksi iTead Sonoff Pow:n tai energiankulutuksen seurantaan taipuvan älypistorasian kuten TP-Link HS110:n avulla.

Kun pesukoneen ottoteho nousee määrätyn rajan yläpuolelle, on pesuohjelma alkanut ja kun ottoteho laskee lähelle nollaa on pesuohjelma päättynyt. Yleisimmin käytetyn ohjelman kesto voidaan aluksi arvioida ja tarvittaessa tarkentaa sitä  lopetus- ja aloitusajan erotus laskemalla.

Pesukoneen ottoteho
Pesukoneen ottoteho

Home Assistant tukee TP-Linkin älypistorasioita suoraan. Oma pesutornini on kuitenkin erillisen päävirtakytkimen takana, jolloin virran katkeaminen TP-Linkeistä saattaa aiheuttaa satunnaisia yhteysongelmia Home Assistantin kanssa. Ratkaisin ongelman käyttämällä erillistä komentorivi-skriptiä Home Assistantin natiivin tuen sijaan.

Home Assistantin konfiguroinnissa käytetään packages -toimintoa. Pesutornin toimintoja varten tehdään packages/pesutorni.yaml -tiedosto ja siihen lisätään seuraavat rivit:

homeassistant:
  customize:
    sensor.pesukone_watts:
      friendly_name: Pesukoneen ottoteho
      icon: mdi:flash

    sensor.kuivausrumpu_watts:
      friendly_name: Kuivausrummun ottoteho
      icon: mdi:flash

timer:
  pesukone:
    duration: '01:45:00'
  kuivausrumpu:
    duration: '01:35:00'

sensor:
  - platform: command_line
    name: pesukone_watts
    command: "/home/homeassistant/.homeassistant/custom_components/tplink/hs100.sh -i 192.168.XXX.YYY emeter | jq '.emeter .get_realtime .power_mw' | awk '{print $1/1000}' | awk '{printf \"%.0f\",$1}'"
    unit_of_measurement: "W"

  - platform: command_line
    name: kuivausrumpu_watts
    command: "/home/homeassistant/.homeassistant/custom_components/tplink/hs100.sh -i 192.168.XXX.ZZZ emeter | jq '.emeter .get_realtime .power_mw' | awk '{print $1/1000}' | awk '{printf \"%.0f\",$1}'"
    unit_of_measurement: "W"

automation:
  - alias: 'Pesukoneen ajastin käyntiin kun teho nousee'
    trigger:
      platform: numeric_state
      entity_id: sensor.pesukone_watts
      above: '100'
    condition:
      condition: state
      entity_id: timer.pesukone
      state: 'idle'
    action:
      - service: timer.cancel
        entity_id: timer.pesukone
      - service: timer.start
        entity_id: timer.pesukone

  - alias: 'Viestin lähetys kun pesukone on pessyt ja kuivausrumpu ei laitettu päällä'
    trigger:
      platform: numeric_state
      entity_id: sensor.pesukone_watts
      below: '1'
    condition:
      condition: state
      entity_id: timer.pesukone
      state: 'active'
    action:
      - service: timer.cancel
        entity_id: timer.pesukone
      - wait_template: "{{ states.sensor.kuivausrumpu_watts.state|int > 100 }}"
        timeout: '00:30:00'
      - service: script.viesti_jos_kuivausrumpu_ei_paalla

  - alias: 'Kuivausrummun ajastin käyntiin kun teho nousee'
    trigger:
      platform: numeric_state
      entity_id: sensor.kuivausrumpu_watts
      above: '100'
    condition:
      condition: state
      entity_id: timer.kuivausrumpu
      state: 'idle'
    action:
      - service: timer.cancel
        entity_id: timer.kuivausrumpu
      - service: timer.start
        entity_id: timer.kuivausrumpu

  - alias: 'Viestin lähetys kun kuivausrumpu on kuivanut'
    trigger:
      platform: numeric_state
      entity_id: sensor.kuivausrumpu_watts
      below: '50'
    condition:
      condition: state
      entity_id: timer.kuivausrumpu
      state: 'active'
    action:
      - service: timer.cancel
        entity_id: timer.kuivausrumpu
      - service: notify.mobile_app_iphone
        data:
          message: 'Siirrä pyykit pois kuivausrummusta'
          title: 'Kuivausrumpu on kuivanut!'

script:
  viesti_jos_kuivausrumpu_ei_paalla:
    alias: Viesti jos kuivausrumpu ei ole päällä
    sequence:
      - condition: numeric_state
        entity_id: sensor.kuivausrumpu_watts
        below: '50'
      - service: notify.mobile_app_iphone
        data:
          message: 'Siirrä pyykit pois pesukoneesta'
          title: 'Pesukone on pessyt!'

Home Assistant lähettää viestin kun pesukone on pessyt jos pyykkejä ei 30 minuutin sisällä siirretä kuivausrumpuun. Kuivausrummun ohjelman päättymisestä lähetetään myös viesti.

Pesukone
Pesukone

6 thoughts on “Vanhaan pesutorniin lisää älyä

  1. Tein itse tuossa muutama viikko sitten samoilla TP-Linkin kilkkeillä astianpesukoneelle ja pyykinpesukoneelle vähän vastaavaa. Kuitenkin vähän vaikeamman kautta (ja nyt ehkä vähän kaduttaa).

    Tuo oma viritys osaa suht luotettavasti näyttää nyt eri statukset molemmille koneille, kuten ”Likaisia / Tyhjä”, ”Pesee”, ”Kuivaa”, ”Valmis”.

    Kuitenkin paino sanalla ”suht” 🙂 Pyykinpesukone menee suht ongelmitta ja siinä voi myös luottaa statuksiin aika hyvin (kun virrat sammuu kokonaan, voi meidän taloudessa yleensä luottaa siihen, että kone tyhjennetään samalla jolloin statuksen voi ns. nollata alkuun).

    Astianpesukone on kuitenkin vähän hankalampi ja se mm. lähettää nyt kaksi notifikaatiota valmistumisesta, yhden kun siinä on joku kuivauksen loppuvaihe menossa ja toisen sitten kun se on oikeasti valmis. Ts. sen tehot tippuu aiemmin jo niin alas, että tulee väärää hälyä.

    Lisäksi apk:n virrat otetaan yleensä kokonaan pois ja avataan luukku, mutta tyhjennys tapahtuu vasta joskus. Tai ei koskaan, jos asian jättää lapsille tehtäväksi. Jolloin tuo likaisia/puhtaita -status on melko epäluotettava.

    On mukamas niin miljoona eri automaatiota ja uutta laitetta koko ajan työn alla, etten ole vielä ehtinyt tuota iteroimaan parempaan (monimutkaisempaan tai yksinkertaisempaan) muotoon.

    Molemmille olisi kuitenkin ihan hyvä tarve. Meillä siirtyi pesukone juuri paikkaan, josta sen piippausta ei kuule ja toisaalta apk:n tyhjennys olisi kiva edes välillä (yrittää) ulkoistaa lapsille. Jos notifikaatioihin voisi luottaa, voisi sitten viimeinkin iskeä laatikosta löytyvän Google Homen kiinni ja alkaa sen kautta huudattamaan text to speachin kautta kotona tyhjennyskäskyä.

    1. Olet selvästi virittänyt tuon seuraavalle tasolle. 🙂 Ehkä täytyy itsekin moista yrittää joskus jos/kun ehtii. Tosin meillä tämä on lähinnä kuriositeetti, kun molemmat koneet kuulee kun ovat pesseet.

      En tiedä saisiko noita vääriä hälyjä karsittua esim. tuon timerin avulla, sillä oletuksella että käytettäisiin (lähes) aina samaa pesuohjelmaa. Joku on virittänyt myös kiihtyvyysanturin koneen kylkeen (esim. ruuvitag), jonka antamilla lisätiedoilla tuota voisi saada tarkemmaksi (esim. kun luukun avaa pesun jälkeen).

  2. GitHubin perusteella pesukoneen seuranta ei ole enää käytössä, joten olisin kiinnostunut kulemaan mikä johti luopumiseen. Oliko se ongelmat, ei enää tarvetta vai uudempi parempi keino?

    Harkitsen juuri tämän toteuttamista ensimmäisenä IoT ja Home Assistant projektina pesukoneelle ja kuivausrummulle, joten TP-Link HS110 pistorasiat eivät ole halvimmasta päästä.

    1. Muistaakseni en tätä koskaan lisännyt Githubiin koska en jaksanut siivota konfiguraatiota ip-osoitteista ym. ei-julkisista asioista. Pesutornin seuranta on edelleen kyllä käytössä ja se on toiminut kuten pitääkin. HS110:lle löytyy varmasti edullisempiakin vaihtoehtoja, nuo olivat vain itsellä jääneet ylimääräisiksi. Esim. Sonoff POW:lla voisi tehdä tarvittavan välijohdon.

      1. Kiitos vastauksesta. Voisitko harkita pesutornin konfiguraation julkaisua (siivottuna) GitHubiin ja/tai päivitettyä artikkelia?

        Muutoinkin päivitetty katsaus nykyisestä setupista kiinnostaa, koska oletettavasti muutoksia on tapahtunut artikkeleiden julkaisuiden jälkeen.

        Deltaco Smart Plug SH-P01E ja SH-P02 mallit ovat tällä hetkellä edullisimmat, jotka olen EU pistorasioista löytänyt. Ne ensin pitää reflashaa ESPHome firmwarella, mutta tuya-convert GitHub issuen perusteella Deltaco on vaihtanut valmistuksessa piirä, joka estää sen.

        1. Päivitin nyt artikkelin vastaamaan nykytilannettani. Konfiguraation komentorivikäskyt voisi ehkä tehdä elegantimminkin. 😀

Vastaa

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