webCoRE piston Ikea Trådfri -lampuille

Siitä hetkestä lähtien, kun hankin itselleni Ikea Trådfri -lamppuja käytettäväksi Philips Hue -sillan kanssa, olen törmännyt erilaisiin ongelmiin ajastusten ja lampun värin/kirkkauden säädön suhteen. Ongelman huomaa esim. tilanteissa, joissa Hue-siltaan paritettujen ulkovalojen pitäisi mennä päälle klo 18. Tuolloin vain Hue-lamput syttyvät, mutta Ikeat saattavat jäädä pimeiksi tai syttyä himmeinä. Olen yrittänyt taklata tätä osittaista toimimattomuutta rakentamalla erilaisia webCoRE-pistoneita, joista ensimmäinen ajetaan 13 minuuttia vaille auringonlaskua. Minulla on Huessa määritelty ulkovalot syttymään 15min ennen auringonlaskua, siksi piston ajetaan pari minuuttia Huen ajon jälkeen. Pistonin tarkoitus on yksinkertaisesti se, että jos (IF) ulkovaloista yksikään ei ole päälle, niin (THEN) laita ulkovalot päälle.

Tämän jälkeen olen odottanut 2min ennen seuraavaa ajastettua piston-ajoa. Toisessa pistonissa tarkastetaan ulkovalojen HSL, eli ”hue”, ”saturation” ja ”level”. Kun tarkastus tehdään eri lampputyypeille, pitää jokaisella erilaiselle lamppuryhmälle määrittää oma haluttu HSL arvo. Tämän pistonin jälkeen tilanne pitäisi olla se, että kaikki ulkovalot ovat päällä ja oikeassa HSL-arvossaan.

Lopuksi pitää kuitenkin ajaa vielä yksi piston, jolla varmistetaan, että kaikkien lamppujen kirkkaustaso olisi 100%. Voisi kuvitella, että HSL-arvoa komentamalla lampun kirkkauden taso olisi jo määritelty, mutta todellisuudessa Ikean lamput eivät useimmiten toimi pelkällä HSL-muutoksella kirkkauden suhteen vaan vaaditaan erillinen ”set level 100%” -käsky.

Monimutkaista

Tämä on kaiken kaikkiaan melko monimutkaista, mutta lisäksi pitää vielä huomioida pistoneiden ajastetut ajot siten, että webCoREn ajamat muutokset eivät mene liian nopeasti yhtenä ryppäänä perille. Tästä syystä olen aiemmin käyttänyt jokaiselle toiminnalle omia pistoneita, koska niitä käyttämällä taklataan webCoREssa usein melko haasteelliset pistonin sisäisten wait-komentojen käytöt.

Mikäli kaikki lamppuihin kohdistuvat muutokset ajettaisiin yhdessä pistonissa ”wait” rivien kera, jää yleensä jokin komento menemättä perille. Perimmäinen ongelma tässä on se, että Ikean lamppujen tilatiedot ovat virheellisiä ja toimitetaan jälkijunassa mm. SmartThingsin ja Huen käytettäväksi. Usein esim. jos Ikean Trådfri-lamppu syttyy virheellisesti 50% valoteholla päälle, näkyy tämä Hue-applikaatiossa siten, että lamppu palaisi 100% valoteholla. Huen tiedot kun valuvat SmartThingsiin ja sitä kautta webCoREn käytettäväksi, ei Ikea lampuista kerrottu tieto ole kovinkaan usein ajantasaista. webCoRE tulkitsee, että kyseiselle lampulle ei kannata edes lähettää HSL-tietoa, koska se ei muuttaisi lampun nykytilannetta mihinkään. Tätä kutsutaan webCoREssa ”command optimizationiksi”. Optimoidaan toimintaa karsimalla tarpeettomat komennot ketjusta pois.

Pistoneissa wait-komento voisi olla määritelty esim. 5min per jokainen lampuille komennettu muutos, mutta tämä tuntuu käsittämättömän tökeröltä tavalta toimia eikä anna mitään takeita siitä, että lampun tilatiedot olisivat ehtineet tuolloin päivittyä Hueen, Huesta SmartThingsiin ja edelleen käytettäväksi webCoREen.

Ratkaisu ongelmaan

