# Voldeno Studio - Bloki abstrakcyjne i implementacje
Niektóre urządzenia robią to samo, a różnią się tylko sposobem komunikacji. Każdy klimatyzator ma zasilanie, tryb pracy, temperaturę docelową i prędkość wentylatora, ale jeden przyjmuje polecenia przez HTTP w sieci lokalnej, inny przez Modbus, a jeszcze inny wyłącznie przez podczerwień. Voldeno rozdziela te dwie rzeczy na dwa bloki:
- Blok abstrakcyjny zawiera logikę wspólną dla wszystkich urządzeń danego rodzaju. Ma wejścia i wyjścia, łączysz go z resztą programu jak każdy inny blok.
- Blok implementacji zna jedno konkretne urządzenie lub rodzinę urządzeń i potrafi się z nim porozumieć. Nie ma własnych wejść ani wyjść - działa wyłącznie podłączony do bloku abstrakcyjnego.
Dzięki temu program automatyki nie zależy od marki urządzenia. Wymiana klimatyzatora na inny model oznacza podmianę bloku implementacji, a połączenia, harmonogramy i widżety w aplikacji mobilnej pozostają bez zmian.
# Jak to działa
┌──────────────────────────────┐
Termostat ───────▶│ Klimatyzator │──────▶ Wizualizacja
Harmonogram ──────▶│ (blok abstrakcyjny) │──────▶ Alarm awarii
│ wejścia, wyjścia, logika │
└──────────────┬───────────────┘
polecenia │ ▲ odczyty
▼ │
┌──────────────────────────────┐
│ Daikin BRP069 │◀─────▶ Klimatyzator
│ (blok implementacji) │ LAN w sieci lokalnej
└──────────────────────────────┘
- Blok abstrakcyjny odbiera sygnały z wejść, pilnuje skonfigurowanych limitów i decyduje, kiedy wysłać polecenie do urządzenia, a kiedy odczytać jego stan.
- Samą komunikację zleca podłączonemu blokowi implementacji, który tłumaczy polecenie na protokół urządzenia.
- Gdy urządzenie odpowie, implementacja przekazuje odczyty z powrotem, a blok abstrakcyjny publikuje je na swoich wyjściach.
Oba bloki działają lokalnie w Hubie. Komunikacja z urządzeniem nie wymaga chmury producenta ani dostępu do internetu - wystarczy, że Hub widzi urządzenie w sieci lokalnej.
# Podłączanie implementacji w Voldeno Studio
- Dodaj blok abstrakcyjny do programu w edytorze logiki, tak jak każdy inny blok, na przykład Klimatyzator. Bloki abstrakcyjne rozpoznasz po fioletowej plakietce A w nagłówku.
- Pod blokiem abstrakcyjnym pojawi się gniazdo implementacji oznaczone znakiem +. Kliknij je (podpowiedź: „Podłącz blok implementacji").
- Otworzy się lista bloków zawężona do implementacji pasujących do tego bloku. Wybierz tę, która odpowiada Twojemu urządzeniu.
- Blok implementacji zostanie umieszczony bezpośrednio pod blokiem abstrakcyjnym i połączony z nim, a gniazdo zniknie. Zaznacz blok implementacji - w panelu bocznym, w sekcji konfiguracji, uzupełnij jego ustawienia, na przykład pole Adres z adresem urządzenia w sieci.
- Zainstaluj program w Hubie.
Kilka zasad, o których warto pamiętać:
- Do jednego bloku abstrakcyjnego podłączasz jedną implementację. Gniazdo znika po podłączeniu i wraca, gdy implementację usuniesz.
- Implementacja nie istnieje bez swojego bloku abstrakcyjnego. Nie da się jej umieścić na płótnie jako osobnego bloku - najpierw dodaj blok abstrakcyjny, który ona implementuje, i podłącz ją przez jego gniazdo. W wyszukiwarce bloków implementacja jest widoczna, ale jej bezpośrednie dodanie nie jest możliwe.
- Implementacja podąża za swoim blokiem. Przesuwa się razem z nim na płótnie, a usunięcie bloku abstrakcyjnego usuwa również podłączoną implementację.
- Zmiana urządzenia to zmiana implementacji. Usuń dotychczasowy blok implementacji i przez gniazdo podłącz nowy. Połączenia bloku abstrakcyjnego z resztą programu pozostają nietknięte.
# Gdzie jest która konfiguracja
Każdy z dwóch bloków ma własną konfigurację i nie widzi konfiguracji drugiego.
| Blok | Co konfigurujesz | Przykład dla klimatyzatora |
|---|---|---|
| Abstrakcyjny | zachowanie niezależne od urządzenia | zakres temperatury docelowej, interwał odświeżania stanu |
| Implementacji | sposób dotarcia do konkretnego urządzenia | adres adaptera Wi-Fi w sieci lokalnej |
Jeśli zastanawiasz się, gdzie szukać danego ustawienia, zadaj sobie pytanie, czy zmieniłoby się ono po wymianie urządzenia na inną markę. Jeśli tak, należy do implementacji.
# Co widać w aplikacji mobilnej
To blok abstrakcyjny określa, jak urządzenie wygląda w aplikacji Voldeno Mobile. Gdy udostępnisz go w aplikacji, jego wejścia stają się elementami sterowania - na przykład zasilanie, tryb pracy czy temperatura docelowa - a wyjścia odczytami, takimi jak temperatura w pomieszczeniu czy informacja o awarii. Blok implementacji nie ma wejść ani wyjść, więc w aplikacji w ogóle się nie pojawia.
Przykładem jest blok Klimatyzator (vldn/air_conditioner). Aplikacja rozpoznaje go i pokazuje dla niego osobny ekran: na górze temperaturę w pomieszczeniu (wyjście room_temp), pod nią włącznik (power) i temperaturę docelową (target_temp). Zakres, w jakim użytkownik może ustawić temperaturę, pochodzi z konfiguracji bloku abstrakcyjnego (min_target_temp i max_target_temp). Tryb pracy (mode), prędkość wentylatora (fan_speed) i ustawienie żaluzji (swing_v, swing_h) wybiera się na osobnych ekranach, a dostępne opcje odpowiadają wartościom wejść opisanym w bloku.
Dzięki temu wszystkie urządzenia danego rodzaju wyglądają w aplikacji tak samo, niezależnie od marki, a wymiana implementacji nie zmienia niczego w tym, co widzi i czym steruje użytkownik.
# Stan urządzenia i awarie
Blok abstrakcyjny publikuje na wyjściach to, co faktycznie zgłasza urządzenie, o ile implementacja potrafi ten stan odczytać. Dzięki temu zmiana wprowadzona z pilota producenta pojawi się w Voldeno po najbliższym odświeżeniu. Wartości, których urządzenie nie raportuje, blok abstrakcyjny publikuje w takiej postaci, w jakiej je zadał.
Problemy z komunikacją trafiają na wyjście awarii bloku abstrakcyjnego, więc możesz je obsłużyć w programie, na przykład wysłać powiadomienie. Znaczenie kodów opisuje dokumentacja konkretnego bloku i jego implementacji.
Blok abstrakcyjny bez podłączonej implementacji można zainstalować, ale nie wyśle on niczego do urządzenia - jego wyjścia pokażą jedynie wartości zadane na wejściach. Przed instalacją upewnij się, że gniazdo każdego bloku abstrakcyjnego jest zajęte.
implementacje sieciowe łączą się z urządzeniem pod skonfigurowanym adresem. Zarezerwuj ten adres dla urządzenia w routerze (rezerwacja DHCP), aby nie zmienił się po jego restarcie.
# Dostępne bloki abstrakcyjne
Aktualną listę bloków abstrakcyjnych wraz z ich implementacjami znajdziesz w przeglądzie bloków logicznych, w sekcji Bloki abstrakcyjne. Implementacje danego bloku są też wymienione w jego dokumentacji, w sekcji „Bloki implementujące".
# Co dalej
- Bloki logiczne - przegląd - wszystkie bloki dostępne w Voldeno
- Definiowanie logiki w Voldeno Studio - podstawy pracy z edytorem logiki