(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': data().getTime(),įvykis:'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, The Codest autorius - Puslapis 11 iš 11

Įsivaizduokite tokią situaciją: šeštadienio rytas, 6 val. ryto, jūs patogiai gulite lovoje ir dar ramiai miegate. Staiga išgirstate, kad jūsų katė drasko duris, jos garsus miauksėjimas tampa nepakenčiamas, o jūsų katė turi visą pasaulio laiką, kad praneštų jums, ko jai reikia. Ar žinote, ko jai iš tikrųjų reikia? Žinau - jūsų katė nori maisto dabar! Tuoj pat! Iš kur aš tai žinau? Nes kažkuriuo metu pradėjau šerti savo katę tuo metu... Ir, žinoma, tai tapo nauju standartiniu maisto gavimo laiku.

Šis scenarijus mane įkvėpė sukurti automatinę kačių šėryklą, kuri pašalintų rytinio kačių šėrimo rūpesčius ir užtikrintų, kad katės būtų laimingos.

Pirmoji karta

Pirmosios kartos kačių maitintuvė buvo paprasta MVP pagamintas iš kartono, paprasto servo ir ESP WeMos. Naudojant servopavarą viršutinė talpykla pasukama 180 laipsnių kampu, kad būtų galima išpilstyti maistą.

Mikrokontroleris buvo prijungtas prie mano vietinio "Wi-Fi" ir su "Smart Home" serveriu, kuriame veikia "HomeAssistant", bendravo naudodamas MQTT protokolą. Dėl to galėjau naudoti "HomeAssistant" automatizavimo sistemą, kad suplanuočiau šėrimą ir maisto išdavimą "Google Home" komandomis. Kiekvienas šėrimas "Google" kalendoriuje buvo apibrėžtas kaip specialus įvykis. Tai leido man lengvai kontroliuoti katės šėrimo laiką ir prireikus jį keisti.

Žinoma, ši karta susidūrė su tam tikromis problemomis:

Kaip ir dauguma MVP, jis buvo naudojamas tik 2 metus, kol sugedo.

Antroji karta

Nusprendžiau, kad kitą katės maitintuvę reikėtų:

Visą procesą pradėjau nuo pagrindinių maisto skirstymo elementų projektavimo. Tada, kai projektai buvo paruošti, visi elementai buvo atspausdinti naudojant "Creality Ender-3" ir PLA

Dalys

Įsitikinęs, kad viskas veikia, pradėjau kurti ir spausdinti likusias dalis:

RaspberryPi bazė (0 lygis)

Jame yra specialios vietos varžtams, kad būtų lengviau įdiegti "Raspberry Pi". Be to, priekyje yra nedidelė skylutė, kad būtų galima lengvai pasiekti "Raspberry Pi" SD kortelę.

Dubens laikiklis

Ši plastikinė dalis naudojama metaliniam maisto dubenėliui (žinoma, jis buvo atspausdintas aukso gijomis - mano katės šlovei ir garbei). Ji sujungta su pagrindu naudojant 2 neodimio magnetus.

Servo laikiklis (1 lygis)

Šis lygis naudojamas servo laikymui, kol jis suka kitame lygyje esančią detalę. Jis taip pat turi nedidelį nuolydį, kad būtų galima geriau patiekti maistą.

Raciono mechanizmo talpykla (2 lygis)

Tai paprastas bendras lygis, kuriame maistas dalijamas iš viršuje esančio indo. Jį suka servopavaros.

Maisto indų laikiklis (3 lygis)

Ši dalis naudojama maisto talpyklai laikyti. Tai vienintelė plastikinė dalis, kuri nebuvo atspausdinta 3D spausdintuvu. Norėjau, kad 3D spausdinamos dalys kuo mažiau liestųsi su maistu. Teoriškai skaidrus PLA plastikas neturi jokių toksinių teršalų, tačiau nusipirkau pigiausią dribsnių dozatorių ir maisto konteinerio dalį paėmiau, kad būčiau saugus. Be to, jis atrodo tikrai šauniai.

Korpusas ir dangtis

Paskutinės dvi dalys buvo korpusas ir dangtis. Čia nieko ypatingo, išskyrus daugiau aukso, kad atrodytų geriau ir pelnytų katės susižavėjimą.

Visos dalys

Galutinis surinkimas

Programinė įranga

Aviečių Pi veikia Raspbian aprūpinta naudojant ansible grojaraštis paleisti šias paslaugas:

MotionEye

"MotionEye" yra atvirojo kodo programinė įranga, skirta privačiam stebėjimui kurti. Ji aptinka bet kokią kamerą, prijungtą prie "Raspberry Pi". Be to, iš karto gaunate judesio aptikimo funkciją, galinį tašką srautui bendrinti ir webhook palaikymą.

Servo servisas

Ši tarnyba kontroliuoja servopavaros sukimąsi. Tai paprastas Python scenarijų, kuris prisijungia prie MQTT serverio, kuriame veikia mano "Smart House" programinė įranga, ir laukia pranešimo, kad būtų paleista rotacija.

Vedama paslauga

Kaip ir servo paslauga, ji įgyvendina šviesos šaltinio, valdomo per MQTT, protokolą. PradžiaAsistentas.

Namų asistentų automatizavimas

Ir galiausiai - "HomeAssistant" automatika, paleidžianti maitinimą.

Jis įjungia maisto išdavimą dviem atvejais:

Šis automatizavimas kodas atrodo taip:

- slapyvardis: Maitinti katę
sukelti:
- platforma: valstybė
entity_id: ‘binary_sensor.iss’
nuo: ‘off’
į: ‘įjungta’
- platforma: valstybė
entity_id: calendar.cat_feed_schedule
nuo: ‘off’
į: ‘įjungta’
veiksmai:
- paslauga: script.feed_the_cat

Santrauka

Akivaizdu, kad ši versija nėra paskutinė. Bet jis tarnauja savo tikslui - katė yra gerai pamaitinta, o aš turiu savo tingius rytus 🙂

Skaityti daugiau:

- E-commerce: Nauja žaidimo būklė 2020 m. (ataskaita)

- Kaip valdyti verslą per krizę?

- "Ruby" programavimas. Pradedančiojo terminalas - 2 dalis

lt_LTLithuanian