Ongelma voidaan korjata kuitenkin webCoREn pistonista käsin aiemmin mainitsemallani ”command optimization” muutoksella. Piston jättää oletuksena lähettämättä komentoja eteenpäin, jos lähtötieto kertoo, ettei komennot aiheuttaisi muutoksia kohteeseen. Nämä näkyvät pistonin lokissa ”skipped” lauseina. Hue-siltaan kytketyille Ikea Trådfri -lampuille tulee siis pakottaa pistonin komennot lamppujen lähtötiedoista riippumatta.

Ohessa ulkovalojen back-up -hallinnassa käyttämäni piston.

Pistonissa käytetyt lamput ovat Ikea Trådfri -lamppuja. Hue-lamppuja ei pistoniin ole tarvetta lisätä, sillä ne toimivat aina täydellisesti Hue-sillan automaatioiden kanssa. Ensimmäisessä with-lausekkeessa listatut lamput ovat kaikki ulkovaloina toimivat Ikea-lamppuni, jotka kytketään lähtötiedoista riippumatta uudelleen päälle 10min ennen auringonlaskua. On siis kulunut 5min siitä, kun Huen ajastuksen olisi pitänyt sytyttää kaikki Hue ja Ikea -lamput päälle. Ensimmäisen komennon jälkeen odotetaan 500 millisekuntia, jonka jälkeen Ikea Trådfri -värivaloille lähetetään HSL-komento, ja waitin jälkeen vielä ”set level” komento. Tämän jälkeen tehdään uusi 500 millisekunnin wait, kunnes lopuille tavallisille Ikea Trådfri -lampuille lähetetään ”set level” -komento.

Tämä ei missään nimessä toimisi, mikäli ”command optimization” olisi päällä, joten katsotaanpa miten toiminto kytketään pois päältä. Pistonin editointitilassa klikataan pistonin otsikkotietoa hiiren vasemmalla.

Tämän jälkeen ikkunasta klikataan ratasta.

Jonka jälkeen ”command optimization” kohdassa muutetaan ”enabled” -> ”disabled-tilaan”

Lopuksi klikataan ”Save”, ja pistonin yläosassa pitäisi nyt näkyä seuraava teksti:

Tallenna lopuksi piston, ja nyt kaikki pistoniin määritetyt komennot lähetetään webCoREsta eteenpäin riippumatta lampun päälläolosta tai esim. valotehosta.

HSL-arvon etsimistä

Mikäli tarvitset omassa tuunailussasi HSL-arvoja, voidaan niitä selvittää mm. hsl_bulb_quest -pistonia käyttämällä.

Olen omaan käyttööni rakentanut pistonin toimimaan siten, että valitsen ”define” kohdan ”deviceksi” sen lampun, jonka HSL-tiedon haluan selvittää. Kun virtuaalinen presence sensor -vaihtaa tilaa läsnä/ei läsnä, hakee piston kyseisen lampun HSL-arvon. Voit määrittää minkä tahansa triggerin IF-kohtaan, esim. kun etuoven sensori aukeaa, niin HSL-tieto haetaan. Itse käytän näissä virtuaalisia sensoreita, koska niiden tilaa voidaan muuttaa applikaatiosta käsin nostamatta persettä sohvalta.

Kuvio toimii Hue-sillan ohjaamassa Hue/Ikea -ympäristössä siten, että sytytetään ulkovalot Hue-applikaatiosta päälle. Varmistetaan, että kaikki valot ovat varmasti päällä. Valitaan Hue-applikaatiosta haluttu ”scene”, tai vaihtoehtoisesti määritetään lamput sille teholle, lämmölle ja värille kuinka itse halutaan. Tämän jälkeen käydään yksitellen lamput läpi lisäämällä lamppu pistoniin deviceksi, ja sitten triggerillä ajetaan piston per lamppu läpi. Jokainen lamppu tuottaa tavittavat HSL-tiedot juuri siltä hetkeltä, kun lamput ovat päällä ja haluamallasi värillä tai kirkkaudella.

Tässä on mahdollisuus toki oikoa hieman sen verran, että samat lamppumallit tuottavat täysin samat vastaukset. Jokaista lamppua ei ole siis pakko käydä erikseen läpi. Lopputuloksena pitäisi olla nätti lista HSL-arvoja per lamppumalliryhmä. Tämän jälkeen bu-pistoniin voi määritellä WITH- ja DO -lauseet ja unohtaa Ikea Trådfrin hallintaongelmat.

Taas ollaan pykälän verran lähempänä parempaa ja automatisoidumpaa kotia 🙂

Vieritä ylös