Indholdsfortegnelse:

Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting !: 6 trin (med billeder)
Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting !: 6 trin (med billeder)

Video: Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting !: 6 trin (med billeder)

Video: Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting !: 6 trin (med billeder)
Video: Lærke - Vi skal ikke være kærester 2024, November
Anonim
Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting!
Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting!
Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting!
Hold din baby kølig denne sommer - Styring af stumme fans med smarte ting!

For to uger siden, da jeg skrev dette, blev jeg far til en utrolig lille dreng!

Da årstiderne skiftede, dagene blev længere og temperaturerne blev varmere, tænkte jeg, at det ville være godt at have en slags skærm i vuggestuen for at kontrollere, hvor varmt det var at komme derop!

Jeg har ikke puslet med meget python gennem årene, men ville gerne komme tilbage til det siden mit første år på universitetet for næsten 5 år siden nu! På grund af dette tænkte jeg, at det ville være bedre at dokumentere, hvad jeg gjorde, for at hjælpe mig senere, også hjælpe alle andre, der ønsker at gøre det samme!

Ved hjælp af en Raspberry pi, Enviro pHAT og et smart TP-link kasa-stik kan du styre propperne ved hjælp af IFTTT-rammerne! det er virkelig enkelt at gøre, og du kan endda ændre denne gennemgang for at styre alt via forskellige sensorer og forskellige enheder! Håber du finder dette nyttigt. Hvis du kan lide dette instruerbart, så glem ikke at stemme på min indsendelse i sensorkonkurrencen!: D (undskyld for at spørge), det er første gang jeg gør dette og vil gerne have en mulig chance for at vinde noget for al den tid jeg har lagt i dette

** EDIT ** I løbet af de næste par dage vil jeg se på at skubbe disse data til et Grafana -bord, hvis du synes, at dette ville være godt, lad os vide det!: D

Lad os komme ind i det…

Forbrugsvarer

  1. Enhver Raspberry pi vil gøre, men jeg valgte Zero W, da det var det, jeg måtte aflevere i min lodtrækning, den har også den mindste formfaktor med WiFi aktiveret som standard! - Hindbær PI Zero m
  2. SD -kort, alle har forskellige præferencer på disse, men jeg brugte en af disse! - Micro-SD-kort
  3. Hvis du sidder fast, er her den officielle understøttede dokumentation for SD -kort -officielt understøttede SD -kort
  4. Jumperwires (forklarer senere) - Jumperwires
  5. Enviro pHAT til alle de herlige sensorer! - Envrio-pHAT
  6. Et smart stik, jeg er gået med TP-Link, da du ikke behøver nogen smarte hubs for at få det til at fungere ud af boksen! - Smart stik!
  7. En dum blæser til at styre, du kan bruge enhver blæser, jeg har lige fundet en blæser på amazon, men enhver ventilator til vægstik fungerer fint - Dum blæser
  8. Et loddejern, men hvis du ikke ønsker at bruge et loddejern, kan du få klik i overskrifter til din PI og pHAT-GPIO-hammer-header

For at en forbindelse mellem TP-links kasa og IFTTT fungerer, skal du have en TP-link kasa- og IFTTT-konto oprettet, før du kan starte denne instruerbare. Når du modtager dit TP-link-smartstik, vil instruktionerne, der følger med smartstikket, guide dig gennem opsætningsprocessen, herunder hvordan du navngiver dit stik og dets grundlæggende funktioner

Når du har alle dine indkøbslister, er det tid til at samle det hele!

Trin 1: Opsætning af din Raspberry Pi

Imaging dit micro-SD-kort Få det nyeste og bedste Raspbian-billede, lite versionen vil klare sig fint, hvis ikke bedre for nul w! -

Skriv dette billede til SD -kortet, du skal bruge en læser til dette og en billedkamera, jeg bruger etser -

Opsætning Wifi (valgfrit) Hvis din PI har en indbygget WIFI, hvorfor ikke konfigurere den nu for at spare en masse rod med konsoller senere!

Når din pi er blevet afbildet, er drevet skubbet ud. Afbryd og tilslut SD -kortet, så det bliver registreret af din maskine igen. En bootpartition skal vises.

Opret en tom fil kaldet wpa_supplicant.confin boot -partitionen på dit pi, inden her placeres nedenstående i denne nye fil:

netværk = {

ssid = "YOUR_SSID" psk = "YOUR_WIFI_PASSWORD" key_mgmt = WPA-PSK}

Aktivering af SSH på dit PI efter eget valg (valgfrit)

Som standard vil et rent Raspbian -billede have ssh deaktiveret. Du skulle starte systemet, tilslutte et tastatur og en skærm til Pi og derefter aktivere ssh. Dette trin aktiverer ssh ved første opstart. I bootpartitionen skal du oprette en ny fil kaldet ssh. En tom fil med præcis det navn.

Efter at have gennemført dem to valgfrie trin, vil din PI automatisk oprette forbindelse til dit WIFI og have SSH aktiveret som standard.

Når du har afbildet og konfigureret micro-SD-kortet, kan du derefter indsætte det i dit PI eller valg og tænde det!

Når du opdaterer din PIO Når du har startet din PI, kan du finde din IP -adresse på din PI inden for dine trådløse routers indstillinger. De fleste routere er forskellige, så det ville være svært at skrive en vejledning til dette desværre!

Når du har din IP på din PI, skal du oprette forbindelse via SSH og logge ind med følgende:

Brugernavn: pi

Adgangskode: hindbær

Når du har en aktiv SSH -session med din PI, vil du gerne opdatere den, bare køre nedenstående med den tilsvarende Y eller N under hele opdateringen:

sudo apt-get opdatering

sudo apt-get opgradering

det er altid godt at genstarte en PI, efter at der er installeret nye opdateringer for at sikre, at det er kørt forfra med de seneste opdateringer, dette kan opnås med

sudo genstart -n

Nu er PI klar, tid til at gå videre til næste trin!

Trin 2: Opsætning af din Enviro PHAT

Opsætning af din Enviro PHAT
Opsætning af din Enviro PHAT
Opsætning af din Enviro PHAT
Opsætning af din Enviro PHAT

Tilslutning af din Enviro pHAT

Når du har din pi helt opdateret, kan du slutte din Enviro pHAT til den valgte PI!

*** For at sikre, at du ikke beskadiger dit PI eller dit pHAT, skal du først slukke det ***

Her brugte jeg jumperkablerne, fordi du kan få termisk udvaskning fra CPU'en, der bliver varm under Enviro pHAT. Denne ekstra varme kan ændre de temperaturmålinger, du senere vil få. På grund af dette har jeg brugt 5 jumperledninger på nedenstående stifter:

  • Pin 3 - GPIO2 (SDA I2C)
  • Pin 5 - GPIO3 (SCL I2C)
  • Pin 7 - GPIO4
  • Pin 6 - Jord
  • Pin 4 - 5V

Se venligst ledningsdiagrammet øverst i dette trin for visuel reference eller nedenstående link:

pinout.xyz/pinout/enviro_phat

(undskyld det dårlige malerarbejde)

Når du tilslutter din pHAT, skal du sørge for at have den indstillet den rigtige vej, ellers kan du muligvis beskadige den !!! For at gøre dette havde jeg min opsætning, så ANALOG IN -overskrifterne er mod SD -kortsporet, dette er senere blevet vendt om i mine billeder for at få det til at passe tæt ind i min "bærer".

Installation af afhængigheder

Tænd din PI igen og SSH igen

Når du er tilbage i din PI, skal du køre følgende for at installere nødvendige pakker og software til din Enviro pHAT:

krølle https://get.pimoroni.com/envirophat | bash

Sørg for at trykke på Y eller N, når det er nødvendigt.

Når installationen er fuldført, skal du sørge for at genstarte dit PI …

sudo genstart -n

Test af pHAT

For at sikre, at din pHAT er korrekt forbundet, kan du slippe ind i et python -modul og køre et par kommandoer ved at sætte tilbage til din PI og skrive python, en gang i et python -modul skal du skrive nedenstående:

fra envirophat import vejr

print (weather.temerpature ())

Dette skulle vise dig en aflæsning som nedenfor:

>> fra envirophat import vejr

>> print (vejr. temperatur ()) 24.0806166987

Fejlfinding

Hvis du får noget i retning af en fejl nedenfor:

Traceback (seneste opkald sidste): Fil "", linje 1, i File "/usr/lib/python2.7/dist-packages/envirophat/bmp280.py", linje 134, i temperatur self.update () File " /usr/lib/python2.7/dist-packages/envirophat/bmp280.py ", linje 169, i opdatering hvis self._read_byte (REGISTER_CHIPID) == 0x58: # check sensor id 0x58 = BMP280 File"/usr/lib/ python2.7/dist-packages/envirophat/bmp280.py ", linje 116, i _read_byte return self.i2c_bus.read_byte_data (self.addr, register) IOError: [Errno 121] Fjern I/O fejl

Du kan derefter køre:

sudo i2cdetect -y 1

Dette vil udføre en diagnostisk kontrol af dine forbindelser/ledninger, og du vil være på udkig efter noget som nedenfor:

pi@raspberrypi: ~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 abcdef 00: - - - - - - - - - - - - - - 10: - - - - - - - - - - - - - - 1d - - 20: - - - - - - - - - - - 29 - - - - - - 30: - - - - - - - - - - - - - - - - - 40: - - - - - - - - - 49 - - - - - - 50: - - - - - - - - - - - - - - - - - - 60: - - - - - - - - - - - - - - - - - - 70: - - - - - - - 77

Hvis ikke, skal du gå tilbage og kontrollere dine ledninger igen. Kontroller ledningsdiagrammet og prøv igen!

Installation af pi-baby-cooler.py-scriptet

Hvis alt er godt, og det lykkedes dig at få en temperaturaflæsning, kan vi gå videre og installere pakken baby-cooler.py!

På grund af hvordan instruktører håndterer links, har jeg vedhæftet.py -scriptet i ovenstående trinoverskrift … For at kopiere dette til din PI anbefaler jeg at bruge noget som WinSCP:

winscp.net/eng/download.php

WinSCP er en populær SFTP -klient og FTP -klient til Microsoft Windows! Kopier fil mellem en lokal computer og eksterne servere ved hjælp af FTP, FTPS, SCP, SFTP, WebDAV eller S3 filoverførselsprotokoller.

WinSCP er enkel at bruge, du skal blot oprette forbindelse til dit PI ved hjælp af din PI's IP -adresse, og derefter trække og slippe.py -filen til det sted, hvor du gerne vil køre den, for mig er dette fra /home /pi.

Nu.py -scriptet er på din PI, er det tid til at gå videre til opsætning af din IFTTT -konto / forbindelser

Trin 3: Indstilling af din IFTTT -konto/forbindelse

Indstilling af din IFTTT -konto/forbindelse
Indstilling af din IFTTT -konto/forbindelse
Indstilling af din IFTTT -konto/forbindelse
Indstilling af din IFTTT -konto/forbindelse
Indstilling af din IFTTT -konto/forbindelse
Indstilling af din IFTTT -konto/forbindelse

Dernæst vil vi se på at få et IFTTT -token, dette vil blive brugt, når du kalder hot / cold -funktionen i scriptet for at oprette forbindelse til kasa -stikket og tænde / slukke blæseren.

Oprettelse af Webhooks

Gå til https://ifttt.com/ og opret en konto, hvis du ikke allerede har en.

Når du har logget ind, søges i søgelinjen: TP-link kasa

Når det er indlæst, skal du klikke på services og derefter TP-link kasa. Du skal derefter forbinde din kasa -konto til din IFTTT -konto, logge ind på din kasa -konto via IFTTT for at oprette forbindelse.

Når du har linket din konto, skal du klikke på "Mine appletter" og derefter på den nye applet, derefter klikke på "+dette" og søge i webhooks.

