The Codest Kärnvärde #1
The Codest tror på fyra viktiga värden som är kärnan i alla åtgärder som vidtas av The Codest-team. I den här artikeln förklarar vår CEO och medgrundare, Greg Polec, vad...
Föreställ dig en sådan situation: klockan är 6:00 en lördagsmorgon, du ligger bekvämt i din säng och sover fortfarande gott. Plötsligt hör du din katt skrapa på dörren, dess höga jamande blir outhärdligt och din katt har all tid i världen på sig att låta dig veta vad den behöver. Vet du vad den verkligen behöver?
Föreställ dig en sådan situation: klockan är 6:00 en lördagsmorgon, du ligger bekvämt i din säng och sover fortfarande gott. Plötsligt hör du din katt skrapa på dörren, dess höga jamande blir outhärdligt och din katt har all tid i världen på sig att låta dig veta vad den behöver. Vet du vad den verkligen behöver? Jag vet - din katt vill ha mat nu! Just nu! Hur vet jag det? För att jag vid något tillfälle började mata min katt vid den tiden... Och det blev naturligtvis en ny standardtid för att få mat.
Det här scenariot inspirerade mig att bygga en automatisk kattmatare, som skulle ta bort problemen med morgonmatning av katter och hålla katten glad.
Den första generationen av kattmatare var en enkel MVP tillverkad av lite kartong, enkel servo och ESP WeMos. Den använde servo för att rotera den övre behållaren 180 grader för att mata ut maten.
En mikrokontroller var ansluten till mitt lokala Wi-Fi och kommunicerade med Smart Home-servern som kör HomeAssistant via MQTT-protokollet. Tack vare det kunde jag använda HomeAssistant-automationssystemet för att schemalägga matning och utdelning av mat via Google Home-kommandon. Varje utfodring definierades som en speciell händelse i Google Kalender. Det gjorde att jag enkelt kunde kontrollera kattens matningstid och ändra den vid behov.
Naturligtvis stötte denna generation på vissa problem:
Som med de flesta MVP:er användes den bara i två år innan den gick sönder.
Jag bestämde mig för att nästa kattmatare skulle:
Jag började hela processen med att designa grundläggande element för uppdelning av livsmedel. När designen var klar skrevs alla element ut med Creality Ender-3 och PLA
Efter att ha försäkrat mig om att allt fungerade fortsatte jag med att designa och skriva ut resten av delarna:
Den har särskilda platser för skruvar som underlättar installationen av Raspberry Pi. På framsidan finns dessutom ett litet hål för enkel åtkomst till Raspberry Pis SD-kort.
Denna plastdel används för att placera en matskål av metall (den är naturligtvis tryckt med guldfilament, till min katts ära och berömmelse). Den är ansluten till basen med hjälp av 2 neodymmagneter.
Denna nivå används för att hålla servot medan det roterar delen på nästa nivå. Den har också en liten lutning för bättre matservering.
Det här är en enkel generisk nivå som portionerar mat från en behållare som är placerad ovanför. Den roteras med hjälp av servon.
Denna del används för att hålla matbehållaren. Det är den enda plastdelen som inte är 3D-printad. Jag ville minimera matkontakten med 3D-utskrivna delar. I teorin har transparent PLA-plast inga giftiga föroreningar, men jag köpte den billigaste spannmålsdispensern och tog matbehållardelen, bara för att vara på den säkra sidan. Dessutom ser den riktigt cool ut.
De två sista delarna var höljet och locket. Inget speciellt här, förutom lite mer guld för att få det att se bättre ut och vinna kattens beundran.
Raspberry Pi kör en Raspbian som har laddats upp med hjälp av ansible spelbok för att driva dessa tjänster:
MotionEye är en programvara med öppen källkod för att bygga din egen privata övervakning. Den upptäcker alla kameror som är anslutna till Raspberry Pi. Dessutom får du rörelsedetektering, en slutpunkt för att dela strömmen och stöd för webhook.
Denna tjänst styr servots rotation. Det är en enkel Python skript som ansluter till MQTT-servern som kör min Smart House-programvara och väntar på ett meddelande för att utlösa rotationen.
Precis som servotjänsten implementerar den ett protokoll för ljuskällor som styrs av MQTT i HemAssistent.
Och slutligen HomeAssistant-automatiken som utlöser matningen.
Den utlöser matutdelning i två situationer:
Denna automatisering kod ser ut så här:
- alias: Mata katten
avtryckare:
- plattform: stat
entity_id: "binär_sensor.iss
från: "off
till: "på
- plattform: stat
entity_id: kalender.cat_feed_schedule
från: "off
till: "på
handling:
- tjänst: script.feed_the_cat
Självklart är den här versionen inte den sista. Men den tjänar sitt syfte - katten är välnärd och jag har mina lata morgnar 🙂 .
Läs mer om detta:
– E-commerce: Nytt läge i spelet 2020 (rapport)
– Hur driver man ett företag under krisen?
– Programmering i Ruby. Nybörjarens terminal - del 2