Spisu treści:

Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!: 6 kroków (ze zdjęciami)
Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!: 6 kroków (ze zdjęciami)

Wideo: Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!: 6 kroków (ze zdjęciami)

Wideo: Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!: 6 kroków (ze zdjęciami)
Wideo: Typy toksycznych matek. Psychologia 2024, Listopad
Anonim
Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!
Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!
Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!
Utrzymuj dziecko w chłodzie tego lata - Kontroluj głupich fanów za pomocą inteligentnych rzeczy!

Od dwóch tygodni, w momencie pisania tego, zostałem tatą niesamowitego chłopca!

Wraz ze zmieniającymi się porami roku, wydłużającymi się dniami i coraz cieplejszymi temperaturami, pomyślałem, że dobrze byłoby mieć jakiś monitor w przedszkolu, aby sprawdzić, jak gorąco tam było!

Przez lata nie majstrowałem zbytnio przy pythonie, ale chciałem wrócić do tego od pierwszego roku na uniwersytecie, prawie 5 lat temu! Z tego powodu pomyślałem, że lepiej będzie udokumentować to, co zrobiłem, aby pomóc mi później, a także pomóc każdemu, kto chce zrobić to samo!

Używając Raspberry pi, Enviro pHAT i inteligentnej wtyczki kasa TP-link, możesz sterować wtyczkami za pomocą frameworka IFTTT! jest to naprawdę proste i możesz nawet zmodyfikować ten przewodnik, aby kontrolować wszystko za pomocą różnych czujników i różnych urządzeń! Mam nadzieję, że uznasz to za przydatne. Jeśli podoba Ci się ta instrukcja, nie zapomnij zagłosować na moje zgłoszenie w konkursie czujników!:D (przepraszam za pytanie), robię to po raz pierwszy i chciałbym mieć szansę na wygranie czegoś przez cały czas, który w to wkładam

** EDYCJA ** W ciągu najbliższych kilku dni zamierzam przenieść te dane na tablicę Grafana, jeśli uważasz, że to byłoby dobre, daj znać!:D

Przejdźmy od razu…

Kieszonkowe dzieci

  1. Zrobi to każde Raspberry pi, ale wybrałem Zero W, ponieważ to było to, co musiałem oddać w moim losowaniu, ma również najmniejszą obudowę z domyślnie włączonym Wi-Fi! - Raspberry PI Zero w
  2. Karta SD, każdy ma inne preferencje, ale użyłem jednego z nich! - Karta micro sd
  3. Jeśli utkniesz, oto oficjalna obsługiwana dokumentacja kart SD -oficjalnie obsługiwane karty SD
  4. Przewody połączeniowe (wyjaśnię później) - Przewody połączeniowe
  5. Enviro pHAT dla wszystkich wspaniałych czujników! - Envrio-pHAT
  6. Inteligentna wtyczka, wybrałem TP-Link, ponieważ nie potrzebujesz żadnych wymyślnych koncentratorów, aby to zadziałało! - Inteligentna wtyczka!
  7. Głupi wentylator do sterowania, można użyć dowolnego wentylatora, właśnie znalazłem wentylator na amazon, ale każdy wentylator naścienny będzie działał dobrze - Głupi wentylator
  8. Lutownica, ale jeśli nie chcesz używać lutownicy, możesz kliknąć w nagłówki dla PI i pHAT - GPIO-header-hammer-header

Aby połączenie między TP-link kasa i IFTTT działało, musisz mieć skonfigurowane konto TP-link kasa i IFTTT przed rozpoczęciem tej instrukcji. Po otrzymaniu inteligentnej wtyczki TP-link instrukcje dołączone do inteligentnej wtyczki poprowadzą Cię przez proces konfiguracji, w tym nazwę wtyczki i jej podstawowe funkcje

Gdy masz już całą listę zakupów, nadszedł czas, aby wszystko złożyć!

Krok 1: Konfiguracja Raspberry Pi

Obrazowanie karty micro-SD Uzyskaj najnowszy i najlepszy obraz Raspbian, wersja lite będzie dobrze, jeśli nie lepsza dla zera w! -

Zapisz ten obrazek na kartę SD, potrzebny będzie do tego czytnik i imager, ja używam wytrawiacza -

Skonfiguruj Wi-Fi (opcjonalnie) Jeśli twój PI ma wbudowaną sieć WIFI, dlaczego nie skonfigurować go teraz, aby zaoszczędzić wiele kłopotów z konsolami później!