Klik på "Modtag en webanmodning" inden for hændelsesnavnetypen hot (dette kan være alt hvad du ønsker, men du skal opdatere dette senere i pi-baby-coller.py-scriptet, ellers fungerer det ikke, jeg har brugt hot til at slå blæseren tændt og kold for at slukke blæseren. Klik derefter på Opret trigger.

Dernæst skal vi linke din nye trigger til din Kasa-konto, klik på "+that" og søg i kasa, klik på TP-link kasa, klik derefter på "tænd", vælg derefter den enhed, du vil tænde, klik derefter på create handling. Gennemgå handlingen, og klik på Afslut, hvis den er korrekt.

**********

Husk, at hvis du har valgt et andet begivenhedsnavn end "varmt" og "koldt", skal du notere disse til senere og opdatere scriptet! Ellers fungerer.py -scriptet ikke

**********

Når vi har oprettet vores første webkrog, skal du gentage processen for "kold", men denne gang vælger du sluk i stedet for at tænde, når du vælger +den handling.

Når vi har to hændelser -webhooks i din my applets -kontosektion, skal du klikke på tjenester og søge i webhooks, og derefter klikke på det. Herinde vil du se en dokumentationsknap (øverst til højre), klik på den. Det er her, du finder din IFTTT -tokenøgle. mens jeg herinde noterer din nøgle (du får brug for det senere), har jeg redigeret mit inden for billedet, ellers ville enhver kunne tænde eller slukke mine smarte stik.

Test af webhooks

Nu har vi oprettet to webhooks, der er forbundet til vores kasa -konto, vi kan teste, om de virker eller ej!

I din PI kan du indtaste følgende:

curl -X POST

Hvor der står "hot", skal du tilføje dit begivenhedsnavn, hvis du forlod det som "hot", lad dette være. Hvor det siger /dig … skal du erstatte dette med din IFTTT -tokenøgle. Tryk på enter, og du skal derefter høre klikket på dine smarte stikrelæer, der tænder stikket. Hvis du ikke kunne høre det, kan du kontrollere Kasa -appen for at kontrollere status for dine stik.

Nu har vi afhængighederne for vores Enviro pHAT installeret og har nu IFTTT -opsætning, tid til at afslutte med at ændre koden.

Trin 4: Redigering af scriptet

Redigering af scriptet
Redigering af scriptet

Begivenhedsnavn og IFTTT TOKENS Tilbage på din pi, eskalerer til placeringen af dit pi-baby-cooler.py script, for mig er det in /home /pi (min hjemmemappe) og rediger filen ved hjælp af nano:

nano pi-baby-cooler.py

Inden finder hvor der står def turn_off ()

def turn_off ():

# Indstil dit triggerord - f.eks. "kold" - og IFTTT Webhook -tokenet herunder. TRIGGER_WORD = "cold" TOKEN = "DIT IFTTT TOKEN GÅR HER" requests.post ("https://maker.ifttt.com/trigger/{trigger_word}/with/key/{token}".format (trigger_word = TRIGGER_WORD, token = TOKEN)) print ("Ventilator slukket!"):

Dette er funktionen til at slukke blæseren. Det gør dette ved at sende et webhook til IFTTT, som får tplink HS100 til at slukke. Hvis du har beholdt udløseren i din IFTTT -konto på samme måde som "kold", kan du lade det stå tilbage og bare erstatte det token, du fik fra webhooks -dokumentationen tidligere. Hvis du valgte et andet hændelsesnavn, skal du erstatte dette ord her.

Efter at have indsat i dit IFTTT -token, skal du gå til det næste afsnit, hvor der står def turn_on ()

def turn_on ():# Indstil dit triggerord - f.eks. "hot" - og IFTTT Webhook -tokenet herunder. TRIGGER_WORD = "hot" TOKEN = "DIT IFTTT TOKEN GÅR HER" requests.post ("https://maker.ifttt.com/trigger/{trigger_word}/with/key/{token}".format (trigger_word = TRIGGER_WORD, token = TOKEN)) print ("Fan på!")

Denne funktion er bagsiden af slukket, den tænder TP-link smart-stikket!

Hvis du har beholdt udløseren i din IFTTT -konto på samme måde som "hot", kan du lade det stå og bare erstatte det token, du fik fra webhooks -dokumentationen tidligere. Hvis du valgte et andet hændelsesnavn, skal du erstatte dette ord her.

Alt andet er allerede kodet ind, så du skulle ikke skulle foretage nogen ændringer til koden andre TRIGGER_WORD, TOKEN og et par justeringer i temperaturer, der er næste!

Ændring af temperaturerne

Find derefter op, hvor der står # Lokale variabler.

prøv: # Lokale variabler. tilstand = 0 # Indstiller tilstanden for kontakten lav = 20 # Lav værdi for temperaturniveau (celcius). høj = 24 # Høj værdi for temperaturniveau (celcius). periode = 120 # Forsinkelse, i sekunder, mellem opkald.

Tilstandsvariablen er, hvordan pi ved, om stikket er tændt eller ej, dette opdateres senere, hvis det bliver for varmt (24+*c, derefter ændres tilstanden senere til 1), dette ville også starte til webhook og tænde det smarte stik!

Den lave variabel er, hvor sejt jeg vil have rummet til at blive, før stikket slukkes. Hvis du vil have rummet varmere, skal du blot ændre dette til en højere værdi. Hvis du vil have det køligere, skal du sænke værdien.

Den høje variabel er den maksimale temperatur, jeg vil have, at rummet får, før jeg vil have blæseren til at sparke ind og begynde at køle rummet ned. Hvis du vil have blæseren til at tænde før dette, skal du blot sænke værdien, eller hvis du vil have, at den skal være varmere, så højere værdien.

Periodevariablen er varigheden i sekunder mellem temperaturkontrollerne. Hvis du vil have pi -scriptet til at kontrollere sjældnere, så er tallet højere, hvis du vil forkorte tiden, sænk tallet.

Når du har foretaget dine ændringer, gem og afslut nano

CTRL + x

Trin 5: Brug af scriptet

Brug af scriptet
Brug af scriptet

Kører scriptet lokalt

Der er et par måder, du kan køre dette script på. Du kan oprette forbindelse via SSH og skrive følgende:

sudo python /pi-baby-cooler.py

Dette vil køre scriptet efter behov, dette vil kun fungere, så længe der er en aktiv SSH -session til PI. Den anden måde er at bruge skærmen, skærmen er ikke installeret som standard tror jeg ikke, så en sudo apt installeringsskærm skal bruges.

Her er en god tutorial om, hvordan du bruger skærmen korrekt:

Skærm eller GNU -skærm er en terminal multiplexer. Med andre ord betyder det, at du kan starte en skærmsession og derefter åbne et vilkårligt antal vinduer (virtuelle terminaler) inde i denne session. Processer, der kører på skærmen, fortsætter med at køre, når deres vindue ikke er synligt, selvom du bliver afbrudt.

Automatiserer til at køre på boot

Den anden måde er at redigere boot -filen i /etc/rc.local for at gøre denne brug nano.

sudo nano /etc/rc.local

Redigering af denne fil får scriptet til at køre ved opstart. hvilket betyder, at det altid vil køre, når PI'en er på, det er også sådan, jeg kører 90% af mine scripts på andre PI'er.

Hvis du har brugt rc.local, kan du køre kommandoen herunder for at se, hvad der i øjeblikket kører på PI'en. Dette er praktisk til fejlfinding senere for at se, om scriptet overhovedet fungerer eller ej:

ps -aef | grep python

Trin 6: Færdig

Nå … Tak, hvis du stadig er her og nåede dette punkt!

Beklager, det har været ret længe, dette var min første nogensinde instruerbare og var ikke helt sikker på, hvad jeg skulle skrive ned.

Som jeg nævnte i starten, har disse instruktører mange forskellige applikationer, der bruger varme til at udløse et smart stik! du kunne køle ethvert værelse i huset/lejligheden/lejligheden/garagen/skuret. Du kan endda ændre IFTTT for at udløse enhver smart enhed, der kan kontrolleres via IFTTT, det behøver ikke bare at være TP-link kasa-enheder.

Jeg ville elske at høre, om du har prøvet disse instruktører, eller selv hvis du fandt det interessant, efterlad mig en kommentar herunder!

Hvis du har spørgsmål, skal du sørge for at forlade dem herunder, og jeg vil prøve mit bedste at besvare dem!

Sensors konkurrence
Sensors konkurrence
Sensors konkurrence
Sensors konkurrence

Nummer to i sensorkonkurrencen

Anbefalede: