piątek, 1 lutego 2019

Budowa czujnika smogu Luftdaten

Dzisiaj opiszę budowę czujnika jakości powietrza Luftdaten.

Do budowy będziemy potrzebowali:

- dwa kolanka PCV 75 mm - koszt w Leroy Merlin około 12 zł
- Moduł WIFI ESP8266 NODEmcu V3 - koszt na Allegro około 30 zł
- czujnik jakości powietrza SDS011 - koszt na Aliexpress 70 zł
- czujnik BME280 - koszt na Allegro około 30 zł
- wężyk silikonowy 8/6 - koszt na Allegro około 13 zł z przesyłką
- kabel micro USB płaski 3 m - koszt na Allegro około 8 zł



Będą nam jeszcze potrzebne przewody na wtyczkami na goldpin, opaski tzw. tytyrytki, kawałek siatki, może być np. z opakowania po owocach lub cebuli :)

Schemat podłączenia czujników do NodeEMCU.


Proponuję wykorzystanie czujnika BME280, ponieważ jest bardziej dokładny i dodatkowo pokazuje ciśnienie atmosferyczne, po za temperaturą i wilgotnością.

Obecnie przy zastosowaniu czujnika DHT 22 są błędne wskazania wilgotności, pokazuje 1% lub 99%.

Łączymy wszystko zgodnie ze schematem, zmontowany układ pokazano niżej.


Do budowy wykorzystałem Nodemcu V3 na układzie CH340, jest to tańsza wersja i nie sprawia problemów.

Najpierw instalujemy sterowniki CH340 do pobrania tu -> Link

Po instalacji sterowników podłączamy Nodemcu do komputera przewodem USB.

Do instalacji oprogramowania Luftdaten pobieramy program Luftdaten Tool -> Link

Po uruchomieniu programu powinno wykryć podłączony moduł Nodemcu.


Teraz wybieramy wersję oprogramowania latest_pl.bin.


Klikamy wgraj.


Po wgraniu na dole powinno być widoczne ID sensora.

Teraz będzie nam potrzebny tablet lub telefon z włączonym wifi.

Zamykamy program Luftdaten Tool i wyciągamy i wkładamy wtyczkę USB.

Włączamy wifi na telefonie lub tablecie i powinno znaleźć sieć Feinstaubsensor-ID, gdzie ID, to będzie ID sensora.


Łączymy się z tą siecią i otwieramy adres 192.16.4.1 w przeglądarce.

Otworzy się strona z konfiguracją.


Wybieramy naszą sieć wifi i wpisujemy hasło do sieci wifi i wybieramy Zapisz i zrestartuj.

Po restarcie moduł Nodemcu powinien połączyć się z domową siecią wifi, teraz należy znaleźć adres ip czujnika w domowej sieci wifi.

Możemy posłużyć się aplikacją Fing w sklepie Play -> Link

W aplikacji Fing moduł powinien mieć nazwę Esspresiff, odczytujemy jego IP i wpisujemy w przeglądarkę.


Klikamy konfiguracja i zaznaczamy czujniki SDS011 i BME280.


Klikamy Zapisz i zrestartuj.

Po ponownym otwarciu adresu IP czujnika w przeglądarce możemy zobaczyć odczyty w Obecne wskazania.

Teraz wszystko jest gotowe do przesyłania danych na mapy Luftdaten, musimy jeszcze wysłać nasze dane do serwisu Luftdaten, aby były widoczne na mapach Luftdaten.

Wchodzimy na koniec strony -> Link

Wpisujemy kolejno:

Chip ID - ID naszego czujnika
Email
Ulicę i numer
Kod pocztowy i miasto.
Państwo
Wysokość, na jakiej zamontowany został czujnik.
Informacja na temat oddalenia od drogi.
Otoczenie miejsca instalacji - typ okolicznej zabudowy, natężenie ruchu,
informację, czy jest to teren otwarty

Klikamy Senden.

Obecnie czas oczekiwania na zarejestrowanie czujnika i dodanie do map, to około miesiąc czasu.

Wcześniej dane możemy odczytać na mapach Opensensemap -> Link

Rejestrujemy się na stronie, po zalogowaniu klikamy Dashboard i klikamy Newsensebox.

Wpisujemy nasz dane i wybieramy lokalizację czujnika na mapie.


Dalej wybieramy:
Luftdaten.info Feinstaubsensor (SDS011) mit BME280

Wybieramy Next i Finish.

Zamykamy i już powinno być dodane na mapie.

Kopiujemy sensebox Id.


Otwieramy stronę konfiguracyjną czujnika Luftdaten, zaznaczamy Wysyłaj dane do OpenSenseMap i wklejamy senseBox-ID, na końcu zapisz i zrestartuj.


Teraz nasz dane powinny być już przesyłane na mapy Opensensemap.

Przystępujemy do montażu czujnika.

W specyfikacji czujnika SDS011 napisali, aby montować go w takich pozycjach.


Montujemy SDS011 w kolanku, ja ustawiłem pionowo wentylatorem do góry.


Nodemcu montujemy, tak aby było ustawione w poziomie, wtykiem skierowanym w stronę SDS011, tak aby antenka była z drugiej strony.


Opaską zaciskową montujemy BME280 do wężyka gdzieś w połowie długości.


Zakładamy siatki, i docinamy wężyk tak, aby trochę wystawał z siatki.


Teraz pozostaje zamontować całość na zewnątrz i czekać na rejestrację czujnika w Luftdaten, wtedy będzie widoczny w aplikacji Kanarek na Android.

Czy czujnik został dodany można sprawdzić na stronie -> Link wyszukując ID swojego czujnika.







wtorek, 26 czerwca 2018

Google Home Mini i sterowanie urządzeniami w Domoticz

Ostatnim moim zakupem był zakup asystenta głosowego Google Home Mini.

Koszt zakupu obecnie nie jest zbyt wielki, za Google Home Mini zapłaciłem razem z przesyłką 190 zł.

Jest cena porównywalna, do tego gdybyśmy mieli sami budować Google Assitant na Raspberry Pi 3, trochę taniej wyszłaby cena na Pi Zero.

Urządzenie jest dosyć małych rozmiarów i dosyć porządnie wykonane.



Instalacja jest dosyć prosta, po zainstalowaniu aplikacji Google Home na telefonie lub tablecie, prowadzi nas krok po kroku po polsku.

Ciekawostką jest, to że po instalacji w urządzeniach widnieje mój wcześniej wykonany Google Assistant na Raspberry Pi 3.



Wykrywany jest jako Voice Kit i to co dodamy na Google Home jest tak samo dodawane na Voice Kit i obsługuje urządzenia dodane w Google Home.

Aby dodawać urządzenia z Domoticz do sterowania komendami z asystenta głosowego musimy posiadać stałe IP lub skonfigurować i dodać serwer DDNS.

Jednym z najpopularniejszych i darmowych serwerów DDNS jest no-ip.org -> Link

Zakładamy tam konto i logujemy się, w zakładce Dynamic DNS klikamy Create Host Name, wpisujemy nazwę i wybieramy Create Host Name.


Teraz instalujemy NOIP na Raspberry Pi, w terminalu wpisujemy:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

Rozpakowujemy pakiet poleceniem:

tar vzxf noip-duc-linux.tar.gz && rm noip-duc-linux.tar.gz



Jak widać pliki wypakowało do folderu: noip-2.1.9-1

Folder ten może różnić zależnie od wersji programu.

Wchodzimy do folderu noip-2.1.9-1

cd noip-2.1.9-1

Teraz wpisujemy:

sudo make

następnie:

sudo make install

Wpisujemy login i hasło do serwisu NOIP , wpisujemy czas w sekundach, co ile ma się aktualizować adres ip, ja wpisałem 300 czyli 5 minut.

Uruchamiamy noip

sudo /usr/local/bin/noip2

Tworzymy plik konfiguracyjny noip:

sudo nano /etc/init.d/noip

Wklejamy tam zawartość:

#! /bin/sh
# /etc/init.d/noip

### BEGIN INIT INFO
# Provides: noip
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
### END INIT INFO

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting noip"
# run application you want to start
/usr/local/bin/noip2
;;
stop)
echo "Stopping noip"
# kill application you want to stop
killall noip2
;;
*)
echo "Usage: /etc/init.d/noip {start|stop}"
exit 1
;;
esac

exit 0

Wciskamy Ctrl+x i T aby zapisać plik.

Nadajemy uprawnienia:

sudo chmod 755 /etc/init.d/noip

i na końcu:

sudo update-rc.d noip defaults

Teraz Raspberry Pi będzie aktualizować nasz adres i będzie on dostępny pod adresem jaki założyliśmy w serwisie noip.

Teraz w routerze otwieramy porty 443 i 80, jest zależne od rodzaju routera.

W Domoticz musimy odczytać numer idx urządzenia które chcemy włączać i wyłączać komenda głosową.

Mój numer idx to 225 i jest to gniazdko sterowane poprzez RFLink.

Gniazdkami będziemy sterować komendami json np.:

włączenie:

https://Login:hasło@adresnoip:443/json.htm?type=command¶m=switchlight&idx=idx&switchcmd=On

wyłączenie:

https://Login:hasło@adresnoip:443/json.htm?type=command¶m=switchlight&idx=idx&switchcmd=Off

W adresie tym w miejsce Login - wpisujemy nasz login do Domoticz, hasło - hasło do Domoticz, a w miejsce idx wpisujemy numer idx urządzenia.

Czyli np.:

https://Edek:edkahaslo12@adresnoip:443/json.htm?type=command¶m=switchlight&idx=225&switchcmd=On

Po wpisaniu tych komend w przeglądarkę internetową urządzenie powinno się włączać i wyłączać.

Ważne, aby w domowym routerze był otwarty i przekierowany port 443 na lokalny adres Raspberry Pi.

Teraz zakładamy konto na IFTTT -> Link

Wchodzimy w My Applets i klikamy New Applet

Klikamy w +this



Wpisujemy google i wybieramy Google Assistant



Teraz klikamy


Teraz w pierwszym i przedostatnim okienku wpisujemy po angielsku, co będziemy mówić, a co odpowie asystent Google.



Klikamy Create Trigger.

Teraz klikamy +that.



Wpisujemy web i wybieramy Webhooks


Teraz


Teraz wpisujemy w URL naszą komendę json, w Conetent Type wybieramy text/plain i klikamy Create action.



Na końcu klikamy Finish.

Ja mam podłączone gniazdko do przelewowego expresu z kawą i po nalaniu wody i wsypaniu kawy włączam expres.

Zdefiniowałem sobie komendę "Make me coffee" o wtedy gniazdko się włącza.

Po wypowiedzeniu komendy "Stop make coffee", gniazdko się wyłącza

Tak możemy dodawać włączanie i wyłączanie dowolnych urządzeń w Domoticz.

Działanie widać na poniższym filmie.







poniedziałek, 18 czerwca 2018

Instalacja Google Assistant na Rasberry Pi 3 i Zero

Od moich ostatnich wpisów o Google Assistant na Rasberry Pi upłynęło już trochę czasu.

Dzisiaj opiszę jak zainstalować Google Assistant na Rasberry Pi Zero i Pi 3 na Raspbianie Stretch z dnia 18 kwietnia 2018.

Do budowy będą potrzebne:

