UPSa dostałem… Jakbym miał za dużo czasu i się nudził ;)

Pojawił się w domu nowy kolega… Trochę już wiekowy, może niezbyt piękny, ale po wymianie baterii działający bardzo dobrze. UPS APC CS 350. Problematyczne było znalezienie kabla transmisyjnego (specjalna, 10 żyłowa 'RJotka’ -> USB), ale i z tym sobie poradziłem, za co bardzo dziękuję kolegom.

Dążymy do tego:

A sam UPS wygląda tak 🙂

Skoro zadziałał grzechem byłoby:
– pozostawienie go samemu sobie,
– odpuszczenie monitorowania
– i oczywiście dodaniu do naszego Smart home 😉

Co prawda w przypadku Raspberry Pi zmieniłem miejsce systemu na HDD, ale poprawienie bezpieczeństwa i stabilności zawsze jest dobrym pomysłem. A do tego – jeżeli braknie prądu to dzieci zawsze będą mogły lekcje odrobić przy lampce, z czego na pewno będą się bardzo cieszyć. Lampka z żarówką 7W wytrzymuje na nim ponad dwie godziny, także czasu będą miały sporo…

Bez zbędnych dyskusji zabieramy się do pracy.

Najpierw odświeżenie repozytorium i instalacja NUT (Network UPS Tools). NUT jest serwisem monitorującym pracę UPS, dbającym o przesyłanie komunikatów do systemu w przypadku przejścia na zasilanie bateryjne, pozwalającym zamknąć system w przypadku spadku poziomu naładowania baterii, itp.

sudo apt-get update && sudo apt-get install nut nut-client nut-server

Po zainstalowaniu wykonujemy komendę

lsusb

i sprawdzamy czy nasz UPS jest widoczny.

Działa, jest widoczny. Świetnie!

Warto na stronie http://www.networkupstools.org/stable-hcl.html sprawdzić czy nasz UPS jest obsługiwany i jaki jest do niego najlepszy sterownik. Szczerym będąc, z APC problemu nie miałem, ale już UPS firmy Eaton nie udało mi się zmusić do podłączenia i zaraportowania statusu. Chociaż sam UPS działał bez problemu.

Ok, jedziemy dalej. Dobrze by było powiedzieć systemowi jaki to jest ten nasz UPS i jakim sterownikiem się do niego dostaniemy.

W przypadku NUT, pliki które zaraz będziemy edytować są bardzo dobrze udokumentowane. Przy każdej opcji mamy kilka przykładów, wyjaśnienia, itp. W Waszym przypadku UPS zapewne będzie inny, może inny model, musicie wybrać odpowiednie sterowniki i podejście. Z tego co widzę w sieci – APC sprawia najmniej problemów.

W tym celu, edytujemy

sudo nano /etc/nut/ups.conf

Na samym końcu pliku dodajemy/edytujemy:

[apc350]
        driver = usbhid-ups
        port = auto
        desc = „APC”

WAŻNE jest zapamiętanie tego, co wpisaliśmy w nawias kwadratowy, ponieważ tej nazwy będziemy używać w kolejnych krokach.

Jak widać – eksperymentowałem z kilkoma różnymi.

Kolejny krok – deklarujemy w konfiguracji nut jaki będzie nasz sposób pracy UPSa. W moim przypadku serwer i klient NUT jest na tym samym Raspberry Pi, dlatego wybrałem opcję Standalone.

sudo nano /etc/nut/nut.conf

MODE=standalone

Następnie

sudo upsdrvctl start

Dobrze jest – mamy komunikację.

Być może potrzebne będzie wykonanie:

sudo service nut-server restart

sudo service nut-client restart

Przed

sudo service nut-server status

Serwer wystartował, jest w porządku.

Komenda jak poniżej (UWAGA, używamy nazwy, którą zdefiniowaliśmy w konfiguracji!) poda nam parametry i status UPSa.

upsc apc350

So far so good, jak to mówią. Teraz musimy skonfigurować monitor, który w razie braku prądu zamknie komputer, gdy serwer NUT mu rozkaże.

Użytkownicy (tam gdzie XXXXX podajecie swoje hasło. W sumie to i XXXXX możecie zostawić 😉 ):

sudo nano /etc/nut/upsd.users

[admin]
        password = XXXXX
        actions = SET
        instcmds = ALL
[upsmon]
        password  = XXXXX
        upsmon master

I później przechodzimy do wieeeelkiego pliku

sudo nano /etc/nut/upsmon.conf

Ale na szczęście interesują nas w nim wyłącznie dwie sekcje:

MONITOR apc350@localhost 1 upsmon XXXXX master

Zamiast XXXXX oczywiście Wasze hasło

I dla testów możemy włączyć powiadamianie na ekranie. Będziemy widzieć co się dzieje:

NOTIFYFLAG ONLINE      SYSLOG+WALL
NOTIFYFLAG ONBATT      SYSLOG+WALL

A tutaj komenda, która wykona się, gdy będzie już trzeba zamknąć system, ponieważ bateria już ledwo zipie:

Później uprawnienia do plików:

sudo chown nut:nut /etc/nut/*
sudo chmod 640 /etc/nut/upsd.users /etc/nut/upsmon.conf

W sumie jesteśmy już gotowi, z ciekawostek, po wpisaniu komendy jak poniżej dostaniecie listę komend Waszego UPS. Jak widać – wyłączenie głośnika, wyciszenie, restart UPSa, testowanie baterii, itp.

sudo upscmd -l apc350

Na przykład wyłączenie pikania po przejściu na baterię (już rodzinę raz obudził gdy zabrakło prądu) to:

upscmd apc350 beeper.mute

Po tym wszystkim restart serwera i klienta. UWAGA – możliwe, że i wcześniej będziecie musieli wykonać sudo reboot, aby UPS był widoczny i serwisy wstały.

sudo service nut-server restart
sudo service nut-client restart

Po brutalnym wyjęciu kabla zasilającego testy wypadły pozytywnie 🙂

Jeszcze tylko

sudo nano /etc/nut/upsd.conf

Aby serwis wiedział gdzie ma nasłuchiwać:

 LISTEN 127.0.0.1 3493
 LISTEN 192.168.1.200 3493

192.168.1.200 to adres mojego Raspberry Pi.
Cudownie! Wszystko skonfigurowane, działa!

No to teraz Domoticz, żeby jeszcze było wizualnie pięknie (chociaż zdania są podzielone, ale co tam 😉 )

Z poziomu konsoli i folderu Domoticz wykonujemy co następuje:

cd plugins
mkdir NUT_UPS
sudo apt-get update
sudo apt-get install git
git clone https://github.com/999LV/NUT_UPS.git NUT_UPS
cd NUT_UPS
sudo chmod +x plugin.py
sudo /etc/init.d/domoticz.sh restart

W sekcji Hardware pojawił mi się plugin UPS Monitor. Konfigurujemy go podając nasze parametry (IP, port, oraz nazwę w serwerze NUT, którą skonfigurowaliśmy – u mnie apc350)

I mamy:

Po chwili w zakładce Devices zaczną nam się pojawiać dane z UPSa:

I już później w Domoticz:

Kolejna wykonana praca! Teraz mogę spać jeszcze spokojniej, mniej obawiając się o to, że Raspberry Pi nie wstanie przy kolejnym braku/zaniku/chwilowej przerwie prądu.

Smart home, Domoticz, Raspberry – z czym się to je

Czytając swojego bloga (serio – czytam czasem co naskrobałem dwa lata temu, aby poprawiać 'warsztat’) doszedłem do wniosku, że nie zrobiłem nawet małego wstępu dla amatorów tematów Smart house i Raspberry Pi. Odgórnie przyjąłem, że wszyscy już wiedzą o co chodzi i od razu, 'z grubej rury’ przystąpiłem do opisywania tematów. Czasem dość trudnych.

Przy okazji rozpoczęcia strony na Facebook, dotarło do mnie, że nie mam co wrzucić jako początek, jak zainteresować ludzi, wytłumaczyć podstawy. Temu właśnie posłuży ten wpis.

Zaczynamy!

Designed by Freepik

Smart home, smart home, IoT, IoT. Bardzo głośne ostatnio tematy. Czyli tak zwane 'Inteligentne domy’. Osobiście wolę termin 'Sterowane’, 'Odpowiednio sterowane’ lub 'Automatyczne’. Inteligencję rezerwuję dla tworów żywych.

Dom taki na podstawie czujników czy też informacji z zewnątrz (na przykład pogodowych) potrafi odpowiednio się 'dostosować’ do naszych potrzeb.

Dość często wymienia się tutaj przykłady:
– uruchomienia podlewania gdy prognozowany jest brak opadów przez kilka dni,
– automatyczne otwieranie rolet/markiz o poranku
– czy też domykanie ich, gdy słońce świeci akurat w konkretne okno,
– sterowanie ogrzewaniem w domu gdy nas nie ma
– lub ustawianie zadanej temperatury, bo akurat wcześniej wracamy z pracy/wyjazdu,
– inteligentne monitorowanie posesji – jeżeli kurier dzwoni wideofonem przy bramie – wyślij zdjęcie i jeżeli potrzeba – otwórz mu furtkę aby nie bawił się w ogrodową koszykówkę przesyłką,
– ustawianie natężenia świateł w zależności od potrzeb – czytanie/oglądanie filmu/pełna jasność
– łączenie powyższych elementów w sceny – jeżeli wybieram tryb Kino – rozwiń ekran, włącz amplituner, wyłącz światła
– sterowanie głosowe
– powiadamianie głosowe/sms/e-mail

Wszystkie te elementy można zrealizować 'na bogato’ zlecając je wyspecjalizowanej firmie, lub hobbystycznie. Temu drugiemu podejściu dedykowany jest blog. Niestety, podczas budowy domu popełniłem kilka błędów, jednym z nich było pociągnięcie zbyt małej ilości kabli do przesyłania danych, 'bo przecież teraz wszystko po WiFi’. Wymusiło to (na ponowne kucie ścian i remonty nie mam ochoty) ustawienie zainteresowania na transmisję bezprzewodową.

Nie jestem profesjonalistą w tym temacie. Cały czas mnóstwo się uczę i wiele tematów jeszcze przede mną. Jeżeli coś jednak zaczynam i mnie wciągnie – 'nie ma zmiłuj’ – nie będę spał, ale temat muszę rozgryźć a problemy usunąć. Kropka.

Dlatego zainteresowały mnie platformy Raspberry Pi, Wemos, Arduino. Stąd już krok do komunikacji 433MHz, WiFi, ZigBee, Z-Wave. Czujniki temperatury, wilgotności, zalania, dymu, monitorowanie zużycia energii. Internetowe prognozy pogody, dane w formacie JSON. Temat jest niesamowicie rozległy i ciężko powiedzieć: 'To jest jedyne dobre rozwiązanie’.

Są systemy płatne, kompleksowo zamykające temat przez autoryzowanych instalatorów – Fibaro, Grenton to tylko przykłady polskich rozwiązań, na rynku jest ich mnóstwo. Oferują sterowanie światłem, ogrzewaniem, bezpieczeństwem, czujnikami. Są jednak relatywnie drogie (oczywiście punkt widzenia każdej osoby będzie się różnił) oraz zamknięte, jeżeli chodzi o sposób zaimplementowanych rozwiązań.

Osobiście szukałem systemu darmowego aby sprawdzić, czy Smart home się w ogóle u mnie przyjmie, czy jest sensowny. Patrząc z perspektywy czasu – jak najbardziej tak! Do tego przydałoby się oprogramowanie, które to wszystko zepnie, odczyta dane z czujników, prześle do przekaźników, zapisze do bazy danych, umożliwi analizy, reakcję.

Mój wybór padł na Domoticz. Trzy lata temu 'próg wejścia’ w jego przypadku był niższy niż w Home assistant. Aktualnie coraz częściej rozważam opuszczenie Domoticz, albo chociaż na pewien czas równoległe sprawdzenie Home assistant. Wydaje się platformą stabilniejszą, bardziej rozwojową ze względu na sposób jego budowy. Aktualnie jednak – Domoticz!

Dla osób początkujących ważna jest również kolejna informacja – oba systemy są darmowe, możliwe do zainstalowania na Raspberry Pi, komputerach/serwerach obsługujących Linux, Windows, MacOS. Nie nie ryzykujecie zaczynając przygodę ze Smart home.

Dlaczego akurat on?
– po zainstalowaniu na Raspberry Pi (i nie tylko) można go od razu używać, bez dodatkowych skryptów
– dla początkujących praktycznie wszystko da się wyklikać
– bogaty zbiór urządzeń, które są obsługiwane
– na tamten czas dość ładny interface użytkownika

Porównując koszty, są od 5 do 10 razy mniejsze niż przy rozwiązaniach dedykowanych, nadmieniam jednak, że spędziłem mnóstwo czasu ucząc się, dostrajając elementy do swoich potrzeb, instalując, testując. Nie każdy ma ochotę na takie hobby. Mnie akurat wciągnęło.

Kilka przykładów:

Dashboard (czyli główny pulpit). Z tego miejsca mogę sprawdzić status tego co się dzieje w domu – kamery, gniazdka, włączone urządzenia.

Przełączniki – światła, sterowanie IR (TV, wzmacniacz), gniazdka zdalnie włączane, LEDy, system audio multi room

Sceny – połączenie kilku elementów w łańcuch zdarzeń. Jeżeli oglądamy film, to wyłącz światła, włącz amplituner, subwoofer…

Temperatura – dane z każdego z czujników. Łącznie z wilgotnością.

Elementy użytkowe – status użycia Raspberry Pi, szybkość łącza internetowego, nawodnienie kwiatów, pobór prądu w domu

Domoticz umożliwia również robienie raportów w formie graficznej. Tutaj – wykres temperatury na zewnątrz

Ustawianie warunków włączenia/wyłączenia. Tutaj – Włącz światła przed domem godzinę po zachodzie słońca i wyłącz zawsze o 22:00.

Warunki powiadamiania. Tutaj – Jeżeli włączy się światło przed domem – wyślij e-mail na żądany adres

Jeżeli prezentacja danych w Domoticz nam nie odpowiada, zawsze można doinstalować dodatkowe systemy zbierające i prezentujące dane. Na przykład InfluxDB i Grafana.

Zachęcam do przeczytania poprzednich wpisów, postarałem się ułożyć opisane już tematy w pewne pakiety tematyczne:

– Przede wszystkim – Domoticz
– Systemy audio multi-room – Logitech media server, Max2Play
– Zdalny dostęp do Raspberry i Domoticz – Dataplicity
– Czujniki otwarcia/zamknięcia drzwi – Kerui
– Centralki obsługujące różne transmisje: RFLink, Xiaomi Mijia Smart Home
– Prezentacja danych/sterowania elementami domu: Dashticz, aplikacja Pilot, aplikacja MiHome
– Monitorowania zużycia energii: Owl Micro +
– Sterowanie głosem – Amazon Alexa – Echo Dot, Skille, Kalendarze
– Chipy ESP8266 – Wemos D1 Mini
– Instalacja, konfiguracja: Raspberry, Domoticz
– BLE – Bluetooth Low Energy – Mi flora
– Przełączniki Sonoff – Basic, POW, S20
– Sterowanie oświetleniem – włączniki Xiaomi, Milight
– Piloty uniwersalne IR – Broadlink
czujnik smogu
– Zdarzenia, powiadamianie – bezpośrednio w interface Domoticz, skrypty
pourlopowe wnioski

Nie twierdzę, że moja ścieżka jest jedyną dobrą. Ile osób, tyle możliwych rozwiązań, pomysłów, różnorakich podejść. Eksperymentujcie, sprawdzajcie!

Pozdrawiam, życząc miłej i przyjemnej lektury
Cezar

P.S. Życzę również dużo myślenia, potu, zastanawiania się czemu nie działa, szukania rozwiązań problemów.

A a a a a, Ataaaari. Wspomnień czar.

Ehhh… Nostalgia człowieka dopadła. Odebrałem właśnie z serwisu moje Atari 65XE. Przeszło z moich rąk do kuzyna, później wróciło do mnie. Przeleżało dość długo na strychu, później okazało się, że padł ROM i RAM. Na szczęście są jeszcze ludzie, którzy zajmują się reanimowaniem takich sprzętów (pozdrawiam Pana Jacka Zimę o pseudonimie Winter). Wymienił szybko, bezboleśnie dla pacjenta.
Z pewną dozą obawy podłączyłem go do telewizora…

Ale komputer ruszył bez problemu, mogłem się również wykazać w kwestii zdolności programistycznych 😉

Kultowy (jak dla mnie przynajmniej) Self test również zagrał znaną muzyczkę, przypomniał kolory.

To też ciekawa kwestia, bo nie każdy zapewne pamięta, że:
1. Nie wszyscy wtedy jeszcze mieli kolorowe telewizory
2. Jeżeli nawet mieli, to okupowali go często domownicy i nie można było sobie pograć w kolorze, bo rodzice przeganiali…
3. Miałem do niego dedykowany monitor monochromatyczny, także gry i dema raczyły mnie odcieniami ZIELENI. Do tego – czasem mu 'padała synchronizacja’ i trzeba było go mocno walnąć od góry, aby zaczął poprawnie działać.

O, chyba taki miałem:

Powyżej komplet wraz z joystickiem Megaboard. Był takim moim marzeniem, które długo pielęgnowałem po zobaczeniu reklamy w Bajtku albo Top Secret. Długo zbierałem na niego pieniądze, kupiłem na giełdzie w Katowicach. Miał licznik czasu 'w dół’, 'w górę’, slow motion i auto fire. Które nigdy się nie przydały, ale co tam – chciałem go mieć. Okazał się niezbyt ergonomiczny, ale co tam – się grało!

Powyżej kolejny 'znak czasu’ – składanki na kasetach. To akurat 'Zestaw programisty’. Polecam zwrócić uwagę na 'profesjonalne’ opisy do nich. I mityczne: 'Więcej informacji znajdziesz w opisach programów’. Ciekawe czy była w Polsce osoba, która takie opisy wtedy miała…

Kolejna domena komputerów Atari i Commodore – cartridge. Czyli karty, na których wgrane 'na sztywno’ były gry czy też programy użytkowe. Dzięki temu uruchamiały się błyskawicznie. Starsi zapewne pamiętają, że szybkość magnetofonu Atari była dramatyczna – 600 bodów (czyli bitów) na sekundę. Przez co niektóre gry 'wgrywały się’ i ponad 20 minut. Z tego to powodu montowano 'Turbo’, czyli sprzętowe przeróbki magnetofonu. Ja miałem Blizzard. W początkowej fazie należało najpierw załadować loader do 'Turbo’ w 'Normalu’ i dopiero później grę w 'Turbo’. Pamiętam, że miałem kasetę z kilkudziesięcioma jednostkami na taśmie (wtedy gry liczyło się na jednostki obrotów licznika magnetofonu) i na niej wyłącznie same loadery. Cartridge eliminował tą uciążliwość – miałem po prostu wtedy loadery zapisane na nim. Z tego co kojarzę – Universal loader ładował zdecydowaną większość. Commodore miał swojego Black box’a, ale to był przeciwny front barykady 😉

Kultowe 'ciszej, bo się nie wgra’ uderzy mnie zapewne jesienią, kiedy mam ochotę przejrzeć zawartość kaset, bo 'zgubił się’ zeszyt z opisem ich wszystkich…

Dzisiaj śledzimy niebo i to co nad nami lata… A do tego nawet to wyświetlimy!

Wczoraj w nocy bawiłem się w detektywa 😉 Śledziłem samoloty… Czyli nic nielegalnego, można powiedzieć – niestety. 
Łukasz Jokiel z zaprzyjaźnionego bloga opisywał sposób budowy swojego odbiornika ADS-B. Pomysł świetny, czemu nie. Ale kolega (ponownie pozdrowienia dla Macieja), zasugerował mi inny projekt – zdecydowanie prostszy w realizacji.
Postanowiłem dodać kolejny bardzo długi post. Love it or hate it, ale będzie dużo czytania. Wydaje mi się jednak, że czasem nawet warto przejść po raz kolejny pewne zebrane w innych miejscach tematy dla przypomnienia.
Nad moją miejscowością lata dużo samolotów, co często podziwiamy z dzieciakami. Kolejnym gadżetem z serii 'Nie jest mi to do niczego potrzebne, ale warto to zrobić’ jest informacja o przelatujących nad nami samolotach z wykorzystaniem Wemos D1 Mini oraz wyświetlacza OLED SSD1306. Przy okazji nauczymy się wiele rzeczy! Wstyd się przyznać, ale sam kilka tematów robiłem po raz pierwszy w życiu.
W tym wpisie przewiną się między innymi:
– Wemos D1 Mini
– OLED SSD1306
– pakiet Arduino IDE do obsługi Arduino i innych platform
– GitHUB
– ładowanie sketch’y (i co to w ogóle jest)
– kompilacja
– wgrywanie skompilowanego kodu na docelową platformę
Czyli dużo tematów. Gdzie nie sięgniesz tam sprawa zaczyna mieć zawsze jakieś głębokie korzenie 🙂
Efekt finalny będzie wyglądał jak na zdjęciu poniżej:
Oczywiście wiem, że jest FlightRadar24. Trzeba jednak siedzieć z komórką, albo otwartym komputerem, a my będziemy mieli informację na bieżąco wyświetloną na ekranie. No i zrobimy coś sami, dużo się przy okazji ucząc.
Wemos D1 Mini (i jego klony) jest już bardzo popularnym urządzeniem, do tego tanim. 
2-3 dolary za platformę:
– opartą o ESP-8266, 
– kompatybilną z Arduino, NodeMCU, MicroPython, 
– posiadającą WiFi i 
– posiadającą dużą bazę 'shieldów’ (czyli 'nakładek’ rozszerzających funkcjonalność) 
jest ceną naprawdę niską, nawet dla samej zabawy i poznania nowych możliwości.
Wyświetlacz to już kwestia 20 PLN, to również jednak moim zdaniem nie jest wielką barierą.
Zaczniemy od czegoś prostszego – wyświetlimy tekst na ekranie.
Podłączamy jak poniżej:
 
Jak widać, jest to banalnie proste:
GND -> GND
VCC -> 3.3V
SCL -> D1
SDA -> D2 
I to tyle jeżeli chodzi o Hardware. Super!
Przechodzimy do oprogramowania. Zaczynamy od Arduino IDE: https://www.arduino.cc/en/Main/Software. Alternatywą jest PlatformIO, nawet w przypadku tego projektu jest to ciut prostsze, ale skupmy się na ten moment na Arduino IDE.
Po pierwsze podłączamy D1 Mini to komputera. I teraz UWAGA – już kilka razy przekonałem, się, że dużo zależy od kabla USB -> Micro USB. Ileż razy kląłem, gdy sprzęt nie chciał się pojawić na liście, a wystarczyło wymienić kabel na porządny. Gdy już pojawi się nam nowy port COM, wypełniamy w sekcji Tools w Arduino IDE następujące parametry:

Chcemy połączyć się z ekranem OLED, a do tego będą nam potrzebne dodatkowe biblioteki. Przechodzimy do Sketch -> Include Library -> Manage Libraries.

Wyszukujemy dwie z pakietu Adafruit:
– Adafruit GFX
– Adafruit SSD1306
wybieramy je i instalujemy. Opcja będzie dostępna po ich zaznaczeniu.

Świetnie, brawo! Jesteśmy gotowi.
Czym jest sketch? Niczym więcej jak programem, który musimy napisać, później skompilować na język maszynowy i wgrać do naszego modułu.
Otwórzcie nowy plik i wklejcie poniższe. Nie wgłębiamy się w każdą z bibliotek, bo to mogłoby nam zająć miesiące ;), na ten moment wykorzystamy tylko to, czego potrzebujemy.

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 OLED(OLED_RESET);

void setup()   {
  OLED.begin();
  OLED.clearDisplay();

  //Dodajemy elementy do 'display listy’
  OLED.setTextWrap(false);
  OLED.setTextSize(1);
  OLED.setTextColor(WHITE);
  OLED.setCursor(0,0);
  OLED.println(„Cezarowy blogspot”);

  OLED.display(); //wyświetl zawartość pamięci ekranu na ekran 
  OLED.startscrollleft(0x00, 0x0F); //make display scroll 

void loop() {
}

Można wybrać Verify/Compile, co wyłącznie skompiluje nasz program, można od razu Upload, co wymusi kompilację i załaduje skompilowany sketch do D1 Mini.

Cierpliwie czekamy na zakończenie kompilacji…
I załadowanie programu do D1 Mini…
I od razu efekt!

Skoro proste tematy mamy za sobą, ruszamy od razu z czymś trudniejszym. A co! Do odważnych świat należy!

Po pierwsze, kolejne dwie biblioteki do pobrania. WiFiManager i biblioteka do parsowania (czyli czytania i przetwarzania) plików JSON.

Od razu piszę, że pomysł i kod nie jest mój, dostosowałem znaleziony przez Macieja kod do swoich potrzeb.

Zacznijmy od tego, że skorzystaliśmy z biblioteki Weather Station opracowanej przez zespół ThingPulse. W ramach dostępnych w niej przykładów znajduje się kod PlaneSpotterDemo, który przerobimy na nasze potrzeby.

Ze strony https://github.com/ThingPulse/esp8266-weather-station pobieramy ZIP z biblioteką, którą trzeba rozpakować do folderu jak poniżej.

Restart Arduino IDE i już mamy w Examples dostępny kod PlaneSpotterDemo.

U mnie potrzebny był 'delikatny’ tuning.

W parametrach wywołania strony, która pokazuje JSON trzeba podać promień okręgu jaki mamy sprawdzać, oraz jeżeli chcecie – wysokość graniczną samolotów Od/Do.

Przy okazji dowiecie się jak wyglądają pliki JSON, które można później obrabiać, czytać i zapisywać na przykład w Domoticz.

Na przykład:
https://public-api.adsbexchange.com/VirtualRadar/AircraftList.json?lat=LATZDomoticz&lng=LongZDomoticz&fDstL=0&fDstU=12, gdzie fDstL i fDstU oznacza odległość Od/Do jaka nas interesuje.

Kolejny: fDstL=0&fDstU=12&fAltL=5000&fAltU=45000 interesują nas samoloty, które są w odległości od zera do 12 kilometrów, na wysokości od 5 do 45 tysięcy stóp.

Aby zobaczyć co lata obok lotniska na Balicach, wystarczy sprawdzić adres: https://public-api.adsbexchange.com/VirtualRadar/AircraftList.json?lat=50.0769780&lng=19.7881190&fDstL=0&fDstU=100

W ogóle – nazwy parametrów to jak widać fDst, L oraz U oznacza limit dolny oraz górny, S – zaczynający się od – jeżeli szukacie konkretnych modeli samolotów. Itd., itp. Dokładna dokumentacja wszystkich parametrów znajduje się pod adresem: http://www.virtualradarserver.co.uk/Documentation/Formats/AircraftList.aspx

Aplikacja o której tutaj mówimy pobiera właśnie dane z tej strony, przetwarza je, zapisuje w odpowiednich zmiennych i wyświetla na ekranie OLED.

Aby być pewnym, że moje parametry są poprawne, uruchamiam na jednym ekranie https://global.adsbexchange.com/VirtualRadar/desktop.html z moją okolicą, na drugim odświeżam wyniki https://public-api.adsbexchange.com/VirtualRadar/AircraftList.json?lat=50.0769780&lng=19.7881190&fDstL=0&fDstU=100 (podajecie oczywiście swoje współrzędne). Wtedy wiem, że to co mam na mapie pokrywa się z tym, co zawierają dane w formacie JSON.

Aby program zadziałał musimy prowadzić kilka zmian.

Po pierwsze, mam ekran SSD1306, także usuwam komentarz (czyli //) z jednej linii i komentuję tą z SH1106.

#include „SSD1306Wire.h”
//#include „SH1106Wire.h”

const String QUERY_STRING = „lat=LatZDomoticz&lng=19.562571&fDstL=0&fDstU=12”;

Autor podłącza piny trochę inaczej niż ja, również musiałem to zmienić.

//const int SDA_PIN = D3;
//const int SDC_PIN = D4;
const int SDA_PIN = D2;
const int SDC_PIN = D1;
SSD1306Wire     display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);
//SH1106Wire      display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);
Autor korzysta z biblioteki WiFiManager i stara się automatycznie podłączyć do dostępnej, otwartej, sieci. Ja musiałem się podłączyć do swojej, opatrzyłem więc komentarzem następujące linie i podałem w funkcji WiFi.begin swoje dane sieci – nazwę i hasło.

//  WiFiManager wifiManager;
// Uncomment for testing wifi manager
//wifiManager.resetSettings();
//  wifiManager.setAPCallback(configModeCallback);
//or use this for auto generated name ESP + ChipID
//  wifiManager.autoConnect();
//Manual Wifi
  WiFi.begin(„WiFiID”, „Password”);
//  String hostname(HOSTNAME);
//  hostname += String(ESP.getChipId(), HEX);
//  WiFi.hostname(hostname);

  // Setup OTA
//  Serial.println(„Hostname: ” + hostname);
//  ArduinoOTA.setHostname((const char *)hostname.c_str());
//  ArduinoOTA.onProgress(drawOtaProgress);
//  ArduinoOTA.begin();

Kompilacja powinna przejść bez problemu, ładowanie identycznie jak w przypadku pierwszego przykładu również.

TADAM! Mamy, działa, pokazuje!

Tak w sumie posiadając ekran otwierają się przed nami nowe możliwości eksperymentowania – z samych przykładów można się mnóstwo nauczyć i robić swoje małe (albo i duże) projekty.

Postaram się rozszerzyć ten wpis o kolejny, w którym dane wylądują w Domoticz, ale tak prawdę mówiąc, to muszę się tego najpierw sam nauczyć 😀

Powodzenia! Pozdrawiam serdecznie!

Sonoff POW – zmieniamy oprogramowanie na alternatywne i przy okazji przekonujemy się, że warto być upartym…

Dzień dobry! 
Podoba mi się coraz bardziej 'zakulisowa’ współpraca blogerów opracowujących te same tematy 😉 
Na stronie Raspberry Pi w praktyce kolega wspomniał o mnie, rozszerzając jedne z moich poprzednich postów – gniazdko S20 oraz Tasmota i MQTT, które to w sumie zacząłem pisać poniekąd pod jego wpływem, uważnie czytając jego bloga od momentu kiedy zaczął. Zmotywował mnie tym samym do wyciągnięcia Sonoff POW (ja mam wersję R1) z szafy i odrobienia pracy domowej 🙂
Ja akurat kupowałem Sonoff’a w Chinach, także czekała mnie zmiana oprogramowania, ponieważ standardowe nie współpracuje z Domoticz. Lutować nie umiem, to niestety fakt. Czasem proszę o przysługę kolegów, ale często udaje się zrobić to bez takiej potrzeby. Tak samo jak w przypadku gniazdka, tak i tutaj wystarczy trochę gimnastyki.
Po rozpakowaniu wystarczy odkręcić śrubkę, podważyć podstawę Sonoff POW i mamy do niego dostęp. W lewym górnym rogu mamy dostęp do naszych pinów. Patrząc w taki sposób z pierwszy z lewej to napięcie (VDD), prawy to uziemienie (GND). Pomiędzy nimi RX i TX, czyli Receive oraz Transmit – Odbierz, Wyślij.

BARDZO WAŻNA ZASADA! Zmiana oprogramowania (flashowanie) MUSI odbywać się przy WYŁĄCZONYM wysokim napięciu na Sonoff POW. Inaczej możemy (i zapewne tak będzie) w najlepszym przypadku spalić port USB w komputerze.

Konwerter podłączamy identycznie jak w przypadku Sonoff Basic i gniazdka S20.

I teraz, delikatnie dociskając kabelki, podłączamy programator do USB w komputerze, przytrzymując włączony przycisk w Sonoff POW, wprowadzamy go w stan programowania.
Korzystając z opisywanego już pliku flash.cmd, programujemy. Kilka sekund i gotowe.
Dla pewności, u mnie wygląda on tak:
Podstawiacie w nim swój port COM na właściwy.
Przynajmniej tak już jest, kiedy się wie jak to odpowiednio zrobić! Pięknie to wygląda, gdy się opisuje. Spędziłem kilka godzin w nocy poprzedzającej sukces, bez rezultatu. Szukałem na różnych forach dyskusyjnych co może być powodem (mam Sonoff POW V1, ale Revision 2) braku komunikacji. Za nic w świecie nie mogłem załadować Tasmota. Kombinowałem, knułem, nawet prosiłem o pomoc żonę (którą serdecznie pozdrawiam) – ja trzymałem kabelki, ona uruchamiała programowanie na komputerze. SonOTA (programowanie bez kabli Over The Air) nie znajdowało Access Point Sonoff. Nic! Poddałem się i poszedłem spać.
Kolejnego dnia przeszedł mi przez głowę niewybredny komentarz. 'A może, baranie’ zamieniłeś miejscami RX i TX?’. To nie mogło być tak proste… Ale jednak było! Tym razem programowanie przeszło bez problemu już za pierwszym razem. No szkoda gadać. Ale nawiązuje to do tytułu wpisu 😉

Dalej już poszło gładko. Termite, podanie danych WiFi dla pewności i Voila!

Wybieramy Module type jako Sonoff Pow.

PONOWNIE OSTRZEŻENIE. Po podłączeniu Sonoff POW do napięcia pracujemy już na 230 Volt. Czyli żartów nie ma, nieodpowiednia ostrożność może się skończyć śmiercią.

I od razu na stronie głównej pokazuje się:

Konfiguracja parametrów Domoticz:
Zgodnie z:

I wyniki na zakładce Utility:

Oraz Switches:

Wspaniały, rewelacyjny, profesjonalnie osiągnięty efekt na zdjęciu poniżej 😀

UWAGA! Z niewiadomych jak na razie przyczyn Domoticz pokazuje mi dane z 5-minutowym opóźnieniem. Kolega z zaprzyjaźnionego bloga zasugerował kalibrację (jak poniżej), ale niestety nie pomogło. Muszę sprawdzić konfigurację Mosquitto.

PowerSet 7 –  ja akurat podłączyłem żarówkę 7 Watt, kolega 60.
VoltageSet 240
CurrentSet 250

Pozdrawiam, powodzenia!

Wakacje… Przekonałem się po co był cały wysiłek włożony w Smart home :)

Byliśmy sobie na wakacjach. Nie jest ważne gdzie, nie jest ważne jak długo. Ważne jest to, że miałem zapewniony 'spokój ducha’.

Byłem pewien, że w domu spokój, niczego nie zapomniałem wyłączyć, okna i drzwi bezpieczne, przed domem nic się złego nie dzieje. Do tego – stały podgląd, monitorowanie. Nie żebym jakoś maniakalnie się obawiał czy sprawdzał. Ale po prostu mogłem.

A było tak, gdyż:

1. Codziennie rano, o wschodzie słońca Domoticz wysyła mi status temperatury i innych czujników w domu.

Czyli pierwsze wnioski:
– system działa
– czujniki działają
– internet działa

2. W każdym momencie mam dostęp do dwóch kamer w domu – jednej skierowanej na bramę wjazdową, drugiej skierowanej na cały dół domu. Druga w wersji z podczerwienią, także w nocy również widać co się dzieje.

Dodatkowo – obie wysyłają zrzuty z kamery co 10 minut na FTP, a ta z widokiem na bramę również e-mail z załącznikiem.

3. Owl – miernik energii. Jaki jest, taki jest, na pewno nie mierzy dokładnie co do Watt, ale ważny jest trend – jeżeli utrzymuje się na stałym poziomie – super. Nie zapomniałem wyłączyć żelazka, lodówka się nie zepsuła, nic przez 'przypadek’ się nie włączyło lub wyłączyło.

4. Jeżeli zapomniałem zamknąć drzwi – system mnie o tym poinformuje. Działa przez 1.5 godziny, żeby nie spamować, ale to raczej wystarczy na reakcję 😉

5. Czujniki dymu, czujniki zalania

Zawsze to jakiś komunikat w razie problemu.

6. ’Sprzęty’ wyłączone – cokolwiek jest podłączone do sieci – podaje mi status. Drukarka, konsole, laptopy.

7. Tryb 'Wakacje’. Jeżeli jest włączony – o losowej porze w nocy włączają i wyłączają się w przedziale czasowym światła w domu. Dla mnie wystarczające, zawsze można rozbudować o dodatkowe elementy – na przykład bogatsze e-maile komunikacyjne gdy tryb jest włączony.

8. Założony w czasie budowy alarm z powiadamianiem na GSM – obowiązkowy wręcz element, moim zdaniem.

Oprócz alarmu wszystko budowane samemu, powoli dokładając kolejne klocki do układanki. Koszty nie są jakoś specjalnie duże, w większości kupowałem produkty na promocjach, wyczekując okazji. Zresztą – pełen spis elementów wraz z cenami dostępny jest zawsze tutaj: http://cezarowy.blogspot.com/p/co-na-stanie-ma-cezar.html

Oczywiście nic nie zastąpi zdrowego rozsądku, sprawdzenia i pamięci, ale taki status domu jest dla mnie naprawdę ważny i mnie uspokaja. Reasumując – naprawdę jestem zadowolony z czasu który poświęciłem na naukę, konfigurowanie, instalację, testowanie, programowanie. Było warto!

Nowe gadżety do okiełznania ! Sonoff POW, Sonoff S26, OLED

Urlop chwilę trwał. A podczas niego poczta nie próżnowała! Możecie się wkrótce spodziewać opisów następujących urządzeń:

– czujniki odległości
– Geekcreit NodeMcu Lua ESP8266
– Geekcreit OLED 0.96 cala, rozdzielczość 128 x 64 pixele

– nowe gniazdka Sonoff  S26

– Sonoff POW V1

Czeka mnie lutowanie, flashowanie, wgrywanie, kasowanie, testowanie, sprawdzanie. Czyli to, co tygrysy lubią najbardziej 😀

Aktualizacja wersji Mi Home

Dobry wieczór!

Zostałem dzisiaj mile zaskoczony przez Xiaomi. 
Przemodelowali swoją (całkiem już moim zdaniem dobrą) aplikację Xiaomi Mi Home. Wersja 4.8.1 dostarcza kilka ciekawych zmian i nowości.
Pomiędzy nimi znajdują się:
– nowy pasek statusu
– podział urządzeń na typy (włączniki, światła, czujniki, itp.)
– usunięto Ulubione
– możliwość wyświetlania urządzeń w formie 'siatki’ albo listy
– zmiany w wyglądzie, prezentowanie skrótów
Aktualnie prezentuje się to wszystko jak na zrzutach ekranu poniżej. 
Skoro nie mamy Ulubionych, to aktualnie pierwsza zakładka pokazuje nasze wszystkie urządzenia. Jak dla mnie jest czytelniej – ikonki są schludne (poniżej prezentowane jako Grid – 'Siatka’), prezentują wyraźnie status. Wcześniej aby dowiedzieć się jakie na przykład jest ciśnienie trzeba było wejść na konkretny termometr/barometr.

Z jakichś powodów w sekcji 'Security’ znalazł się repeater sygnału WiFi i Wireless Switch 😉

Czujniki to na przykład temperatura, czujniki ruchu, otwarcia/zamknięcia drzwi, zalania.

W razie potrzeby możemy przejść szybko do żądanej sekcji.

A poniżej nowe Info Center, czyli informacje dostępne po rozwinięciu górnego paska z informacjami. Na razie nie widzę możliwości konfiguracji tego, co ma się tu pojawiać. Czyżby autorzy domyślnie wrzucili tam wyłącznie temperaturę? Zwróćcie uwagę na ładne ikony, ale i brak spacji po typie pomiaru. Czyli na przykład Humidity59%. Zapewne wkrótce zostanie wypuszczona mała poprawka.

Reasumując – coś się dzieje 🙂 Moim zdaniem zmiany na plus. Ale ja jestem mało obiektywny i raczej z tych nie marudzących.