Codests kerneværdi #1
The Codest tror på fire afgørende værdier, som er kernen i alle de handlinger, som The Codest-teams foretager. I denne artikel forklarer vores CEO og medstifter, Greg Polec, hvad...
![Codest](https://thecodest.co/app/uploads/2024/05/greg-polec.jpg)
Forestil dig en sådan situation: Klokken er 6:00 en lørdag morgen, du ligger behageligt i din seng og sover stadig godt. Pludselig hører du din kat kradse på døren, dens høje mjaven bliver uudholdelig, og din kat har alverdens tid til at fortælle dig, hvad den har brug for. Ved du, hvad den virkelig har brug for?
Forestil dig en sådan situation: Klokken er 6:00 en lørdag morgen, du ligger behageligt i din seng og sover stadig godt. Pludselig hører du din kat kradse på døren, dens høje mjaven bliver uudholdelig, og din kat har alverdens tid til at fortælle dig, hvad den har brug for. Ved du, hvad den virkelig har brug for? Jeg ved det - din kat vil have mad nu! Lige nu! Hvordan kan jeg vide det? Fordi jeg på et tidspunkt begyndte at fodre min kat på det tidspunkt ... Og det blev selvfølgelig et nyt standardtidspunkt for at få mad.
Dette scenarie inspirerede mig til at bygge en automatisk kattefoderautomat, som ville fjerne besværet med at fodre katten om morgenen og gøre den glad.
Den første generation af kattefoderautomaten var en simpel MVP lavet af noget pap, en simpel servo og ESP WeMos. Den brugte en servo til at dreje den øverste beholder 180 grader for at dosere maden.
En mikrocontroller var forbundet til mit lokale Wi-Fi og kommunikerede med Smart Home-serveren, der kører HomeAssistant, via MQTT-protokollen. Takket være det kunne jeg bruge HomeAssistant-automatiseringssystemet til at planlægge fodring og udlevering af mad via Google Home-kommandoer. Hver fodring blev defineret som en særlig begivenhed i Google-kalenderen. Det gav mig mulighed for nemt at kontrollere kattens fodringstidspunkt og ændre det, når det var nødvendigt.
Selvfølgelig stødte denne generation på nogle problemer:
Som med de fleste MVP'er blev den kun brugt i 2 år, før den gik i stykker.
Jeg besluttede, at den næste kattefoderautomat skulle:
Jeg startede hele processen med at designe grundelementer til opdeling af maden. Da designene var klar, blev alle elementer printet med Creality Ender-3 og PLA.
Efter at have sikret mig, at alt fungerede, gik jeg i gang med at designe og printe resten af delene:
Den har særlige steder til skruer, som hjælper med at installere Raspberry Pi. På forsiden er der desuden et lille hul, som giver nem adgang til Raspberry Pi's SD-kort.
Denne plastikdel bruges til at placere en madskål i metal (den er selvfølgelig printet med guldfilamenter til ære for min kat). Den er forbundet med basen ved hjælp af 2 neodymmagneter.
Dette niveau bruges til at holde servoen, mens den roterer delen på det næste niveau. Det har også en lille hældning for bedre at kunne servere maden.
Dette er et simpelt generisk niveau, som portionerer mad fra en beholder placeret ovenover. Den drejes af servoen.
Denne del bruges til at holde madbeholderen. Det er den eneste plastikdel, der ikke er 3D-printet. Jeg ønskede at minimere fødevarekontakt med 3D-printede dele. I teorien indeholder gennemsigtig PLA-plast ingen giftige stoffer, men jeg købte den billigste korndispenser og tog delen til madbeholderen for at være på den sikre side. Og så ser den virkelig cool ud.
De sidste to dele var huset og låget. Ikke noget særligt her, bortset fra mere guld for at få det til at se bedre ud og vinde kattens beundring.
Raspberry Pi kører en Raspbian, der er provisioneret ved hjælp af ansible playbook til at køre disse tjenester:
MotionEye er en open source-software til at bygge din egen private overvågning. Den registrerer ethvert kamera, der er tilsluttet Raspberry Pi. Derudover får du bevægelsesdetektering, et slutpunkt til deling af strømmen og understøttelse af webhook.
Denne service styrer servoens rotation. Det er en simpel Python script, der opretter forbindelse til MQTT-serveren, der kører min Smart House-software, og venter på en besked, der kan sætte gang i rotationen.
Ligesom servotjenesten implementerer den en protokol til lyskilder, der styres af MQTT i HomeAssistant.
Og endelig HomeAssistant-automatikken, der udløser fodring.
Den udløser madudlevering i to situationer:
Denne automatisering Kode ser sådan her ud:
- alias: Giv katten mad
udløser:
- platform: stat
entity_id: 'binær_sensor.iss'
fra: 'off'
til: 'on'
- platform: stat
entity_id: calendar.cat_feed_schedule
fra: 'off'
til: 'on'
handling:
- service: script.feed_the_cat
Denne version er naturligvis ikke den sidste. Men den tjener sit formål - katten er velernæret, og jeg har mine dovne morgener 🙂 .
Læs mere om det:
– E-commerce: Ny tilstand i spillet 2020 (rapport)
– Hvordan driver man en virksomhed under krisen?
– Programmering i Ruby. Begynderens terminal - del 2