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.


sobota, 26 maja 2018

Pi1541, czyli emulator stacji dysków 1541 na Raspberry Pi do Commodore 64

Pi1541 jest to emulator stacji dysków na Raspberry Pi do Commodore 64.

Obsługuje wszystkie loadery i pozwala na uruchomienie wszystkich gier i dem, jest pełnym emulatorem stacji dysków Commodore 64, zawiera ROM realnej stacji dysków.

Obecnie działa na Raspberry Pi 3B.

Do budowy wykorzystałem obudowę do Raspberry Pi 3, efekt końcowy.



Z obudowy wypuszczony jest krótki odcinek przewodu z wtyczką 6 DIN.



Użyłem następujących komponentów:

1. Konwerter poziomu napięć 3.3V - 5V
2. Gniazdo żeńskie goldpin 2x20 pin
3. Wtyk DIN 6pin
4. 4 przyciski tact switch
5. Zielona dioda led
6. Rezystor 100 ohm
7. Mały buzzer
8. Przewody
9. Płytka uniwersalna

Schemat Pi1541.


Zmontowany interfejs.



Od spodu zamontowany jest mały buzzer.



Do uruchomienia wymagany jest ROM stacji dysków 1541, romy można znaleźć w folderze DRIVES w emulatorze Vice, wszystkie romy stacji dysków Commodore są do pobrania tu -> Link

Kartę SD do Raspberry Pi należy sformatować na FAT32.

Na kartę SD do głównego folderu kopiujemy pliki: bootcode.bin, fixup.dat i start.elf -> do pobrania tu -> Link

Na kartę SD rozpakowujemy pliki z PI1541.zip -> Link

Do głównego folderu kopiujemy jeden z plików ROM stacji dysków, może to być: dos1541 lub d1541II

Zawartość karty SD powinna wyglądać jak niżej.


Gotowa do skopiowania cała zawartość wszystkich plików potrzebnych do uruchomienia Pi1541 jest do pobrania tu -> Link

Pliki wystarczy wypakować i skopiować na kartę SD do głównego folderu.

Po skopiowaniu plików na kartę SD do folderu 1541 kopiujemy obrazy dyskietek, programy, gry dema itd..

Po włożeniu karty SD do Raspberry Pi, podłączeniu przewodu HDMI i zasilania ukaże się widok emulatora Pi1541.



W menu poruszamy się za pomocą przycisków Select, Up. Down i Exit.

Select - wybór pliku lub folderu
Up - góra
Down - dól
Exit - wyjście



Po wybraniu obrazu dyskietki d64 mamy:



W Commodore 64 wydajemy standardowe komendy, takie jak dla stacji dysków:

LOAD"$",8 - załadowanie listy plików
LIST - wyświetlenie listy plików
LOAD"nazwa_programu",8 - załadowanie programu
RUN - uruchomienie programu



Nie trzeba jednak podłączać dodatkowego telewizora i można obsługiwac jak standardową stację dysków i użyć programu FB64 do poruszania się po zawartości kary SD.

Po uruchomieniu wystarczy wpisać:

LOAD"FB64",8

i

RUN



Uruchomi się program CBM-Browser i poruszamy się w nim na Commodore 64.



Na karcie SD znajduje się plik options.txt, gdzie możemy zmieniać opcje emulatora, usuwamy // sprzed opcji.

deviceID = 9 - możemy zmienić numer napędu na 9

ROM2 = Jiffy.bin
ROM3 = d1541II - możemy załadować inne ROM-y stacji dyskietek

OnResetChangeToStartingFolder - opcja ustawiona na 1 - z każdym resetem Commodore 64 będzie następował powrót do głównego folderu 1541.

SoundOnGPIO = 1 - używanie buzzera.

SplitIECLines i InvertIECInputs - opcje dla innego schematu Pi1541.

sobota, 7 kwietnia 2018

Combian 64 - emulator Commodore 64

Combian 64 jest to pełny emulator Commodore 64 na Raspberry Pi.

Do uruchomienia będzie nam potrzebne oprócz Raspberry Pi:
1. Klawiatura USB
2. Joystick USB
3. Pendrive

Combian 64 obecnie działa na Raspberry Pi wersjach Zero, 2 i 3, nie działa na najnowszym Raspberry Pi 3 B+.

W domyślnej konfiguracji emulator emuluje Commodore 64, ale możemy emulować inne wersje Commodore.

Wciskając klawisz "F8" i wpisując komendę "menu", mamy dostęp do wewnętrznego menu Combian 64, gdzie możemy zmienić domyślny emulator uruchamiany przy starcie, możemy uruchomić polecenie "raspi-config", zrestartować Raspberry Pi, zamknąć i ponownie uruchomić emulator.

Obraz Combian 64 jest dostępny do pobrania tu -> Link

Najnowsza wersja na dzień dzisiejszy to wersja 2.7.

Po ściągnięciu archiwum rar, rozpakowujemy je i dostępny plik obrazu Combian2.7.img wgrywamy na kartę SD programem Win 32 Disk Imager -> Link

Po wybraniu ścieżki z obrazem, klikamy -> Zapisz.


Po wgraniu obrazu, powinien pojawić się komunikat: Zapis pomyślny, klikamy OK i wkładamy kartę SD do Raspberry Pi.

Podłączamy Raspberry Pi z podłączoną klawiaturą do telewizora i powinno się pojawić menu Commodore 64.


Wciskamy klawisz F8 na klawiaturze, pokaże się.

Strzałkami kierunkowymi na klawiaturze wybieramy -> Quit emulator i wciskamy Enter.

Pokaże się menu.

Wciskamy 1 na klawiaturze i wybieramy RASPI-CONFIG

Mamy menu znane z Raspbiana.

Rozszerzamy sobie rozmiar dostępnej pamięci z karty SD w Expand Filesystem.
Zmieniamy język na polski lub angielski w Internatolisation Options, bo domyślnie ustawiony jest język włoski.




Na końcu robimy restart.

Po restarcie podłączamy Joystick do portu USB i konfigurujemy go.
Wciskamy F8 na klawiaturze i wchodzimy w menu VICE.
Poruszamy się w nim strzałkami, cofamy się strzałką w lewo, a zatwierdzamy klawiszem Enter.

Wchodzimy w Machine settings.


Następnie w Joystick settings.


Wybieramy Joystick device 1


Teraz klawiszem Enter wybieramy Joystick i cofamy się.


Teraz przypisujemy kierunki i przycisk Joysticka w Joystick 1 mapping.


Wciskając Enter na klawiaturze po wciśnięciu kolejno na joysticku góra, dól, lewo, prawo i fire zatwierdzamy kolejno przypisane kierunki i przycisk fire.


Teraz zapisujemy ustawienia, wchodzimy w Settings management.


Teraz zapisujemy przypisane kierunki w Save joystick map.


Zapisane OK.


Zapisujemy również wszystkie ustawienia w Save current settings.


Zapisane poprawnie.


Wychodzimy w Quit emulator.


Combian 64 obsługuje gry i programy w plikach z rozszerzeniem d64, możemy sobie je pobrać stąd -> Link

Po ściągnięciu rozpakowujemy i pliki z rozszerzeniem d64 kopiujemy na pendrive i wkładamy do portu usb w Raspberry Pi.

W Combian 64 menu options wybieramy X-COPY


Pliki z pendrive skopiują się na kartę SD.


Uruchamiamy emulator w RUN EMULATOR


Wciskamy F8 i wybieramy Autostart image.


Wchodzimy w games.


Wybieramy skopiowaną wcześniej grę i wciskamy Enter.


Gra zacznie się uruchamiać.


Uruchomiona przykładowa gra.


Film z przykładowej gry na Combian 64.