1. Rasberry Pi Zero W lub Pi 3 z kartą micro SD
2. Karta dźwiękowa USB
3. Mikrofon z wtykiem mały jack
4. Układ wzmacniacza PAM8403 z małym głośnikiem
5. Wtyk mały jack stereo z przewodem
6. Zasilacz do Rasberry Pi
7. Przejściówka wtyk micro USB - gniazdo USB



Schemat podłączenia.


Wyjścia Rasberry Pi Zero.


Na czas konfiguracji będą jeszcze potrzebne klawiatura, myszka USB, przewód HDMI.

Obraz systemu pobieramy z tej strony -> Link

Po pobraniu rozpakowujemy go i będziemy mieć obraz systemu: 2018-04-18-raspbian-stretch.img

Wgrywamy go na kartę programem Win32 Disk Imager, który jest dostępny pod tym linkiem -> Link

Po uruchomieniu Win32 Disk Imager w Plik obrazu wybieramy pobrany obraz 2018-04-18-raspbian-stretch.img


Klikamy Zapisz.


Wybieramy Yes i rozpocznie się zapis obrazu na kartę SD.


Po zakończeniu zapisu powinien wyświetlić się Zapis pomyślny, klikamy OK i wkładamy kartę SD do Raspberry Pi.

Podłączamy Raspberry Pi do telewizora lub monitora przewodem HDMI, podłączamy myszkę i klawiaturę na USB, kartę dźwiękową USB i na końcu zasilanie.

Uruchomi się Raspbian Stretch.

Pierwszą rzeczą jaką zrobimy, to połączmy się po Wifi z domową siecią.

U góry po prawej stronie znajduje się ikonka połączeń sieciowych, klikamy Turn On Wi-Fi, aby włączyć Wifi w Raspberry Pi.

Powinno wykryć naszą domową sieć Wifi, wpisujemy hasło i powinniśmy mieć połączenie z Wifi.


Możemy ustawić ustawienia regionalne jak język, klawiatura itd... w Raspberry Pi Configuration


Dokonujemy aktualizację systemu, otwieramy terminal.


Wpisujemy:

sudo apt-get update

oraz

sudo apt-get upgrade

restartujemy Raspberry Pi poleceniem:

sudo reboot

Gdy mamy już zaktualizowany system, możemy przystąpić do instalacji Google Assistant.

Jest to opisane po angielsku na stronie -> Link

Najpierw kopiujemy pliki ze strony, która podałem wcześniej, w terminalu wpisujemy:

sudo apt-get install git
git clone https://github.com/shivasiddharth/GassistPi

Ustawiamy odpowiednia kartę dźwiękową, klikamy w ikonkę głośnika u góry po prawej prawym klawiszem myszy i zaznaczamy elementy sterujące dla odtwarzania i nagrywania.


Instalujemy obsługę karty dźwiękowej USB i robimy test:

sudo chmod +x /home/pi/GassistPi/audio-drivers/USB-DAC/scripts/install-usb-dac.sh
sudo /home/pi/GassistPi/audio-drivers/USB-DAC/scripts/install-usb-dac.sh
speaker-test

Jeżeli wszystko przebiegnie dobrze to będziemy słyszeć szum z głośnika.

Teraz otwieramy przeglądarkę internetową, wpisujemy adres www.google.pl i logujemy się do naszego konta google


Następnie wpisujemy adres w przeglądarce:

https://console.actions.google.com/?pli=1



Klikamy Add/import project

Zmieniamy kraj na Polskę, wpisujemy nazwę i klikamy Create project


Wybieramy Device registration


Teraz otwieramy stronę:

https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview

Klikamy Włącz


Teraz otwieramy stronę:

https://myaccount.google.com/activitycontrols

Włączamy wszystkie opcje


Teraz otwieramy:

https://console.actions.google.com/

Wybieramy nasz projekt, przechodzimy do Advanced Options i klikamy Device registration


Klikamy Register Model


Wpisujemy nazwę dowolną i wybieramy rodzaj dowolny.