Po zobrazowaniu pi dysk został wysunięty. Odłącz i podłącz kartę SD, aby została ponownie wykryta przez urządzenie. Powinna pojawić się partycja rozruchowa.

Utwórz pusty plik o nazwie wpa_supplicant.conf na partycji rozruchowej twojego pi, w tym miejscu umieść poniższy w tym nowym pliku:

sieć={

ssid="TWÓJ_SSID" psk="TWOJE_HASŁO_WIFI" key_mgmt=WPA-PSK }

Włączenie SSH w wybranym przez Ciebie PI (opcjonalnie)

Domyślnie czysty obraz Raspbian będzie miał wyłączony ssh. Musisz uruchomić system, podłączyć klawiaturę i wyświetlacz do Pi, a następnie włączyć ssh. Ten krok włączy ssh przy pierwszym uruchomieniu. Na partycji rozruchowej utwórz nowy plik o nazwie ssh. Pusty plik o dokładnie takiej nazwie.

Po wykonaniu tych dwóch opcjonalnych kroków, twój PI automatycznie połączy się z twoją siecią WIFI i będzie miał domyślnie włączone SSH.

Po zobrazowaniu i skonfigurowaniu karty micro-SD możesz włożyć ją do swojego PI lub wyboru i włączyć!

Aktualizacja PI Po uruchomieniu PI możesz znaleźć adres IP swojego PI w ustawieniach routerów bezprzewodowych. Większość routerów jest inna, więc niestety trudno byłoby napisać przewodnik po tym!

Po uzyskaniu adresu IP swojego PI, połącz się przez SSH i zaloguj się, wykonując następujące czynności:

Nazwa użytkownika: pi

Hasło: malina

Gdy masz aktywną sesję SSH ze swoim PI, będziesz chciał ją zaktualizować, po prostu uruchom poniższe z odpowiednim Y lub N podczas aktualizacji:

aktualizacja sudo apt-get

sudo apt-get upgrade

zawsze dobrze jest zrestartować PI po zainstalowaniu nowych aktualizacji, aby upewnić się, że działa od nowa z najnowszymi aktualizacjami, można to osiągnąć za pomocą

sudo restart -n

Teraz PI gotowe, czas przejść do następnego kroku!

Krok 2: Konfiguracja Enviro PHAT

Konfiguracja Enviro PHAT
Konfiguracja Enviro PHAT
Konfiguracja Enviro PHAT
Konfiguracja Enviro PHAT

Podłączanie Enviro pHAT

Po zaktualizowaniu wszystkich PI możesz podłączyć Enviro pHAT do wybranego PI!

***Aby upewnić się, że nie uszkodzisz swojego PI lub pHAT, najpierw wyłącz je***

Tutaj użyłem zworek, ponieważ pod Enviro pHAT można uzyskać wypłukiwanie termiczne z nagrzewającego się procesora. To dodatkowe ciepło może zmienić odczyty temperatury, które uzyskasz później. Z tego powodu użyłem 5 wyprowadzeń zworek na poniższych pinach:

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

Sprawdź schemat połączeń u góry tego kroku, aby uzyskać odniesienie wizualne lub poniższy link:

pinout.xyz/pinout/enviro_phat

(przepraszam za tandetną robotę malowania)

Podczas podłączania okablowania pHAT upewnij się, że jest ustawiony we właściwy sposób, w przeciwnym razie możesz go potencjalnie uszkodzić !!! Aby to zrobić, ustawiłem swoją konfigurację, aby nagłówki ANALOG IN były skierowane w stronę gniazda karty SD, co później zostało odwrócone na moich zdjęciach, aby pasowało ściśle do mojego „nośnika”.

Instalowanie zależności

Włącz kopię zapasową PI i z powrotem SSH

Po powrocie do PI uruchom następujące czynności, aby zainstalować wymagane pakiety i oprogramowanie dla Enviro pHAT:

curl https://get.pimoroni.com/enviropha | grzmotnąć

Pamiętaj, aby w razie potrzeby nacisnąć Y lub N.

Po zakończeniu instalacji pamiętaj o ponownym uruchomieniu PI…

sudo restart -n

Testowanie pHAT

Aby upewnić się, że twój pHAT jest prawidłowo podłączony, możesz wpaść do modułu Pythona i uruchomić kilka poleceń, wprowadzając z powrotem do PI i wpisując Pythona, raz w module Pythona wpisz poniżej:

z envirophat importuje pogodę

print(pogoda.temperatura())

Powinno to pokazać odczyt jak poniżej:

>> z enviropha importuj pogodę

>> print(pogoda.temperatura()) 24.0806166987

Rozwiązywanie problemów

Jeśli pojawi się coś podobnego do poniższego błędu:

Traceback (ostatnie wywołanie ostatniego): Plik "", wiersz 1, w pliku "/usr/lib/python2.7/dist-packages/envirophat/bmp280.py", wiersz 134, w temperaturze self.update() Plik " /usr/lib/python2.7/dist-packages/envirophat/bmp280.py", wiersz 169, w aktualizacji, jeśli self._read_byte(REGISTER_CHIPID) == 0x58: # sprawdź identyfikator czujnika 0x58=BMP280 Plik "/usr/lib/ python2.7/dist-packages/envirophat/bmp280.py", linia 116, w _read_byte return self.i2c_bus.read_byte_data(self.addr, register) IOError: [Errno 121] Błąd zdalnego wejścia/wyjścia

Następnie możesz uruchomić:

sudo i2cdetect -y 1

To uruchomi kontrolę diagnostyczną twoich połączeń/okablowania i będziesz szukał czegoś takiego jak poniżej:

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

Jeśli nie, musisz wrócić i ponownie sprawdzić okablowanie, sprawdź schemat połączeń i spróbuj ponownie!

Instalowanie skryptu pi-baby-cooler.py

Jeśli wszystko jest w porządku i udało Ci się uzyskać odczyt temperatury, możemy śmiało zainstalować pakiet baby-cooler.py!

Ze względu na to, jak instructables obsługuje linki, dołączyłem skrypt.py w powyższym nagłówku kroku… Aby skopiować to do twojego PI, polecam użyć czegoś takiego jak WinSCP:

winscp.net/eng/download.php

WinSCP to popularny klient SFTP i klient FTP dla Microsoft Windows! Kopiuj plik między komputerem lokalnym a serwerami zdalnymi za pomocą protokołów przesyłania plików FTP, FTPS, SCP, SFTP, WebDAV lub S3.

WinSCP jest prosty w użyciu, po prostu połącz się ze swoim PI używając adresu IP swojego PI, a następnie przeciągnij i upuść plik.py do miejsca, z którego chcesz go uruchomić, to jest z /home/pi.

Teraz skrypt.py jest w twoim PI, czas przejść do konfiguracji konta / połączeń IFTTT

Krok 3: Ustawienie konta/połączenia IFTTT

Ustawianie konta/połączenia IFTTT
Ustawianie konta/połączenia IFTTT
Ustawianie konta/połączenia IFTTT
Ustawianie konta/połączenia IFTTT
Ustawianie konta/połączenia IFTTT
Ustawianie konta/połączenia IFTTT

Następnie przyjrzymy się uzyskaniu tokena IFTTT, który będzie używany podczas wywoływania funkcji hot/cold w skrypcie, aby połączyć się z wtyczką kasa i włączyć/wyłączyć wentylator.

Tworzenie webhooków

Udaj się na https://ifttt.com/ i utwórz konto, jeśli jeszcze go nie masz.

Po zalogowaniu w pasku wyszukiwania wyszukaj: TP-link kasa

Po załadowaniu kliknij usługi, a następnie TP-link kasa. Następnie musisz połączyć konto kasa z kontem IFTTT, zalogować się do konta kasa przez IFTTT, aby nawiązać połączenie.

Po połączeniu konta kliknij „Moje aplety”, a następnie nowy aplet, a następnie kliknij „+to” i wyszukaj webhooki.

Kliknij „Odbierz żądanie sieciowe”, w polu nazwy zdarzenia wpisz hot (może to być cokolwiek chcesz, ale musisz zaktualizować to później w skrypcie pi-baby-coller.py lub to nie zadziała, użyłem hot, aby włączyć wentylator włączony i zimny, aby wyłączyć wentylator. Następnie kliknij utwórz wyzwalacz.

Następnie musimy połączyć twój nowy wyzwalacz z kontem Kasa, kliknij "+to" i wyszukaj kasa, kliknij TP-link kasa, a następnie kliknij "włącz", następnie wybierz urządzenie, które chcesz włączyć, a następnie kliknij utwórz akcja. Przejrzyj działanie i kliknij Zakończ, jeśli jest poprawne.

**********

Pamiętaj, że jeśli wybrałeś inną nazwę wydarzenia niż „gorący” i „zimny”, będziesz musiał zapisać je na później i zaktualizować skrypt! W przeciwnym razie skrypt.py nie zadziała

**********

Po utworzeniu naszego pierwszego web hooka powtórz proces dla "zimnego", ale tym razem wybierasz opcję wyłącz zamiast włączania podczas wybierania akcji +tę.

Po utworzeniu dwóch webhooków zdarzeń w sekcji konta Moje aplety kliknij usługi i wyszukaj webhooki, a następnie kliknij to. W tym miejscu zobaczysz przycisk dokumentacji (w prawym górnym rogu), kliknij go. Tutaj znajdziesz swój klucz tokena IFTTT. podczas gdy tutaj zanotuj swój klucz (będziesz go potrzebować później), edytowałem mój na zdjęciu, w przeciwnym razie każdy byłby w stanie włączyć lub wyłączyć moje inteligentne wtyczki.

Testowanie webhooków

Teraz stworzyliśmy dwa webhooki, które są połączone z naszym kontem kasa, możemy przetestować, czy działają, czy nie!

W swoim PI możesz wpisać:

curl -X POST

Tam, gdzie jest napisane „gorące”, musisz dodać nazwę wydarzenia, jeśli zostawiłeś je jako „gorące”, zostaw to w spokoju. Tam, gdzie jest napisane /ty… musisz to zastąpić kluczem tokena IFTTT. Naciśnij Enter, a powinieneś usłyszeć kliknięcie przekaźnika inteligentnych wtyczek, który włącza wtyczkę. Jeśli go nie słyszysz, możesz sprawdzić w aplikacji Kasa stan swoich wtyczek.

Teraz mamy zainstalowane zależności dla naszego Enviro pHAT i konfigurację IFTTT, czas zakończyć modyfikację kodu.

Krok 4: Edycja skryptu

Edycja skryptu
Edycja skryptu

Nazwa zdarzenia i IFTTT TOKENSWróć do swojego pi, eskaluj do lokalizacji twojego skryptu pi-baby-cooler.py, dla mnie jest to /home/pi (mój folder domowy) i edytuj plik za pomocą nano:

nano pi-baby-cooler.py

W wyszukiwarce, gdzie jest napisane def turn_off()

def turn_off():

# Ustaw słowo wyzwalające - np. „zimny” – a poniżej token IFTTT Webhook. TRIGGER_WORD = "cold" TOKEN = "TWÓJ TOKEN IFTTT JEST TUTAJ" requests.post("https://maker.ifttt.com/trigger/{trigger_word}/with/key/{token}".format(trigger_word=TRIGGER_WORD, token=TOKEN)) print("Wyłącz wentylator!"):

Jest to funkcja wyłączania wentylatora. Robi to, wysyłając webhook do IFTTT, który powoduje wyłączenie tplink HS100. Jeśli uruchomiłeś wyzwalacz na swoim koncie IFTTT tak samo jak „zimny”, możesz go zostawić i po prostu zastąpić token, który otrzymałeś wcześniej z dokumentacji webhooków. Jeśli wybrałeś inną nazwę wydarzenia, zastąp to słowo tutaj.

Po wklejeniu tokena IFTTT przejdź do następnej sekcji, w której jest napisane def turn_on()

def turn_on():# Ustaw swoje słowo wyzwalające - np. „gorący” – a poniżej token IFTTT Webhook. TRIGGER_WORD = "hot" TOKEN = "TWÓJ TOKEN IFTTT JEST TUTAJ" requests.post("https://maker.ifttt.com/trigger/{trigger_word}/with/key/{token}".format(trigger_word=TRIGGER_WORD, token=TOKEN)) print("Wachluj!")

Ta funkcja jest odwrotnością wyłączenia, włącza inteligentną wtyczkę TP-link!

Jeśli uruchomiłeś wyzwalacz na swoim koncie IFTTT tak samo jak „gorący”, możesz to zostawić i po prostu zastąpić token, który otrzymałeś wcześniej z dokumentacji webhooków. Jeśli wybrałeś inną nazwę wydarzenia, zastąp to słowo tutaj.

Cała reszta jest już zakodowana, więc nie powinieneś zmieniać kodu poza TRIGGER_WORD, TOKEN i kilka zmian w temperaturach, które są następne!

Zmiana temperatur

Następnie znajdź, gdzie jest napisane # Zmienne lokalne.

spróbuj: # Zmienne lokalne. state = 0 # Ustawia stan przełącznika low = 20 # Niska wartość poziomu temperatury (stopnie Celsjusza). high = 24 # Wysoka wartość poziomu temperatury (celsjusza). period = 120 # Opóźnienie w sekundach między połączeniami.

Zmienna stanu wskazuje, w jaki sposób pi wie, czy wtyczka jest włączona, czy nie, jest aktualizowana później, jeśli robi się zbyt gorąca (24+*c, a następnie stan zmienia się później na 1), to również uruchomiłoby się do webhooka i włączyło inteligentna wtyczka!

Najniższą zmienną jest to, jak fajnie chcę uzyskać pokój przed wyłączeniem wtyczki. Jeśli chcesz, aby w pomieszczeniu było cieplej, po prostu zmień to na wyższą wartość. Jeśli chcesz, żeby było chłodniej, zmniejsz wartość.

Wysoka zmienna to maksymalna temperatura, jaką chcę uzyskać w pomieszczeniu, zanim chcę, aby wentylator włączył się i zaczął schładzać pomieszczenie. Jeśli chcesz, aby wentylator włączył się wcześniej, po prostu zmniejsz wartość lub jeśli chcesz, aby było cieplej, zwiększ wartość.

Zmienna okres to czas trwania w sekundach między sprawdzeniami temperatury, jeśli chcesz, aby skrypt pi sprawdzał rzadziej, a następnie zwiększ liczbę, jeśli chcesz skrócić czas, zmniejsz liczbę.

Po wprowadzeniu zmian zapisz i wyjdź z nano

CTRL + X

Krok 5: Korzystanie ze skryptu

Korzystanie ze skryptu
Korzystanie ze skryptu

Uruchamianie skryptu lokalnie

Jest kilka sposobów na uruchomienie tego skryptu, możesz połączyć się przez SSH i wpisać:

sudo python /pi-baby-cooler.py

Spowoduje to uruchomienie skryptu na żądanie, będzie to działać tylko tak długo, jak długo będzie aktywna sesja SSH z PI. Innym sposobem jest użycie screena, screen nie jest instalowany domyślnie, nie sądzę, więc trzeba będzie użyć ekranu instalacji sudo apt.

Oto świetny samouczek dotyczący prawidłowego korzystania z ekranu:

Screen lub GNU Screen to multiplekser terminala. Innymi słowy, oznacza to, że możesz uruchomić sesję screen, a następnie otworzyć dowolną liczbę okien (terminali wirtualnych) wewnątrz tej sesji. Procesy uruchomione na ekranie będą nadal działać, gdy ich okno nie będzie widoczne, nawet jeśli zostaniesz rozłączony.

Automatyzacja do uruchomienia przy starcie

Innym sposobem jest edycja pliku startowego w /etc/rc.local, aby to zrobić za pomocą nano.

sudo nano /etc/rc.local

Edytowanie tego pliku spowoduje uruchomienie skryptu przy starcie. co oznacza, że zawsze będzie działał, gdy PI jest włączony, w ten sposób uruchamiam 90% moich skryptów na innych PI.

Jeśli użyłeś rc.local, możesz uruchomić poniższe polecenie, aby sprawdzić, co jest aktualnie uruchomione w PI. Jest to przydatne do późniejszego rozwiązywania problemów, aby sprawdzić, czy skrypt w ogóle działa, czy nie:

ps-aef | grep pyton

Krok 6: Gotowe

Cóż… Dzięki, jeśli nadal tu jesteś i osiągnąłeś ten punkt!

Przepraszam, że minęło dość dużo czasu, to był mój pierwszy instruktaż i nie byłem do końca pewien, co zapisać.

Jak wspomniałem na początku, ta instrukcja ma wiele różnych zastosowań, wykorzystując ciepło do uruchomienia inteligentnej wtyczki! można schłodzić dowolne pomieszczenie w domu/mieszkaniu/mieszkaniu/garażu/szopie. Możesz nawet zmodyfikować IFTTT, aby uruchomić dowolne inteligentne urządzenie, które jest sterowane przez IFTTT, nie muszą to być tylko urządzenia kasa TP-link.

Chciałbym usłyszeć, czy wypróbowałeś te instrukcje, a nawet jeśli uznałeś je za interesujące, zostaw mi komentarz poniżej!

Jeśli masz jakieś pytania, zostaw je poniżej, a ja postaram się na nie odpowiedzieć!

Konkurs czujników
Konkurs czujników
Konkurs czujników
Konkurs czujników

Drugie miejsce w konkursie czujników

Zalecana: