Spis treści

System

Na chwile obecną są dwie opcje:

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:

  1. Podłączyć kartę SD do komputera
  2. W systemie powinien pojawić się nowy dysk wymienny o wielkości 128MiB
  3. Na dysku powinny znajdować się między innymi dwa pliki: dietpi-wifi.txt oraz dietpi.txt
  4. 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)

  5. 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:

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