Teraz klikamy Download.


Klikamy Next i dalej Skip.

Teraz otwieramy terminal i wpisujemy:

scp ~/Downloads/credentials.json pi@raspberry-pi-ip-address:/home/pi/

gdzie: raspberry-pi-ip-address jest adres ip raspberry pi

U mnie będzie to:

scp ~/Downloads/credentials.json pi@192.168.3.14:/home/pi/



Wpisujemy: yes


Następnie wpisujemy hasło do Raspberry Pi


Teraz w terminalu wpisujemy:

Dla Raspberry Pi 3:
sudo chmod +x /home/pi/GassistPi/scripts/gassist-installer-pi3.sh
sudo /home/pi/GassistPi/scripts/gassist-installer-pi3.sh

Dla Raspberry Pi Zero:
sudo chmod +x /home/pi/GassistPi/scripts/gassist-installer-pi-zero.sh
sudo /home/pi/GassistPi/scripts/gassist-installer-pi-zero.sh

Wpisujemy pełną nazwę pliku json i ścieżkę: /home/pi/credentials.json

Dalej nazwę naszego projektu i Id model, jest to widoczne po wybraniu naszego wcześniej utworzonego projektu na stronie:

https://console.actions.google.com/

Klikamy w nasz projekt i w menu po lewej Device registration


Po wybraniu projektu mamy nazwę i Id model


Jak widać u mnie nazwa to Voice i model id: voice-166811-voice-pws8rb


Instalacja trochę potrwa i na końcu instalacji wyświetli się adres strony internetowej https:// , kopiujemy do przegladarki

Wybieramy nasze konto Google i klikamy Zezwól, wyświetli się kod, kopiujemy go do terminala i wciskamy Enter.

Na końcu powinien uruchomić się asystent

U mnie pojawił się błąd i było wymagane skopiowanie danych z Spotify.

Możemy przeprowadzić test działania wpisując w terminalu:

/home/pi/env/bin/python -u /home/pi/GassistPi/src/main.py --device_model_id 'model id"

gdzie w miejsce 'model id' wpisujemy Id model

czyli u mnie to będzie:

/home/pi/env/bin/python -u /home/pi/GassistPi/src/main.py --device_model_id voice-166811-voice-pws8rb

Po pojawieniu się błędu logujemy się na stronie Spotify -> Link

Jeżeli nie mamy konta na Spotify, to zakładamy go.

Po zalogowaniu klikamy CREATE A CLIENT ID , wpisujemy nazwę i wybieramy np. Voice, wybieramy NO, zaznaczamy wszystkie ptaszki i klikamy SUBMIT.

Na stronie będą: Client ID i Client Secret, dane te oraz login kopiujemy do pliku config.yaml w katalogu /home/pi/GassistPi/src

Wpisujemy je w miejsce:

#Spotify credentials. Register for a spotify developer and get the credentials.
Spotify:
client_id: 'ENTER YOUR SPOTIFY CLIENT ID HERE'
client_secret: 'ENTER YOUR SPOTIFY CLIENT SECRET HERE'
username: 'ENTER YOUR SPOTIFY USERNAME HERE'

Po zapisaniu pliku test przebiegł pomyślnie.

Teraz konfigurujemy, aby Assistant uruchamiał się przy starcie.

W terminalu wpisujemy kolejno:

sudo chmod +x /home/pi/GassistPi/scripts/service-installer.sh
sudo /home/pi/GassistPi/scripts/service-installer.sh
sudo systemctl enable gassistpi-ok-google.service
sudo systemctl start gassistpi-ok-google.service

Po restarcie Google Assistant powinien uruchomić się automatycznie.

Działanie pokazano na filmie.



Można jeszcze dodać diody led na piny GPIO 5 i 6, informują one kiedy możemy mówić, a kiedy mówi Google Assistant, widać to na poniższym filmie.