Inhoudsopgave:
- Benodigdheden
- Stap 1: Uw Raspberry Pi instellen
- Stap 2: Uw Enviro PHAT. instellen
- Stap 3: Uw IFTTT-account/verbinding instellen
- Stap 4: Het script bewerken
- Stap 5: Het script gebruiken
- Stap 6: Klaar
Video: Je baby koel houden deze zomer - Domme fans besturen met slimme dingen! - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Op het moment dat ik dit schrijf, ben ik twee weken geleden vader geworden van een ongelooflijke babyjongen!
Nu de seizoenen veranderen, de dagen langer worden en de temperaturen warmer worden, dacht ik dat het goed zou zijn om een soort monitor in de kinderkamer te hebben om te controleren hoe warm het daar was!
Ik heb in de loop der jaren niet veel met python gesleuteld, maar wilde er sinds mijn eerste jaar op de universiteit, bijna 5 jaar geleden, weer in! Daarom dacht ik dat het beter zou zijn om te documenteren wat ik deed, om mij later te helpen, ook om iemand anders te helpen die hetzelfde wil doen!
Met behulp van een Raspberry pi, Enviro pHAT en een slimme TP-link kasa plug, kunt u de pluggen bedienen met behulp van het IFTTT-framework! het is heel eenvoudig om te doen en je kunt deze walkthrough zelfs aanpassen om alles te bedienen via verschillende sensoren en verschillende apparaten! Ik hoop dat je dit nuttig vindt. Als je dit instructable leuk vindt, vergeet dan niet te stemmen op mijn inzending in de sensorenwedstrijd!:D (sorry voor het vragen), het is de eerste keer dat ik dit doe en ik zou graag een kans willen maken om iets te winnen voor alle tijd die ik erin steek
** EDIT ** De komende dagen ga ik kijken naar het pushen van deze gegevens naar een Grafana-bord, als je denkt dat dit goed zou zijn, laat het dan weten!:NS
Laten we er meteen op ingaan…
Benodigdheden
- Elke Raspberry pi zal het doen, maar ik koos de Zero W omdat het was wat ik moest inleveren in mijn trekking, het heeft ook de kleinste vormfactor met wifi standaard ingeschakeld! - Raspberry PI Zero met
- SD-kaart, iedereen heeft hier andere voorkeuren voor, maar ik heb er een gebruikt! - Micro SD kaart
- Als je vastzit, is hier de officieel ondersteunde documentatie voor SD-kaarten -officieel ondersteunde SD-kaarten
- Overbruggingsdraden (zal later uitleggen) - Overbruggingsdraden
- Enviro pHAT voor alle glorieuze sensoren! - Envrio-pHAT
- Een slimme stekker, ik ben voor TP-Link gegaan omdat je geen fancy hubs nodig hebt om het uit de doos te laten werken! - Slimme stekker!
- Een domme ventilator om te bedienen, je kunt elke ventilator gebruiken, ik heb zojuist een ventilator op Amazon gevonden, maar elke ventilator met een stopcontact werkt prima - Domme ventilator
- Een soldeerbout, maar als je geen soldeerbout wilt gebruiken, kun je click-in headers krijgen voor je PI en pHAT - GPIO-hammer-header
Om een verbinding tussen TP-links kasa en IFTTT te laten werken, moet u een TP-link kasa en IFTTT-account hebben ingesteld voordat u met dit instructable begint. Wanneer u uw TP-link slimme stekker ontvangt, zullen de instructies die bij de slimme stekker zijn geleverd u door het installatieproces leiden, inclusief hoe u uw stekker een naam geeft en wat de basisfuncties zijn
Als je al je boodschappenlijstje hebt, is het tijd om alles in elkaar te zetten!
Stap 1: Uw Raspberry Pi instellen
Imaging van uw micro-SD-kaartKrijg de nieuwste en beste Raspbian-afbeelding, de lite-versie zal het prima doen, zo niet beter voor de zero w! -
Schrijf deze afbeelding naar de SD-kaart, hiervoor heb je een lezer nodig en een imager, ik gebruik etser -
Wifi instellen (optioneel)Als je PI een ingebouwde wifi heeft, waarom zou je die dan niet nu instellen om later veel gedoe met consoles te besparen!
Nadat uw pi is afgebeeld, is de schijf uitgeworpen. Koppel de SD-kaart los en sluit deze weer aan, zodat deze opnieuw door uw machine wordt gedetecteerd. Er zou een opstartpartitie moeten verschijnen.
Maak een leeg bestand met de naam wpa_supplicant.conf in de opstartpartitie van je pi, plaats hier het onderstaande in dit nieuwe bestand:
netwerk={
ssid="YOUR_SSID" psk="YOUR_WIFI_PASSWORD" key_mgmt=WPA-PSK }
SSH inschakelen op uw PI naar keuze (optioneel)
Standaard is ssh uitgeschakeld voor een schone Raspbian-afbeelding. U zou het systeem moeten opstarten, een toetsenbord en beeldscherm op de Pi moeten aansluiten en vervolgens ssh moeten inschakelen. Met deze stap wordt ssh bij de eerste keer opstarten ingeschakeld. Maak in de opstartpartitie een nieuw bestand met de naam ssh. Een leeg bestand met precies die naam.
Nadat u deze twee optionele stappen hebt voltooid, maakt uw PI automatisch verbinding met uw WIFI en is SSH standaard ingeschakeld.
Nadat u de micro-SD-kaart hebt afgebeeld en geconfigureerd, kunt u deze in uw PI of keuze plaatsen en inschakelen!
Uw PIO bijwerken Nadat u uw PI hebt opgestart, kunt u uw IP-adres van uw PI vinden in de instellingen van uw draadloze router. De meeste routers zijn anders, dus het zou moeilijk zijn om hier een handleiding voor te schrijven helaas!
Zodra je het IP-adres van je PI hebt, maak je verbinding via SSH en log je in met het volgende:
Gebruikersnaam: pi
Wachtwoord: framboos
Zodra u een actieve SSH-sessie met uw PI heeft, wilt u deze bijwerken. Voer gewoon het onderstaande uit met de bijbehorende Y of N tijdens het bijwerken:
sudo apt-get update
sudo apt-get upgrade
het is altijd goed om een PI opnieuw op te starten nadat nieuwe updates zijn geïnstalleerd om ervoor te zorgen dat deze opnieuw wordt uitgevoerd met de nieuwste updates, dit kan worden bereikt met
sudo reboot -n
Nu is de PI klaar, tijd om door te gaan naar de volgende stap!
Stap 2: Uw Enviro PHAT. instellen
Uw Enviro pHAT. bekabelen
Zodra u uw pi helemaal up-to-date heeft, kunt u uw Enviro pHAT aansluiten op de PI van uw keuze!
***Om ervoor te zorgen dat u uw PI of uw pHAT niet beschadigt, moet u deze eerst uitschakelen***
Hier heb ik de jumperkabels gebruikt omdat je thermische uitspoeling kunt krijgen van de CPU die heet wordt onder de Enviro pHAT. Deze extra warmte kan de temperatuurmetingen veranderen die u later zou krijgen. Hierdoor heb ik 5 jumper leads gebruikt op de onderstaande pinnen:
- Pin 3 – GPIO2 (SDA I2C)
- Pin 5 – GPIO3 (SCL I2C)
- Pin 7 - GPIO4
- Pin 6 – Aarde
- Pin 4 - 5V
Controleer het bedradingsschema bovenaan deze stap voor visuele referentie of de onderstaande link:
pinout.xyz/pinout/enviro_phat
(sorry voor de slordige verfbeurt)
Zorg er bij het aansluiten van uw pHAT voor dat deze op de juiste manier is ingesteld, anders kunt u hem mogelijk beschadigen!!! Om dit te doen, had ik de mijne zo ingesteld dat de ANALOG IN-headers naar de SD-kaartsleuf zijn gericht, dit is later in mijn foto's omgedraaid om het beter in mijn "drager" te laten passen.
De afhankelijkheden installeren
Schakel uw PI weer in en SSH weer in
Eenmaal terug in uw PI voert u het volgende uit om de vereiste pakketten en software voor uw Enviro pHAT te installeren:
krul https://get.pimoroni.com/envirophat | bash
Zorg ervoor dat u op Y of N drukt wanneer dat nodig is.
Nadat de installatie is voltooid, moet u uw PI opnieuw opstarten …
sudo reboot -n
De pHAT. testen
Om er zeker van te zijn dat je pHAT goed is aangesloten, kun je in een python-module vallen en een paar commando's uitvoeren door terug te plakken naar je PI en python te typen, eenmaal in een python-module typ je het onderstaande:
van omgeving import weer
print(weer.temperatuur())
Dit zou u een uitlezing moeten tonen zoals hieronder:
>> van omgeving import weer
>> afdrukken (weer. temperatuur ()) 24.0806166987
Probleemoplossen
Als u iets krijgt in de trant van een fout hieronder:
Traceback (meest recente oproep als laatste): Bestand "", regel 1, in Bestand "/usr/lib/python2.7/dist-packages/envirophat/bmp280.py", regel 134, in temperatuur self.update() Bestand " /usr/lib/python2.7/dist-packages/envirophat/bmp280.py", regel 169, in update if self._read_byte(REGISTER_CHIPID) == 0x58: # controleer sensor-id 0x58=BMP280 Bestand "/usr/lib/ python2.7/dist-packages/envirophat/bmp280.py", regel 116, in _read_byte return self.i2c_bus.read_byte_data(self.addr, register) IOError: [Errno 121] Externe I/O-fout
U kunt dan uitvoeren:
sudo i2cdetect -y 1
Dit voert een diagnostische controle uit op uw verbindingen/bedrading en u zoekt iets als hieronder:
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
Als dit niet het geval is, moet u teruggaan en uw bedrading opnieuw controleren, controleer het bedradingsschema en probeer het opnieuw!
Het script pi-baby-cooler.py installeren
Als alles goed is en het is gelukt om een temperatuur uitlezing te krijgen, dan kunnen we doorgaan en het baby-cooler.py pakket installeren!
Vanwege de manier waarop instructables met links omgaat, heb ik het.py-script in de bovenstaande stapkop toegevoegd … Om dit naar je PI te kopiëren, raad ik aan zoiets als WinSCP te gebruiken:
winscp.net/eng/download.php
WinSCP is een populaire SFTP-client en FTP-client voor Microsoft Windows! Kopieer het bestand tussen een lokale computer en externe servers met behulp van FTP-, FTPS-, SCP-, SFTP-, WebDAV- of S3-bestandsoverdrachtprotocollen.
WinSCP is eenvoudig te gebruiken, maak eenvoudig verbinding met uw PI met behulp van het IP-adres van uw PI en sleep het.py-bestand naar de plaats waar u het wilt uitvoeren, voor mij is dit van /home/pi.
Nu staat het.py-script op uw PI, het is tijd om verder te gaan met het instellen van uw IFTTT-account / verbindingen
Stap 3: Uw IFTTT-account/verbinding instellen
Vervolgens zullen we kijken naar het verkrijgen van een IFTTT-token, dit zal worden gebruikt bij het aanroepen van de hot / cold-functie in het script om verbinding te maken met de kasa-stekker en de ventilator in of uit te schakelen.
De webhooks maken
Ga naar https://ifttt.com/ en maak een account aan als je er nog geen hebt.
Nadat u bent ingelogd, zoekt u in de zoekbalk: TP-link kasa
Zodra dat is geladen, klikt u op services en vervolgens op TP-link kasa. U moet dan uw kasa-account verbinden met uw IFTTT-account, log in op uw kasa-account via IFTTT om verbinding te maken.
Nadat u uw account heeft gekoppeld, klikt u op "Mijn applets" en vervolgens op een nieuwe applet, en vervolgens op "+this" en zoekt u naar webhooks.
Klik op "Ontvang een webverzoek", binnen de gebeurtenisnaam type hot (dit kan alles zijn wat je wilt, maar je moet dit later bijwerken in het pi-baby-coller.py script of dit zal niet werken, ik heb hot gebruikt om de ventilator aan en koud om de ventilator uit te schakelen. Klik vervolgens op trigger maken.
Vervolgens moeten we je nieuwe trigger koppelen aan je Kasa-account, klik op "+dat" en zoek kasa, klik op de TP-link kasa en klik vervolgens op "inschakelen", selecteer daarna het apparaat dat je wilt inschakelen en klik vervolgens op maken actie. Bekijk de actie en klik op voltooien indien correct.
**********
Onthoud dat als je een andere evenementnaam hebt gekozen dan "heet" en "koud", je deze moet noteren voor later en het script moet bijwerken! Anders werkt het.py-script niet
**********
Nadat we onze eerste webhook hebben gemaakt, herhaalt u het proces voor "koud", maar deze keer selecteert u uitschakelen in plaats van inschakelen bij het selecteren van de +die actie.
Zodra we twee event-webhooks hebben in uw my-applets-accountgedeelte, klikt u op services en zoekt u naar webhooks en klikt u daarop. Hierbinnen ziet u een documentatieknop (rechtsboven), klik daarop. Hier vindt u uw IFTTT-tokensleutel. terwijl je hier je sleutel noteert (je hebt hem later nodig), heb ik de mijne in de afbeelding bewerkt, anders zou iedereen mijn slimme stekkers aan of uit kunnen zetten.
De webhooks testen
Nu hebben we twee webhooks gemaakt die zijn verbonden met ons kasa-account, we kunnen testen of ze werken of niet!
Binnen uw PI kunt u het volgende invoeren:
curl -X POST
Waar het "heet" zegt, moet je de naam van je evenement toevoegen, als je het als "heet" hebt gelaten, laat dit dan staan. Waar het staat / u … u moet dit vervangen door uw IFTTT-tokensleutel. Druk op enter en je zou dan de klik van het relais van je slimme stekkers moeten horen om de stekker aan te zetten. Als u het niet kunt horen, kunt u de Kasa-app controleren om de status van uw stekkers te controleren.
Nu hebben we de afhankelijkheden voor onze Enviro pHAT geïnstalleerd en hebben we nu IFTTT-configuratie, tijd om af te sluiten met het wijzigen van de code.
Stap 4: Het script bewerken
Evenementnaam en IFTTT TOKENSTerug op je pi, escaleren naar de locatie van je pi-baby-cooler.py-script, voor mij staat het in /home/pi (mijn thuismap) en bewerk het bestand met nano:
nano pi-baby-cooler.py
Binnen vinder waar staat def turn_off()
def turn_off():
# Stel uw triggerwoord in - b.v. "koud" - en de IFTTT Webhook-token hieronder. TRIGGER_WORD = "koud" TOKEN = "UW IFTTT-TOKEN GAAT HIER" requests.post("https://maker.ifttt.com/trigger/{trigger_word}/with/key/{token}".format(trigger_word=TRIGGER_WORD, token=TOKEN)) print("Ventilator uit!"):
Dit is de functie om de ventilator uit te schakelen. Het doet dit door een webhook naar IFTTT te sturen, waardoor de tplink HS100 wordt uitgeschakeld. Als u het triggerwerk binnen uw IFTTT-account hetzelfde hebt gehouden als "koud", kunt u dat laten staan en gewoon het token vervangen dat u eerder uit de webhooks-documentatie hebt gekregen. Als je een andere evenementnaam hebt gekozen, vervang dan dit woord hier.
Nadat je je IFTTT-token hebt geplakt, ga je naar het volgende gedeelte waar def turn_on() staat
def turn_on():# Stel je triggerwoord in - b.v. "hot" - en de IFTTT Webhook-token hieronder. TRIGGER_WORD = "hot" TOKEN = "UW IFTTT-TOKEN GAAT HIER" requests.post("https://maker.ifttt.com/trigger/{trigger_word}/with/key/{token}".format(trigger_word=TRIGGER_WORD, token=TOKEN)) print("Ventilator aan!")
Deze functie is het omgekeerde van de uit, het zet de TP-link slimme stekker aan!
Als je het triggerwerk binnen je IFTTT-account hetzelfde hebt gehouden als "hot", kun je dat erin laten en gewoon het token vervangen dat je eerder uit de webhooks-documentatie hebt gekregen. Als je een andere evenementnaam hebt gekozen, vervang dan dit woord hier.
Al het andere is al gecodeerd, dus je zou geen wijzigingen in de code moeten aanbrengen, behalve de TRIGGER_WORD, TOKEN en een paar aanpassingen in temperaturen die de volgende zijn!
De temperaturen wijzigen
Zoek vervolgens waar het staat # Lokale variabelen.
probeer: # Lokale variabelen. status = 0 # Stelt de status in voor de schakelaar laag = 20 # Lage waarde voor temperatuurniveau (celcius). hoog = 24 # Hoge waarde voor temperatuurniveau (celcius). periode = 120 # Vertraging, in seconden, tussen oproepen.
De statusvariabele is hoe de pi weet of de plug aan staat of niet, dit wordt later bijgewerkt als het te heet wordt (24+*c dan wordt de status later gewijzigd in 1), dit zou ook naar de webhook gaan en draaien de slimme stekker aan!
De lage variabele is hoe koel ik wil dat de kamer wordt voordat de stekker wordt uitgeschakeld. Als je de kamer warmer wilt hebben, verander dit dan gewoon naar een hogere waarde. Als u het koeler wilt hebben, verlaagt u de waarde.
De hoge variabele is de maximale temperatuur die ik wil dat de kamer krijgt voordat ik wil dat de ventilator aanslaat en de kamer begint af te koelen. Als je wilt dat de ventilator eerder aangaat, verlaag dan gewoon de waarde, of als je hem warmer wilt hebben, verhoog dan de waarde.
De periodevariabele is de duur in seconden tussen de temperatuurcontroles. Als u wilt dat het pi-script minder vaak controleert dan hoger het getal als u de tijd wilt verkorten, verlaagt u het getal.
Nadat u uw wijzigingen heeft aangebracht, kunt u nano opslaan en afsluiten
CTRL + x
Stap 5: Het script gebruiken
Het script lokaal uitvoeren
Er zijn een paar manieren waarop u dit script kunt uitvoeren, u kunt verbinding maken via SSH en het volgende typen:
sudo python /pi-baby-cooler.py
Hiermee wordt het script op aanvraag uitgevoerd, dit werkt alleen zolang er een actieve SSH-sessie naar de PI is. De andere manier is om het scherm te gebruiken, het scherm is niet standaard geïnstalleerd, denk ik, dus er zal een sudo apt-installatiescherm moeten worden gebruikt.
Hier is een geweldige tutorial over hoe je het scherm correct kunt gebruiken:
Screen of GNU Screen is een terminal-multiplexer. Met andere woorden, het betekent dat u een schermsessie kunt starten en vervolgens een willekeurig aantal vensters (virtuele terminals) binnen die sessie kunt openen. Processen die in Screen worden uitgevoerd, blijven draaien wanneer hun venster niet zichtbaar is, zelfs als de verbinding wordt verbroken.
Automatiseren om te draaien bij het opstarten
De andere manier is om het opstartbestand in /etc/rc.local te bewerken om dit te doen, gebruik nano.
sudo nano /etc/rc.local
Als u dit bestand bewerkt, wordt het script bij het opstarten uitgevoerd. wat betekent dat het altijd zal draaien wanneer de PI is ingeschakeld, dit is ook hoe ik 90% van mijn scripts op andere PI's uitvoer.
Als je de rc.local hebt gebruikt, kun je de onderstaande opdracht uitvoeren om te controleren wat er momenteel op de PI draait. Dit is handig om later problemen op te lossen om te zien of het script helemaal werkt of niet:
ps -aef | grep python
Stap 6: Klaar
Nou… Bedankt als je nog steeds hier bent en dit punt hebt bereikt!
Sorry dat het vrij lang is geweest, dit was mijn eerste ooit instructable en was niet helemaal zeker wat te schrijven.
Zoals ik aan het begin al zei, heeft deze instructables veel verschillende toepassingen waarbij warmte wordt gebruikt om een slimme stekker te activeren! je zou elke kamer in huis/flat/appartement/garage/schuur kunnen koelen. Je kunt de IFTTT zelfs aanpassen om elk slim apparaat te activeren dat bestuurbaar is via IFTTT, het hoeven niet alleen TP-link kasa-apparaten te zijn.
Ik zou graag horen of je deze instructables hebt uitgeprobeerd of zelfs als je het interessant vond, laat me dan hieronder een reactie achter!
Als je vragen hebt, laat ze dan hieronder achter en ik zal mijn best doen om ze te beantwoorden!
Tweede plaats in de sensorwedstrijd
Aanbevolen:
Slimme bureaulamp - Slimme verlichting met Arduino - Neopixels-werkruimte: 10 stappen (met afbeeldingen)
Slimme bureaulamp | Slimme verlichting met Arduino | Neopixels-werkruimte: tegenwoordig brengen we veel tijd thuis door, studeren en werken virtueel, dus waarom zouden we onze werkruimte niet groter maken met een aangepast en slim verlichtingssysteem op Arduino en Ws2812b-leds. Hier laat ik u zien hoe u uw Smart LED bureaulamp die
Halloween-pompoen met een bewegend animatronic-oog - Deze pompoen kan zijn ogen rollen! 10 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Halloween-pompoen met een bewegend animatronic-oog | Deze pompoen kan zijn oog rollen!: In deze Instructable leer je hoe je een Halloween-pompoen maakt die iedereen bang maakt als zijn oog beweegt. Stel de triggerafstand van de ultrasone sensor in op de juiste waarde (stap 9) en je pompoen zal iedereen die het aandurft om snoep te nemen versteenen
Blijf koel deze zomer: PC Fan Mod: 4 stappen (met afbeeldingen)
Blijf koel deze zomer: PC Fan Mod: Wie heeft er niet een dozijn van die PC-fans rondslingeren? In deze build laat ik je zien hoe je die ventilatoren kunt gebruiken om een mooi regelbaar briesje te produceren tijdens warme zomerdagen. En hij werkt minimaal 4 uur op een gewone 9V batterij
Bedien elektrische dingen met uw computer: 10 stappen (met afbeeldingen)
Bedien elektrische dingen met uw computer: bedien lichten (of elk ander elektrisch apparaat) met uw toetsenbordverlichting. zonder irritante microcontroller!!!! Eerst wil ik zeggen dat dit mijn eerste instructable is en dat ik niet veel foto's heb gemaakt. Ook kreeg ik het idee van: USB-gestuurde mini
Ball of Death: of hoe ik leerde om te stoppen met piekeren en van Apple Pro-luidsprekers te houden: 11 stappen (met afbeeldingen)
Ball of Death: of hoe ik leerde om te stoppen met piekeren en van Apple Pro-luidsprekers te houden: Ik heb altijd gezegd dat Apple sinds het weggooien van de "beige doos" altijd het voortouw heeft genomen op het gebied van industrieel ontwerp. De integratie van vorm en functie kan door geen enkele andere fabrikant in welke branche dan ook worden aangeraakt (Porsche komt in de buurt). Zijn