The Codest Kjerneverdi #1
The Codest tror på fire viktige verdier som er kjernen i alle handlinger som utføres av The Codest-teamene. I denne artikkelen forklarer vår CEO og medgrunnlegger, Greg Polec, hva...
Forestill deg en slik situasjon: Klokken er 06:00 en lørdag morgen, du ligger komfortabelt i sengen din og sover fortsatt godt. Plutselig hører du katten din klore på døren, dens høylytte mjauing blir uutholdelig, og katten din har all verdens tid til å fortelle deg hva den trenger. Vet du hva den egentlig trenger?
Forestill deg en slik situasjon: Klokken er 06:00 en lørdag morgen, du ligger komfortabelt i sengen din og sover fortsatt godt. Plutselig hører du katten din klore på døren, dens høylytte mjauing blir uutholdelig, og katten din har all verdens tid til å fortelle deg hva den trenger. Vet du hva den egentlig trenger? Jeg vet det - katten din vil ha mat nå! Akkurat nå! Hvordan vet jeg det? Fordi jeg på et tidspunkt begynte å mate katten min på det tidspunktet ... Og det ble selvfølgelig et nytt standardtidspunkt for å få mat.
Dette scenariet inspirerte meg til å bygge en automatisk kattemater, som ville fjerne problemene med å mate katten om morgenen og holde katten fornøyd.
Den første generasjonen av kattemateren var en enkel MVP laget av litt papp, en enkel servo og ESP WeMos. Den brukte servo til å rotere den øverste beholderen 180 grader for å dispensere maten.
En mikrokontroller var koblet til mitt lokale Wi-Fi og kommuniserte med Smart Home-serveren som kjører HomeAssistant via MQTT-protokollen. Takket være dette kunne jeg bruke HomeAssistant-automatiseringssystemet til å planlegge mating og utdeling av mat gjennom Google Home-kommandoer. Hver fôring ble definert som en spesiell hendelse i Google Kalender. På den måten kunne jeg enkelt kontrollere fôringstiden til katten og endre den ved behov.
Denne generasjonen møtte selvfølgelig på noen problemer:
Som med de fleste MVP-er ble den bare brukt i to år før den gikk i stykker.
Jeg bestemte meg for at neste kattemater skulle:
Jeg startet hele prosessen med å designe grunnleggende elementer for matinndeling. Da designene var klare, ble alle elementene skrevet ut ved hjelp av Creality Ender-3 og PLA
Etter å ha forsikret meg om at alt fungerte, fortsatte jeg med å designe og skrive ut resten av delene:
Den har spesielle steder for skruer som gjør det enklere å installere Raspberry Pi. I tillegg er det et lite hull på forsiden for enkel tilgang til SD-kortet til Raspberry Pi.
Denne plastdelen brukes til å plassere en matskål av metall (selvfølgelig ble den trykt med gullfilamenter, til ære og berømmelse for katten min). Den er koblet til basen ved hjelp av 2 neodymmagneter.
Dette nivået brukes til å holde servoen mens den roterer delen på neste nivå. Det har også en liten helling for bedre matservering.
Dette er et enkelt, generisk nivå som porsjonerer mat fra en beholder som er plassert over. Den roteres av servoen.
Denne delen brukes til å holde matbeholderen. Det er den eneste plastdelen som ikke er 3D-printet. Jeg ønsket å minimere matkontakt med 3D-printede deler. I teorien har gjennomsiktig PLA-plast ingen giftige forurensninger, men jeg kjøpte den billigste frokostblandingsdispenseren og tok matbeholderdelen, bare for å være på den sikre siden. Dessuten ser den veldig kul ut.
De to siste delene var huset og lokket. Ikke noe spesielt her, bortsett fra mer gull for å få det til å se bedre ut og vinne kattens beundring.
Raspberry Pi kjører en Raspbian som er klargjort ved hjelp av ansible spillbok for å kjøre disse tjenestene:
MotionEye er en programvare med åpen kildekode for å bygge din egen private overvåking. Den oppdager alle kameraer som er koblet til Raspberry Pi. I tillegg får du bevegelsesdeteksjon, et endepunkt for deling av strømmen og støtte for webhook.
Denne tjenesten styrer servoens rotasjon. Det er en enkel Python skript som kobler seg til MQTT-serveren som kjører Smart House-programvaren min, og venter på en melding for å utløse rotasjonen.
På samme måte som servotjenesten implementerer den en protokoll for lyskilder som styres av MQTT i HomeAssistant.
Og til slutt, HomeAssistant-automatiseringen som utløser mating.
Den utløser matutdeling i to situasjoner:
Denne automatiseringen kode ser slik ut:
- alias: Gi katten mat
utløser:
- plattform: stat
entity_id: 'binær_sensor.iss'
fra: 'av'
til: "på
- plattform: stat
entity_id: calendar.cat_feed_schedule
fra: 'av'
til: "på
handling:
- tjeneste: script.feed_the_cat
Denne versjonen er selvsagt ikke den siste. Men den tjener sitt formål - katten får god mat og jeg har mine late morgener 🙂 🙂 .
Les mer om dette:
– E-commerce: Ny status for spillet 2020 (rapport)
– Hvordan drive en virksomhet under krisen?
– Programmering i Ruby. Nybegynnerens terminal - del 2