System
Na chwile obecną są dwie opcje:
- Instalacja gotowego obrazu
- Instalacja manualna
Instalacja gotowego obrazu
Jest to chyba najprostsza opcja nie wymagająca zbytniej znajomości systemu Linux.
Najprostszą metodą jest skorzystanie z dedykowanego narzędzia jakim jest Haier Pi Imager. Jest to fork dobrze znanego Raspberry Pi Imager z tym że standardowo dodane są tylko repozytoria z obrazami Haier Pi. Dodana też jest możliwość edycji ustawień wifi z poziomu tego narzędzia. Nie musimy więc martwić się o edycję żadnych plików.
Możemy też ściągnąć jeden z gotowych obrazów, wrzucamy go na kartę SD i odpalamy system. Po uruchomieniu powinniśmy w sieci lokalnej odszukać adresu IP jaki dostał sterownik i wejść przeglądarką na stronę http://adres-ip-sterownika/ od wersji obrazu 1.2 dla Raspberry Pi i 1.5 dla Nano Pi. System po uruchomieniu powinien przedstawiać się w sieci jako haierpi.local. Więc wystarczy wtedy wejść na stronę http://haierpi.local nie trzeba już szukać jaki adres IP dostało urządzenie.
Domyślne dane do logowania: admin/admin
UWAGA
Wstępna konfiguracja zamieszczona na obrazach wymaga podłączonych fizycznych czujników temperatury. W przeciwnym wypadku może dość do zatrzymania części procesów które odpowiedzialne są za komunikację z pompą. Konieczny może wtedy być restart usługi który możemy wykonać z poziomu strony, lub przyciskając przycisk na płytce przez ok 3 sekundy, sterownik poinformuje o restarcie usługi migając czerwoną diodą 3 razy ( Przycisk reset działa tylko na sterowniku z NanoPi Neo, niestety na RaspberryPi przycisk nie działa)
NanoPi Neo
Jeśli zdecydujemy się na NanoPi Neo, do połączenia z siecią mamy do dyspozycji wbudowany port ethernet, a system skonfigurowany tak aby pobierał adres IP z DHCP. Jeśli jednak z jakiegoś powodu chcieli byśmy użyć Wi-Fi, to możemy podłączyć do portu USB kartę Wi-Fi, wymaga to jednak dodatkowej konfiguracji. Standardowo obraz ma włączoną obsługę ethernet, obsługa wi-fi standardowo jest wyłączona.
RaspberryPi zero W
Jeśli zdecydujemy się na płytkę RaspberryPi zero W, to do połączenia z siecią możemy wykorzystać tylko Wi-Fi gdyż raspberryPi nie ma wbudowanego portu ethernet ani zwykłego portu USB do którego w łatwy sposób można by podłączyć kartę ethernet na USB. Być może podłączenie przez przejściówkę OTG microusb-USB będzie działać, ale takiej konfiguracji nie będę tutaj opisywać. i jeśli chcesz skorzystać z sieci podłączając kabel, skorzystaj z NanoPi Neo. Konfiguracja Wi-Fi wygląda identycznie jak w przypadku NanoPi. Standardowo obraz ma włączoną obsługę Wi-Fi i wyłączoną obsługę ethernetu
Konfiguracja Wi-Fi
Opis konfiguracji sieci Wi-Fi jest identyczny zarówno dla NanoPi Neo jak i RaspberryPi zero W.
Jeśli obraz nagrywasz imagerem to od razu w nim możesz skonfigurować sieć.
Gotowe obrazy systemów zostały tak przygotowane aby można było taką konfigurację wykonać zarówno w systemie Linux jak i Windows. Aby skonfigurować system do korzystania z sieci wifi należy:
- Podłączyć kartę SD do komputera
- W systemie powinien pojawić się nowy dysk wymienny o wielkości 128MiB
- Na dysku powinny znajdować się między innymi dwa pliki: dietpi-wifi.txt oraz dietpi.txt
- Otwieramy do edycji plik dietpi.txt i znajdujemy linię
AUTO_SETUP_NET_WIFI_ENABLED=0
i ustawiamy na 1 (jeśli wartość tej zmiennej jest już ustawiona na 1 to nic nie zmieniamy i zamykamy plik)
- Otwieramy plik dietpi-wifi.txt,
#--------------------------------------------------------------- # Entry 0 # - WiFi SSID: required, case sensitive aWIFI_SSID[0]='' # - WiFi key: If no key/open, leave this blank # - In case of WPA-PSK, alternatively enter the 64-digit hexadecimal key returned by wpa_passphrase # - Please replace single quote characters ' in your key with '\''. No other escaping is required. aWIFI_KEY[0]='' # - Key type: NONE (no key/open) | WPA-PSK | WEP | WPA-EAP (then use settings below) aWIFI_KEYMGR[0]='WPA-PSK' # - WPA-EAP options: Only fill if WPA-EAP is set above aWIFI_PROTO[0]='' aWIFI_PAIRWISE[0]='' aWIFI_AUTH_ALG[0]='' aWIFI_EAP[0]='' aWIFI_IDENTITY[0]='' aWIFI_PASSWORD[0]='' aWIFI_PHASE1[0]='' aWIFI_PHASE2[0]='' # - Path to the certificate file, e.g.: /boot/mycert.cer aWIFI_CERT[0]=''
Plik co prawda zawiera więcej linii ale interesują nas tylko te związane z Entry 0, edytujemy więc linie:
- aWIFI_SSID[0]= - w cudzysłowie wpisujemy nazwę naszej sieci. Wielkość liter ma znaczenie.
- aWIFI_KEY[0]= - w cudzysłowie wpisujemy hasło do naszej sieci.
- aWIFI_KEYMGR[0]='WPA-PSK' - tutaj ustawiamy rodzaj szyfrowania, jeśli używamy standardowo WPA2, pozostawiamy tą linię bez zmien
Jeśli masz jakąś niestandardową konfiguracje, np z certyfikatem to musisz wypełnić resztę pól zgodnie ze swoją konfiguracją.
Po zapisaniu zmian w pliku możemy bezpiecznie usunąć kartę SD z systemu i włożyć ją do naszego komputerka. (Pamiętaj żeby w przypadku NanoPi Neo, przed uruchomieniem systemu podłączyć kartę wifi)
Instalacja manualna
Ta opcja przeznaczona jest dla bardziej zaawansowanych użytkowników, nie będę zagłębiał się tutaj w szczegóły dotyczące instalacji i konfiguracji systemu, poruszę tylko kwestie które są bezpośrednio związane z działaniem skryptu.
Zmiany w systemie
Raspberry Pi
Jeśli zdecydujesz się na korzystanie z Raspberry Pi koniecznym jest wyłączenie wbudowanego bluetooth gdyż wykorzystuje on uart sprzętowy który my musimy wykorzystać do komunikacji z pompą. RaspberryPi posiada co prawda drugi uart, ale nie obsługuje on zmian innych parametrów niż prędkość połączenia, a my musimy użyć niestandardowych parametrów połączenia. dlatego w /boot/config.txt powinniśmy dokonać następujących zmian:
dtoverlay=w1-gpio,gpiopin=4 dtoverlay=pi3-disable-bt enable_uart=1
Nano Pi neo 1.4
W przypadku NanoPi Neo musimy na wstępie określić czy będziemy chcieli korzystać z fizycznego czujnika temperatury DS18b20 czy też tylko z czujników z Home Assistant. Jeśli chcemy wykorzystać fizyczny czujnik podłączony do płytki musimy przemapować porty GPIO procesora, gdyż domyślna konfiguracja nie wyprowadza na fizyczne piny portu odpowiedzialnego za komunikację 1-Wire. W tym celu pobieramy przygotowany przeze mnie plik sun8i-h3-w1-gpio.dtbo z sekcji Download. Umieszczamy go w /boot/dtb/overlay/ nadpisując plik który się tam znajduje.
Następnie edytujemy parametry startowe. Przykładowo dla Armbiana jest to: /boot/armbianEnv.txt , dla DietPi będzie to /boot/dietpiEnv.txt a dla innych dystrybucji może być ten plik nazwany inaczej.
W każdym bądź razie edytujemy ten plik i zmieniamy aby wyglądał mniej więcej tak:
consoleargs=console=ttyS0,115200 usbstoragequirks= extraargs=net.ifnames=0 docker_optimizations=off overlay_prefix=sun8i-h3 overlays=usbhost1 usbhost2 uart1 w1-gpio user_overlays=
Instalacja skryptu
Download
Ściągamy z git najnowsze repo master
$ git clone https://github.com/ktostam/HaierPi /opt/haier
Virtual Env
Tworzymy virtual enva dla Pythona3
$ python3 -m venv /opt/haier/env
jeśli w tym momencie napotkamy na błąd że nie mamy zainstalowanego pythona czy też venv, to musimy je zainstalować w systemie. Jesli uda się stworzyć env, przechodzimy do następnego kroku
zależności
Teraz musimy zainstalować wszystkie zależności dla Pythona, aby to zrobić „wchodzimy” najpierw do naszego enva:
# source /opt/haier/env/bin/activate
A następnie instalujemy zależności:
# pip install —upgrade -r /opt/haier/requirements.txt
config.txt
Edytujemy plik /opt/haier/config.txt i ustawiamy odpowiadające nam parametry. W pliku konfiugrujemy między innymi jakich czujników temperatury używamy (podpiętych fizycznie czy z HA) oraz na których portach GPIO podpięte są poszczególne przekaźniki.
systemd
jeśli chcemy odpalać nasz skrypt jako daemona systemd to zawartość katalogu /opt/haier/etc/systemd/system/ kopiujemy do /etc/systemd/system i robimy:
# systemctl deamon-reload
a jeśli chcemy aby daemon startował automatycznie przy starcie systemu to:
# systemctl enable haier.service
Po instalacji
Domyślnie po uruchomieniu, skrypt słucha na porcie 4000, ale można to zmienić w /opt/haier/config.ini
domyślne dane logowania do panelu to: admin/admin