Det er sjovt som 90% af det, man ender med at bygge i sit smarte hjem, er løsninger på “first world problems” – men, efterhånden som man gør sit hjem mere og mere smart, bliver det også tydeligt, at der er ting man er nødt til at håndtere særligt i særlige situationer.
En rutine til rengøringshjælpen
Jep – det er sådan et problem vi prøver at løse her. En gang om ugen får vi besøg af en pige, som gør rent i hele huset. Indtil videre har jeg løst det ved, at hun ringer på når hun er her, og jeg lukker hende ind efter at have tjekket overvågningen.
Men, der er nogle ting jeg godt kunne tænke mig:
- Jeg vil gerne undgå hele ringe-på-lukke-ind-processen, og samtidig bibeholde et fornuftigt sikkerhedsniveau
- Det ville være pænt smart hvis alt relevant lys var tændt når hun gik ind i huset
- Hvis jeg oven i købet kunne få en besked, når hun var færdig, så alarmen kan blive aktiveret igen, ville det være rigtig fint
Så, det fikser vi med en piston. Men først skal vi lave en rutine, for min plan er at aktivere hele setuppet med en rutine.
Under Automation > SmartApps i Classic-app’en opretter du en ny rutine. Den skal blot have et navn – den behøver ikke rent faktisk at gøre noget.
Opsætning i Webcore
Start med at lave en ny, blank piston i Webcore. Når en ny if tilføjes, kan du vælge at bruge et virtuelt device i din sammenligning – og under virtuelle devices kan du vælge Routine. Dermed får du mulighed for at vælge din nye, blanke rutine som start for din piston.
Og dernæst er det blot at fylde de ting på, du gerne vil have din piston til at gøre.
Min piston gør en række ting.
- Send besked til mig om, at rengøringen er startet. Det sker via et webrequest til en server, som via PHP sender mig en besked på Telegram. Det kunne lige så godt have været en normal notifikation fra Webcore, men jeg vil gerne have, at det kun er mig, der får beskeden – og ikke også Mette.
- Send et billede fra overvågningen i indkørslen via Telegram.
- Vent 5 sekunder, så jeg har tid til at reagere på beskeden.
- Sæt huset i Hjem-tilstand.
- Slå alarmen fra.
- Lås fordøren op.
- Tænd en række lamper i de områder af huset, hvor vi får gjort rent.
- Vent 30 sekunder, og sæt variablen “state” til “active”.
Variablen “state” bruger jeg i min piston’s næste if. Hvis state er active, altså hvis der pt bliver gjort rent, og fordøren bliver åbnet, så send besked til mig om, at rengøringen formentlig er færdig. Så kan jeg tjekke overvågningen, og slå alarmen til.
Jeg har også lavet et mildt lag af sikkerhed i opsætningen. Hvis Cleaning-rutinen køres, tjekker vi om det er en hverdag mellem 8 og 13, som typisk er det tidspunkt vores rengøring kommer forbi. Er det ikke det, ignorerer vi rutinen.
Ovenstående piston kan naturligvis udvides i det uendelige. Er der områder i huset, rengøringshjælpen ikke skal bevæge sig i? Brug en bevægelsessensor til at sende besked, hvis der er bevægelse mens variablen state er aktiv. Vil du have besked, hvis rengøringen åbner skabe eller skuffer? En kontaktsensor kan hjælpe med det.
Lidt hjælp fra ActionTiles
Meningen med det hele er naturligvis, at vores rengøringshjælp selv skal kunne låse sig ind. Det bruger vi ActionTiles til. Jeg har lavet et ultra simpelt panel i ActionTiles, som kun viser Cleaning-rutinen – og som beskytter rutinen med en PIN-kode.
Linket til panelet kan jeg dele med vores rengøringshjælp, og nu kan hun ved hjælp af sin telefon lukke sig ind, mens jeg stadig får fuld besked om alt der sker i huset. Mit panel kunne udvides med en genvej til at tænde alt lys, en genvej til at sætte god musik på anlægget, og en knap der afslutter rengøringen, slukker musikken, slukker lyset, låser døren og slår alarmen til – og giver besked til mig.
Ovenstående rutiner og paneler kan selvfølgelig også bruges til at give svigermor eller andre familiemedlemmer adgang til huset. Det kan jo passende være næste projekt. 🙂
Hvordan bruger du Telegram via web request?
Jeg har fundet https://api.telegram.org/bot0000000000000:secret/sendMessage?chat_id=xxxxxxx&text=Hello%20World – hvor man skifter bot token og chat id ud, men kan kun få det til at virke via browser-indtastning – ikke via web request gennem Webcore.
Hvordan gør du?
Jeg har kodet mig et script i PHP, som håndterer det for mig. Jeg har skrevet lidt om det her:
https://mettesigernej.dk/2018/11/22/projekt-ringeklokke-i-et-smart-home/
Men, kort fortalt bruger jeg dette bibliotek til at stå for kommunikationen med Telegram, og så har jeg bare lavet et PHP-script, som tager en besked fra querystring og sender den til mig på Telegram. Det kører på en Raspberry Pi, som kan nås udefra – hvis man kender URL’en og brugernavn/password. 🙂