Integracje IP
Spis treści
Obrazy serwera[edytuj]
Aktualnie rozwijana wersja serwera dostępna jest w Strefie Instalatora. Konieczną czynnością przed zaczęciem korzystania ze wszystkich dobrodziejstw jest pobranie aktualnych zmian.
Zanim zaczniemy zabawę koniecznie wykonujemy BACKUP bazy danych z poziomu SmartHomeMenagera
Najpierw należy pobrać obraz, następnie przy wyłączonym zasilaniu serwera oraz jego wyjść wypinamy złączki i ściągamy moduł z szyny TH. Kolejnym krokiem jest odkręcenie 4 śrub znajdujących się z tyłu obudowy. Otwieramy obudowę (metoda siłowa jest niewskazana) i delikatnie wysuwamy kartę microSD. Mając wymontowaną kartę SD wypalamy na niej wcześniej pobrany obraz. Proponuję posłużyć się programem Rufus gdyż po uruchomieniu i wsunięciu karty SD do czytnika, zostanie ona automatycznie wykryta. Po poprawnym wypaleniu obrazu, składamy wszystko w odwrotnej kolejności.
"Piotrek napisał: logując się po SSH wystarczy wpisać: npm install --prefix /home/openhabian/.node-red node-red-contrib-ampio@0.2.0
Zamiast 0.2.0 na końcu należy podać najnowszą wersję.
Lista wersji jest tu: https://www.npmjs.com/package/node-red-contrib-ampio Numer aktualnie zainstalowanej wersji można sprawdzić w Manage palette w Node-Redzie."
Alternatywna opcja: Połącz się przez SSH z serwerem Ampio i wywołać:
bash <(curl -s http://update.ampio.pl/mqtt/update_mqtt.sh)
OpenHAB[edytuj]
OpenHAB jest otwartą platformą automatyki domowej umożliwiającą sterowanie inteligentnym domem za pomocą przejrzystych interfejsów użytkownika.
Aby rozpocząć należy pobrać obraz tutaj,
a następnie wgrać go na kartę SD. Instrukcja wgrywania obrazu dostępna jest w Strefie Instalatora Ampio.
Gdy obraz jest już wgrany na kartę, należy przenieść ją z powrotem do swojego serwera. Następnie należy połączyć się przez SSH za pomocą WinSCP, PuTTY, FileZilla lub innego programu tego typu. Do połączenia używamy portu 2022.
login: root
hasło: ampio
Items[edytuj]
Obsługa elementów automatyki odbywa się poprzez itemy. Plik o rozszerzeniu .items zawiera informacje o typie i nazwie urządzenia, a także ścieżkę pozwalająca na komunikację OpenHAB z MQTT, za pośrednictwem którego dane transportowane są w obu kierunkach miedzy urządzeniami i panelem. Itemy dodawać można za pomocą aplikacji lub ręcznie.
Generator Itemów[edytuj]
Aplikacja generująca itemy dostępna jest w konfiguratorze Ampio SmartHome.
Tworzenie plików .items rozpoczynamy od pobrania listy urządzeń dostępnych w sieci.
Aby pobrać listę urządzeń, w zakładce Edycja wybieramy opcję Pobierz listy nazw z wszystkich urządzeń.
Przebieg tego procesu możemy obserwować w prawej dolnej części ekranu.
Gdy lista jest już pobrana, możemy uruchomić generator itemów dostępny w zakładce Narzędzia.
W generatorze widzimy listę urządzeń oraz ich typy, opisy w aplikacji, a także tematy MQTT.
W celu zakończenia procesu, wchodzimy w zakładkę MQTT w lewym górnym rogu okna, wyszukujemy nasz serwer, a następnie wysyłamy do niego utworzone itemy.
Ręczne tworzenie Itemów[edytuj]
Aby skorzystać z opcji ręcznego tworzenia plików .items należy utworzyć plik o rozszerzeniu
.items w folderze /etc/openhab2/items
Zawartość pliku wygląda następująco:
kierunek informacji: from - informacje przychodzące z sieci CAN, to - informacje wysyłane do sieci CAN
typy komend: o-wyjścia, rgbw - kolory, rs - MRT, f-flagi,
typy stanów: i-wejścia, o-wyjścia, f- flagi, t-temperatury, a- wartości analogowe, rgbw-kolory, rs - MRT, au- wartości analogowe 8bit, au16 - wartości analogowe 16bit, au16l -wartości analogowe 16bit podzielone przez 10K, au32 - wartości analogowe 32bit
plik transformujący wartość - wymagany w przypadku wartości, które różnią się w openhabie i systemie Ampio - na przykład MLED przyjmuje wartość od 0 do 255, a item Dimmer od 0 do 100. Potrzebna jest zatem transformacja informacji wychodzącej do sieci CAN z 100 na 255 oraz otrzymana z sieci CAN z 255 na 100. Wszystkie pliki transformujące znajduja się w katalogu /etc/openhab2/transform
Typy itemów:
• Switch – ON/OFF (np. zarówka)
• Dimmer – ściemniacz, ON/OFF/0-100 (np. LED)
• Color – ON/OFF wybór koloru (np. listwa rgbw)
• Contact – OPEN/CLOSED (np. kontaktron)
• Number – wartość liczbowa (np. temperatura)
• Rollershutter – UP/DOWN/STOP (np. rolety)
• String – tekst
Dokładna dokumentacja dostępna jest na stronie
https://www.openhab.org/docs/concepts/items.html
Sitemap[edytuj]
Kiedy itemy obsługujące urządzenia są już przygotowane, możemy umieścić je w aplikacji mobilnej OpenHAB, którą pobrać można ze sklepu. Dokładnie taka sama zawartość dostępna jest z poziomu przeglądarki pod adresem
adres serwera:8080/basicui/app
Zawartość aplikacji mobilnej tworzymy w pliku .sitemap utworzonym w katalogu
/etc/openhab2/sitemaps
Zawartość pliku wygląda następująco:
Basic UI prezentuje się tak:
Te same elementy automatycznie pojawiają się również w aplikacji mobilnej OpenHAB.
Przyjrzyjmy się poszczególnym elementom sitemapy.
W pierwszej linijce deklarujemy typ sitemap, następnie nadajemy jej nazwę (test), oraz etykietę, czyli napis będący widoczny w nagłówku aplikacji. Cała zawartość strony zawarta jest w klamrach.
Itemy możemy pogrupować w ramki. Używamy w tym celu typu Frame, a zawartość ramki umieszczamy również w klamrach. W przypadku ramek, również możemy nadać etykietę(label).
Wewnątrz ramek umieszczamy stworzone wcześniej itemy. Określamy typ, następnie przypisujemy item, opcjonalnie nadajemy mu ikonę, etykietę.
Dostępne typy itemów:
• Chart
• Colorpicker
• Default
• Frame
• Group
• Image
• Selection
• Setpoint
• Slider
• Switch
• Text
• Video
• Webview
Jak widać, typy obsługiwane przez sitemap różnią się nieco od typów itemów. Warto zwrócić uwagę na typ Default. Za pomocą tej funkcji, typ itemu w sitemapie zostanie automatycznie dopasowany do odpowiadającemu mu typowi w pliku .items, co znacznie ułatwi tworzenie aplikacji
Przydatnymi funkcjami w tworzeniu sitemapy są mappings oraz minValue, maxValue i step.
Za pomocą mappings możemy przypisać dowolny tekst dla stanów obiektu sterowanego
W ten sposób otrzymujemy:
W przypadku na przykład termostatu (typ Setpoint), gdy wartość liczbowa ustawiana jest z panelu, niezbędne będą funkcje ograniczające zakres danej wartości.
W ten sposób w aplikacji otrzymujemy pole umożliwiające ustawienie termostatu w zakresie od 15 do 35 stopni Celsjusza z dokładnością do 0.5 °C
Więcej funkcji ułatwiających tworzenie aplikacji znajduje się w dokumentacji OpenHAB.
Dokumentacja dostępna jest na stronie:
https://www.openhab.org/docs/configuration/sitemaps.html#concepts
HABpanel[edytuj]
Jest to panel dostępny z poziomu przeglądarki. W przeciwieństwie do Basic UI modyfikowanego w konsoli za pomocą pliku .sitemap, HABpanel modyfikuje się wyłącznie w przeglądarce, nie jest zależny od sitemapy. Tworzenie przejrzystego panelu jest zdecydowanie prostsze niż w przypadku Basic UI, polega na układaniu kafelków, dopasowaniu ich wielkości oraz przypisaniu istniejącego już itemu z listy. Co więcej, istnieje możliwość zapisania wielu konfiguracji, z których każda może być używana niezależnie na różnych urządzeniach.
Jak zacząć?
Po wpisaniu w przeglądarce adresu serwera otrzymujemy listę dostępnych elementów. Wybieramy z nich HABpanel
Po pierwszym otworzeniu, w prawym górnym rogu widzimy Ustawienia.
W Ustawieniach mamy do wyboru dwie opcje: utworzenie nowego panelu lub wgranie stworzonej już konfiguracji z serwera
Po wyborze Ustawienia panelu Otrzymamy listę konfiguracji zapisanych na serwerze.
Teraz jednak zajmiemy się utworzeniem panelu od początku.
Po wpisaniu i zatwierdzeniu nazwy Nowego Panelu otrzymujemy opcje pozwalające na dostosowanie wielkości kafelków do naszych oczekiwań
Dla każdego kafelka mamy możliwość ustawienia nazwy, ikony, tła oraz koloru tekstu.
Po wejściu w utworzony panel, modyfikujemy jego zawartość poprzez widgety. Wybieramy interesujący nas typ, a następnie umieszczamy go w odpowiednim miejscu w panelu.
Powstały w ten sposób kafelek możemy dowolnie przemieszczać i zmieniać jego rozmiar
Następnie ustawiamy parametry widgetu.
Element openHAB wybieramy z listy itemów. Na liście znajdują się wszystkie poprawnie skonfigurowane pliki .items, które mogą być przypisane do widgetu wybranego typu.
Jak w przypadku Nowego Panelu, tutaj również mamy możliwość wyboru ikony oraz tła.
W Ustawieniach Panelu mamy dostęp do ustawień takich jak nazwa, motyw, tło itp.
Gotową konfigurację zapisujemy. Możemy teraz wczytać ją w jakiejkolwiek innej przeglądarce.
Node-Red[edytuj]
Jest to platforma służąca do sterowania urządzeniami automatyki domowej (nie tylko Ampio). Opiera się na dowolnej liczbie Flow – kart, na których graficznie tworzymy programy łączące elementy automatyki domowej za pomocą bloczków różnego typu.
Node-Red jest dostępny w przeglądarce pod adresem serwera z portem 1880.
Lista dostępnych bloczków widoczna jest po lewej stronie ekranu.
W przypadku, kiedy chcemy zainstalować potrzebny dodatek ,rozwijamy listę w prawym górnym rogu ekranu.
Wybieramy Manage Palette, a następnie zakładkę Install. Wpisujemy nazwę interesującego nas dodatku, a następnie instalujemy.
Po instalacji dodatku należy wykonać reboot serwera. Teraz możemy przejść do pisania programu graficznego.
Programujemy poprzez przeciąganie bloczków na kartę oraz łączenie ich ze sobą.
Lista bloków podzielona jest na kategorie. Podstawowymi kategoriami są input, output, function.
Po najechaniu myszą na wybrany plok pojawi się jego krótki opis
Gdy wybierzemy potrzebny blok i przeciągniemy na kartę, możemy ouzyskać szczegółowe informacje na jego temat w zakładce Info po prawej stronie ekranu
Blok możemy edytować poprzez podwójne kliknięcie. Wowczas pojawi się okno ustawień
Szczególnym blokiem jest blok Debugg znajdujący się w kategorii output
Po dołączeniu go do dowolnego bloku wejściowego (input) możemy obserwować jego stan w zakładce Debugg messages
Niepoprawnie skonfigurowany blok zostanie zaznaczony czerwonym trójkątem. Informacja o błędzie pojawi się również w zakładce Debugg messages
Napisany program możemy wysłać do serwera za pomocą przysicku Deploy w prawym górnym rogu ekranu
W przypadku nieprawidłowego zbudowania programu, pojawi się okno zawierające informację o błędach
Po poprawnym wgraniu programu pojawi się komunikat potwierdzający jego prawidłowość
Teraz program działa w tle nawet po zamknięciu przeglądarki
Karty do tworzenia programów dodawać możemy za pomocą plusa obok zakładek Flow
Po dwukrotnym kliknięciu za zakładkę Flow możemy nadać nazwę karcie oraz zdecydować czy zapisany na niej program będzie aktywny, czy nie
Poniżej zaprezentowane są gotowe rozwiązania
Grupowanie LEDów[edytuj]
Ponieważ sterowanie urządzeniami Ampio odbywa się za pomocą mqtt, do powiązania między urządzeniami posłuży blok mqtt dostępny w podstawowej bibliotece Node-Red.
Powiązanie urządzenia z panelem dotykowym[edytuj]
Obsługa koloru RGBW za pomocą suwaków[edytuj]
Obsługa modułu RGBW odbywa się za pomocą czterech sliderów, z których każdy odpowiada za osobny kanał. Przykładowy układ HABpanelu: i Sitemapy
Należy stworzyć cztery itemy odpowiedzialne za obsługę kolorów:
Dimmer red "R" {mqtt=">[broker:ampio/to/1AB9/red:command:*:JS(ampio_100_255.js)]"}
Dimmer green "G" {mqtt=">[broker:ampio/to/1AB9/green:command:*:JS(ampio_100_255.js)]"}
Dimmer blue "B" {mqtt=">[broker:ampio/to/1AB9/blue:command:*:JS(ampio_100_255.js)]"}
Dimmer white "W" {mqtt=">[broker:ampio/to/1AB9/white:command:*:JS(ampio_100_255.js)]"}
Powyższy topic mqtt jest przykładowy. Można dowolnie go zmienić, nie należy jednak pominąć pliku transformującego wartość.
Następnym krokiem jest stworzenie programu w NodeRed. Prezentuje się on następująco:
Poniżej omówienie poszczególnych bloków:
Bloki mqtt
W każdym bloku ustawiamy topic identyczny z topiciem itemu stworzonego w openHABie.
Bloki function:
Cztery bloki funkcyjne odpowiadają za przypisanie wartości każdego slidera do zmiennej.
Powyższa komenda flow.set służy stworzeniu zmiennej, którą można obsługiwać poza blokiem, w którym jest zadeklarowana. W tym przypadku obsługiwana jest w obrębie jednego flow. Aby stworzyć zmienną globalną o zasięgu wielu flow, należy zastosować komendę global.set
Piąty blok function służy połączeniu kolorów:
Komenda flow.get służy pobraniu wcześniej zadeklarowanej zmiennej globalnej. Następnie tworzymy macierz z czterema elementami: red,green, blue,white. Należy również zastosować funkcję String, żeby dane przyjęły postać ciągu znaków obsługiwaną przez listwę RGBW. Ostatnim krokiem jest dołączenie bloku mqtt out zawierającego topic obsługujący moduł RGBW.
Node Ampio[edytuj]
Bloczki Ampio dają możliwość prostego i intuicyjnego tworzenia warunków w Node-Red.
Samodzielna instalacja dodatku Ampio odbywa się poprzez konsolę. Najpierw łączymy się z serwerem za pomocą programu PuTTY lub innego programu tego typu.
Login: root
Hasło: ampio
Następnie przechodzimy do folderu ~/.node-red.
Teraz wpisujemy komendę sudo npm install node-red-contrib-ampio i czekamy na zainstalowanie dodatku.
Po instalacji wykonujemy reboot serwera.
Blok Ampio IN[edytuj]
Zawiera następujące pola
Value Type – służy do wyboru typu wartości, jaką otrzymujemy z urządzenia. Wybieramy z listy spośród typów:
Analog value-wartości analogowe
RGB color– kolor oświetlenia RGB
Digital input-wejście cyfrowe
Digital in (rising edge) - zbocze narastające
Digital output– wyjście cyfrowe
Flag – flaga
Temperature-wartość temperatury
Server address – w tym polu domyślnie znajduje się „localhost. Jeśli NodeRed znajduje się na MSERV (jak w większości przypadków), pozostawiamy to pole niezmienione. Jeżeli natomiast NodeRed zlokalizowany jest poza MSERV, należy wpisać pełny adres serwera.
Target device – w tym polu wybieramy urządzenie. Łatwe wyszukanie urządzeń powiązanych z serwerem umożliwia przycisk lupy.
W zależności od wybranego wcześniej typu wartości, na liście pokaże się lista urządzeń posiadających wyjście danego typu.
I/O ID – w tym polu definiujemy numer wyjścia wybranego urządzenia;
Name -w tym polu opcjonalnie możemy nadać nazwę;
Pod prawidłowo skonfigurowanym blokiem Ampio IN pojawi się napis connected.
Blok Ampio OUT[edytuj]
Cmd type – pole służące do wyboru typu komendy z listy spośród trzech typów:
Standard – standardowa komenda
Raw CAN broadcast - służy do obsługi danych RAW zawartych w osobnej dokumentacji sieci CAN
Flag – służy do obsługi flag
W zależności od typu (Standard, Raw CAN broadcast lub Flag), pola w bloczku różnią się.
W typie Standard oraz Flag posiadamy następujące pola, które wypełniamy je tak jak w przypadku bloku wejściowego.
W przypadku typu Raw CAN broadcast posiadamy takie same pola z wyjątkiem numeru wyjścia lub wejścia.
Blok Ampio LCD[edytuj]
Dzięki niemu możemy z poziomu Node Red wyświetlić informacje na panelu dotykowym z ekranem.
Blok posiada następujące pola:
LCD font służy do wyboru czcionki spośród Standard (10x16), Big (20x32) oraz Icon (40x40). Ostatni typ dostępny jest, jeżeli do panelu wgrane są ikony.
Do wskazania lokalizacji tekstu na panelu służ pola LCD X oraz LCD Y.
Punktem początkowym jest lewy górny róg ekranu. Jego współrzędne to LCD X=00 i LCD Y=00. Wraz ze zwiększaniem wartości LCD X, tekst będzie coraz bliżej prawej krawędzi. Zwiększenie wartości LCD Y skutkuje obniżeniem tekstu.
Punkt określony przez wartości LCD X i LCD Y zaznaczony jest na obrazku obok. Wymiary dotyczą rozmiaru Standard.
LCD text - pozwala na zdefiniowania koloru tekstu (hex)
LCD bg color – wpisujemy tu kolor tła również w zapisie heksadecymalnym
Tekst statyczny do wyświetlacza dostarczamy za pomocą bloku Inject. Wybieramy typ String, a następnie w polu payload wpisujemy tekst, który ma pojawid się na ekranie.
Jeżeli chcemy wyświetlić na ekranie dane z modułów (np. temperaturę), informacje doprowadzamy do wyświetlacza za pomocą bloku Ampio IN. Wyjście Ampio IN możemy zmodyfikować za pomocą bloku function
(UWAGA! Maksymalna długość tekstu to 11 znaków, po przekroczeniu tej wartości, wpisany tekst zostanie ucięty.)
Przykład:
Zawartośd bloku Ampio IN:
Zawartośd bloku function:
Zawartośd bloku Ampio LCD:
W ten sposób otrzymujemy na środku wyświetlacza czarny napis „ TEMP: *wartośd temperatury*”na białym tle.
Blok Ampio Events[edytuj]
Blok służy do wysyłania zdarzeń
Philips Hue[edytuj]
Integracja Philips Hue z systemem Ampio odbywa się za pośrednictwem platformy Node-Red.Po wgraniu obrazu karty, bloczki do obsługi Philips Hue są widoczne na liście elementów.
Rozpoczynamy od konfiguracji bloczku Hue Light. Przechodzimy do ustawień poprzez dwukrotne kliknięcie bloku.
W ustawieniach bloku wyszukujemy mostek Philips. Robimy to klikając przycisk obok pola Bridge
Po jego przyciśnięciu, pojawi się menu dodawania mostka. Adres IP mostka jest wyszukiwany automatycznie po kliknięciu lupy koło pola z adresem.
Aby wypełnić pole API Key, klikamy przycisk obok pola oraz wykonujemy polecenie wyświetlone w oknie, które się pojawiło (przyciśnięcie przycisku mostka w ciągu 20 sekund)
Po dodaniu zdefiniowanego mostka, po kliknięciu przycisku przy polu Light mamy dostęp do wszystkich żarówek, które są z nim połączone. Interesującą nas żarówkę wybieramy z listy.
Pod poprawnie zdefiniowanym bloczkiem Hue Light, pojawi się jego aktualny stan.
Philips Hue oferuje wiele funkcji sterowania oświetleniem. W poniższych przykładach zostało przedstawione sterowanie za pomocą komend json.
Włącz/wyłącz[edytuj]
Aby włączać i wyłączać oświetlenie Philips Hue z poziomu Node-Red, do naszego skonfigurowanego bloku Hue dołączamy dwa bloczki inject, za których pomocą będziemy zmieniać stan oświetlenia.
Po dwukrotnym kliknięciu bloczku ustawiamy zawartość typu JSON.
Polecenie jest wysyłane do Philips Hue po każdym kliknięciu niebieskiego kwadratu po lewej stronie bloczka inject.
Tę samą instrukcję do żarówki Hue możemy wysłać za pośrednictwem na przykład panelu dotykowego. W tym przypadku struktura programu jest nieco bardziej złożona.
Wybieramy blok Ampio IN i definiujemy w nim nasze urządzenie sterujące.
Wybieramy typ wartości zbocze narastające i numer wyjścia, które powiązane jest z przyciskiem włączającym
Następnie dołączamy blok switch, w którym zawrzemy instrukcję warunkową
Powyższą instrukcję zdefiniowaną w ustawieniach bloku switch możemy rozumieć następująco:
Jeżeli payload jest równy 1 (wystąpiło zbocze narastające), przejdź do kroku 1.
Po ustawieniu warunku, należy zdefiniować zawartość kroku. Posłuży do tego blok change. Do warunku dołączamy blok change i w jego ustawieniach definiujemy instrukcje.
Powyższą instrukcję możemy rozumieć jako: ustaw payload na "on":true ({} oznacza typ JSON)
Powyższa sekwencja zastępuje jeden blok inject włączający żarówkę.
Teraz tworzymy analogiczną sekwencję bloków, które będą odpowiadały za wyłączenie żarówki.
W nowym bloku Ampio IN definiujemy wyjście wyłączające
Zawartość bloku switch pozostaje taka sama, natomiast w bloku change ustawiamy komendę wyłączającą
Teraz dołączamy skonfigurowany blok Hue Light.
Możemy dodłączyć również skonfigurowane wcześniej bloki inject, aby móc sterować zarówno z przeglądarki jak i z panelu dotykowego
Gdy program jest gotowy, zatwierdzamy go za pomocą przycisku Deploy.
Jasność[edytuj]
W bloku inject ustawiamy następującą zawartość:
W przypadku powyższej komendy brightness możemy wybrać dowolną wartość z zakresu 0-100.
Blok Hue przyjmuje również komendy zmiany jasności o wybraną wartość.
Zwiększenie jasności otrzymujemy wypełniając blok inject następująco:
Aby zmniejszyć jasność należy użyć tej samej komendy, jednak z ujemną wartością, jak poniżej:
Komendy sterujące jasnością można tak jak w przypadku włącz/wyłącz wysyłać do żarówki za pomocą pola panelu dotykowego konfigurując bloki analogicznie to wcześniejszego przykładu.
Kolor[edytuj]
Kolor światła możemy ustawić na dwa sposoby: podając wartości barw R,G,B lub kod koloru HEX. Poniżej dwa sposoby ustawienia światła białego:
Istnieje również możliwość wyboru nasycenia koloru:
Ustawienie wartości 100 oznacza maksymalne nasycenie koloru, natomiast wartość 0 skutkuje świeceniem żarówki na biało.
Analogicznie do wcześniejszych przykładów, powyższe komendy można wysyłać za pomoca bloków inject lub sekwencji łączącej pole dotykowe z hue light.
Gotowe sceny[edytuj]
Philips Hue oferuje zestaw kolorów i jasności światła. Dostęp do tej funkcji daje blok Hue Scene
W bloku należy zadeklarować mostek oraz wybrać scenę klikając lupę obok pola scena:
Po wyszukaniu można wybrać dowolną scenę z listy
Wywołanie sceny następuje poprzez blok inject lub blok Ampio IN z zadeklarowanym polem panelu dotykowego
Grafana[edytuj]
Przed rozpoczęciem pracy z Grafana należy zalogować się za pomocą przeglądarki do serwera (standardowo port 80).
Autoryzacja:
login: admin
pass: admin
Następnie z zakładki SIEĆ, wybieramy pozycję INFLUXDB. W nowym oknie zaznaczamy pole Aktywny i potwierdzamy wybór przyciskiem ZAPISZ. Restartujemy serwer.
Node-Red
Na początku wrzucamy dane do bazy za pomocą Node-Red.
Wybieramy z listy bloczków AMPIO IN.
Następnie edytujemy blok. W polu Target device wybieramy moduł dostarczający danych, których chcemy użyć do stworzenia wykresu, na przykład MSENS. W polu Value Type wybieramy interesującą nas wielkość.
Na wyjściu bloku mqtt otrzymujemy wartość typu string. Typ ten nie pozwala na utworzenie wykresu więc potrzebna jest konwersja danych wyjściowych do wartości liczbowych. Do tego posłuży nam blok function, który dołączamy do bloku AMPIO IN.
Blok wypełniamy następująco:
Ma on za zadanie przekształcić podawane przez serwer wartości typu string w wartość liczbową, która może być zapisana w bazie danych.
Po przygotowaniu danych, wrzucamy je do bazy za pośrednictwem bloku influxdb. W przypadku. gdy nie ma go na liście, należy zainstalować dodatek. W tym celu rozwijamy menu w prawym górnym rogu
Po kliknięciu opcji Manage palette przechodzimy do zakładki Install, wyszukujemy nazwę "influx", a następnie instalujemy dodatek
Po instalacji konieczny jest reboot serwera.
Z listy wybieramy blok influxdb, a następnie dodajemy serwer.
Po kliknięciu przycisku obok pola Server pojawia się okno, w którym definiujemy pola Host oraz Port jak poniżej, a następnie w polu Database wpisujemy nawę naszej bazy danych.
Database: ampio (wielkość liter ma znaczenie)
Username: (zostawiamy puste)<br
Password: (zostawiamy puste)
Po zapisaniu zmian podpinamy bloczek do bloku function
Możemy korzystać z danych, na podstawie których tworzymy wykresy.
Grafana
Wykresy tworzymy wykorzystując narzędzie Grafana dostępne pod adresem IP serwera (w sieci lokalnej) z portem 3000.
Logujemy się za pomocą danych:
Login: admin
Hasło: admin
Po zalogowaniu możemy utworzyć bazę danych klikając w przycisk pokazany poniżej:
Wybieramy typ bazy – w naszym przypadku jest to InfluxDB.
Następnie nadajemy nazwę bazie danych:
NAME: Ampio
Poniżej w tabeli o nazwie HTTP, w polu URL wybieramy z listy:
http://localhost:8086
W zakładce InfluxDB Details wpisujemy nazwę bazy danych zadeklarowaną w Node-Red, zgodnie z naszym przykładem:
database: ampio
pola: User oraz Password pozostawiamy puste.
Teraz z paska bocznego wybieramy opcję Create Dashboard. Otrzymujemy możliwość tworzenia list, tabeli itd. Interesuje nas wykres, zatem wybieramy typ Graph.
Po kliknięciu pola Panel Title możemy edytować wykres.
W polu Data Source wybieramy z listy utworzoną wcześniej bazę danych.
Następnie w polu select measurement wyszukujemy wielkość, którą chcemy widzieć na wykresie.
Ponieważ dane nie są dostarczane w sposób ciągły, wybieramy opcję wypełnienia previous, która estymuje pobrane wartości w celu otrzymania gładkiego wykresu.
Możemy nakładać na siebie wykresy wielu wielkości za pomocą przycisku Add Query.
Wielkości deklarujemy tak jak wcześniej.
Po prawej stronie możemy zarządzać widocznością lub usunąć niepotrzebny wykres.
Przy poprawnie wpisanych danych otrzymamy wykres. Całość powinna wyglądać następująco:
W prawym górnym rogu możemy ustalić czas, jaki ma być widoczny na poziomej osi wykresu.
Gotowy wykres zapisujemy za pomocą ikonki Save dashboard lub skrótu Ctrl+S.
Od tej pory wykres widoczny jest w utworzonym dashboardzie, a dane aktualizują się automatycznie.
Alexa[edytuj]
Pierwszym krokiem integracji systemu Ampio z Alexą jest uzyskanie dostępu do chmury OpenHAB dostępnej pod adresem:
https://myopenhab.org
Następnie należy utworzyć konto.
Do rejestracji potrzebne są dwa pliki, które znajdziemy w następujących lokalizacjach na serwerze:
OpenHAB UUID:
/var/lib/openhab2/uuid
OpenHAB Secret:
/var/lib/openhab2/openhabcloud/secret
Dostęp do tych plików możliwy jest poprzez program taki jak PuTTY, FileZilla, WinSCP itp. Kopiujemy treść plików i wklejamy w polach rejestracji i tworzymy konto.
Po zalogowaniu w zakładce Items widzimy wszytskie aktywne Itemy.
Jeżeli nie wszystkie itemy umieszczone na serwerze są widoczne, po zarejestrowaniu chmury należy ich użyć np. poprzez włączenie I wyłączenie światła. Wówczas Item powinien pojawić się na liście.
Ważne jest, żeby podczas procesu integracji OpenHABa z Alexą, widoczny był status Online.
Następnym krokiem jest zalogowanie się na konto amazon pod adresem:
https://alexa.amazon.com/spa/index.htmll
Z listy po lewej stronie ekranu wybieramy opcję Skills.
Teraz korzystając z pola wyszukiwania znajdujemy nadrzędzie OpenHAB.
Wśród wyników wyszukiwania klikamy pierwszą pozycję.
Gdy pojawi się nowe okno, dodajemy openHABa za pomocą przycisku ENABLE.
W tym momencie zostajemy przekierowani na stronę chmury OpenHAB. Zezwalamy na dostęp.
Po poprawnym połączeniu, na stronie Alexy zobaczymy poniższy komunikat:
Po powrocie na stronę Amazon Alexa możemy wyszukać urządzenia z openHABa
Dostępne urządzenia zostaną wykryte automatycznie.
Po wyszukiwaniu pojawi się lista powiązanych urządzeń. Możliwe jest tez ponowne wyszukiwanie lub usunięcie powiązanych elementów.
Alexa obsługuje teraz powiązane urządzenia widoczne na liście.
OpenWeatherMap[edytuj]
Dzięki temu poradnikowi będziemy mogli z wykorzystaniem Node-Red wyświetlać interesujące nas parametry pogody (np. temperatura, wilgotność, opady, prędkość wiatru) z dowolnej lokalizacji oraz z kilkudniowym wyprzedzeniem.
Do skorzystania z bloczków OpenWether potrzebny jest klucz API. Aby go uzyskać należy założyć bezpłatne konto na:
https://openweathermap.org/appid
Po założeniu konta w tym serwisie w menu API możemy wygenerować nasz unikatowy klucz. Do naszych celów wystarczy wersja darmowa, której podstawowym ograniczeniem jest maksymalnie 60 zapytań na minutę.
W Node-Red za pomocą opcji „Manage palette” instalujemy następujący pakiet:
node-red-node-openweathermap
Po instalacji wykonujemy reboot serwera.
Pełną dokumentację modułu openweathermap znajdziemy stronie:
https://flows.nodered.org/node/node-red-node-openweathermap
Wykorzystanie bloku openweathermap[edytuj]
Z listy wybieramy interesujący nas bloczek openweathermap
Po dwukrotnym kliknięciu bloczku otrzymujemy okno edycji. Wpisujemy nasz unikalny kod API (pamiętajmy, że klucz będzie aktywny po upływie parudziesięciu minut od jego wygenerowania). Uzupełniamy też inne pola w zależności od potrzeb.
Do bloczka openweathermap podłączamy blok debugg.
W zakładce debugg messages obserwujemy informacje wychodzącą z bloku openweathermap. Blok ten daje nam wiele informacji na temat pogody takie jak między innymi temperatura w stopniach Celsjusza i Kelwina(tempc i tempk), wilgotność (humidity), ciśnienie (pressure), prędkość wiatru (windspeed) i krótki opis pogody (description).
Aby z bloku otrzymać jedną interesującą nas wartość (na przykład temperaturę) należy dołączyć blok function.
Zawartość tego bloku prezentuje się następująco:
W ten sposób możemy wybrać dowolny interesujący nas parametr pogodowy i wyświetlić go na wyświetlaczu LCD lub wykorzystać do stworzenia wykresu Grafana.
Wyświetlanie danych na wyświetlaczu LCD[edytuj]
Do tej operacji przydatny będzie blok Ampio LCD. Aby przygotować informację wychodzącą z bloku openweathermap, należy połączyć go z blokiem function o następującej zawartości:
W zależności od potrzebnej wielkości, dostosowujemy zawartość bloku zmieniając napis, element payloadu oraz jednostkę. Zawsze pamiętamy o tym, żeby nie przekroczyć 11 znaków
Wychodzącą informację możemy obserwować za pomocą bloku debugg. W zakładce Debugg messages widzimy zarówno jej treść, jak i ilość znaków.
Aby przekazać informację do wyświetlacza, należy dołączyć blok Ampio LCD.
Konfigurujemy go w sposób opisany w dokumentacji bloków Ampio
Tworzenie wykresów[edytuj]
Łączymy blok openweathermap z blokiem function o następującej zawartości:
Teraz możemy dołączyć blok InfluxDB (blok opisany w dokumentacji Grafana) i wypełniamy tak, jak poniżej:
Po takim przygotowaniu bazy danych, przechodzimy do narzędzia Grafana dostępnego pod adresem serwera z portem 3000.
Logujemy się za pomocą danych:
Login: admin
Hasło: admin
Przechodzimy do zakładki Create Dashboard
Po wybraniu typu Graph, wypełniamy pola w następujący sposób:
W ten sposób otrzymujemy wykres wybranej wielkości. Możemy zmienić czas na osi poziomej, zmienić tytuł wykresu oraz zapisać dashboard.