(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); thecodest, Autor na The Codest - Strana 11 z 11

Představte si takovou situaci: je šest hodin ráno v sobotu, vy ležíte pohodlně v posteli a ještě tvrdě spíte. Najednou uslyšíte, jak vaše kočka škrábe na dveře, její hlasité mňoukání se stane nesnesitelným a vaše kočka má všechen čas na světě, aby vám dala najevo, co potřebuje. Víte, co skutečně potřebuje? Já vím - vaše kočka chce hned jídlo! Hned teď! Jak to vím? Protože jsem v určitém okamžiku začala svou kočku krmit v tuto dobu... A samozřejmě se z toho stal nový standardní čas pro získání jídla.

Tento scénář mě inspiroval k sestrojení automatického krmítka pro kočky, které by odstranilo starosti s ranním krmením koček a zajistilo jejich spokojenost.

První generace

První generace krmítka pro kočky byla jednoduchá. MVP z kartonu, jednoduchého serva a ESP WeMos. Pomocí serva se horní nádoba otáčela o 180 stupňů a vydávala jídlo.

Mikrokontrolér byl připojen k mé místní síti Wi-Fi a komunikoval se serverem Smart Home se systémem HomeAssistant prostřednictvím protokolu MQTT. Díky tomu jsem mohl používat automatizační systém HomeAssistant k plánování krmení a výdeje jídla prostřednictvím příkazů Google Home. Každé krmení bylo v kalendáři Google definováno jako zvláštní událost. To mi umožnilo snadno kontrolovat čas krmení kočky a v případě potřeby jej změnit.

Tato generace se samozřejmě setkala s určitými problémy:

Stejně jako většina MVP byl používán pouze 2 roky, než se rozbil.

Druhá generace

Rozhodl jsem se, že příští krmítko pro kočky by mělo:

Celý proces jsem začal návrhem základních prvků pro rozdělení potravin. Poté, když byly návrhy hotové, byly všechny prvky vytištěny pomocí tiskárny Creality Ender-3 a PLA.

Díly

Poté, co jsem se ujistil, že vše funguje, jsem přistoupil k návrhu a tisku zbytku dílů:

Základna pro RaspberryPi (úroveň 0)

Má speciální místa pro šrouby, které usnadňují instalaci počítače Raspberry Pi. Na přední straně je navíc malý otvor pro snadný přístup ke kartě SD počítače Raspberry Pi.

Držák mísy

Tato plastová část slouží k umístění kovové misky na jídlo (samozřejmě byla vytištěna zlatými vlákny, pro slávu a věhlas mé kočky). Se základnou je spojena pomocí 2 neodymových magnetů.

Držák serva (úroveň 1)

Tato úroveň slouží k přidržení serva při otáčení dílu na další úrovni. Má také malý sklon pro lepší podávání jídla.

Nádoba přídělového mechanismu (úroveň 2)

Jedná se o jednoduchou obecnou úroveň, která porcuje jídlo z nádoby umístěné nad ní. Otáčí se pomocí serva.

Držák nádoby na potraviny (úroveň 3)

Tato část slouží k držení nádoby na potraviny. Je to jediný plastový díl, který nebyl vytištěn na 3D tiskárně. Chtěl jsem minimalizovat kontakt 3D tištěných dílů s potravinami. Teoreticky průhledný PLA plast neobsahuje žádné toxické nečistoty, ale koupil jsem nejlevnější dávkovač na cereálie a pro jistotu jsem vzal díl s nádobou na jídlo. Taky to vypadá opravdu skvěle.

Pouzdro a víko

Posledními dvěma díly byly kryt a víko. Zde nebylo nic zvláštního, kromě většího množství zlata, aby to vypadalo lépe a získalo si to kočičí obdiv.

Všechny díly

Konečná montáž

Software

Na Raspberry Pi je spuštěn Raspbian s použitím ansible playbook k provozování těchto služeb:

MotionEye

MotionEye je software s otevřeným zdrojovým kódem pro vytvoření vlastního soukromého monitorování. Detekuje jakoukoli kameru připojenou k Raspberry Pi. Z výroby navíc získáte detekci pohybu, koncový bod pro sdílení datového toku a podporu webhooku.

Servis servopohonů

Tato služba řídí otáčení serva. Jedná se o jednoduchou Python skript, který se připojí k serveru MQTT se softwarem Smart House a čeká na zprávu, která spustí rotaci.

Vedená služba

Stejně jako služba servo implementuje protokol pro světelný zdroj řízený pomocí MQTT v. HomeAsistent.

Automatizace domácího asistenta

A nakonec automatizace HomeAssistant, která spouští krmení.

Spouští výdej jídla ve dvou situacích:

Tato automatizace kód vypadá takto:

- alias: Krmení kočky
spouštěč:
- platforma: stát
entity_id: "binary_sensor.iss
od: 'off'
na: "zapnuto
- platforma: stát
entity_id: calendar.cat_feed_schedule
od: 'off'
na: "zapnuto
akce:
- služba: script.feed_the_cat

Souhrn

Tato verze samozřejmě není poslední. Ale svůj účel plní - kočka je najedená a já mám svá líná rána 🙂

Přečtěte si více:

- E-commerce: Nový stav hry 2020 (zpráva)

- Jak řídit firmu během krize?

- Programování v jazyce Ruby. Terminál pro začátečníky - část 2

cs_CZCzech