środa, 24 października 2018

czwartek, 18 października 2018

WinSCP - wygodna edycja skryptów na Raspberry Pi (i innych). Znalezione na forbot.pl

Na stronie Forbot.pl, a dokładnie w artykule https://forbot.pl/blog/jak-zdalnie-i-wygodnie-edytowac-skrypty-na-raspberry-pi-id27418 pojawił się fajny opis sposobu edycji plików (skryptów, plików do Pythona, konfiguracji) za pomocą WinSCP.

Nie śmiem wklejać nawet kawałka, zachęcam do przeczytania, dowiecie się z niego:
- po co WinSCP
- jak ułatwi edycję plików
- jak skonfigurować, aby współpracował z edytorem, który będzie najbardziej przydatny.

Ja (wstyd się przyznać), przy pracy nad Dashticz edytowałem pliki na PC i wrzucałem je przez FTP. WinSCP ten proces po prostu automatyzuje. Tylko tyle i aż tyle.

dzVents - skrypt informujący o większym zużyciu prądu, gdy nie ma nas w domu

Aloha!

Od pewnego czasu miałem w głowie (w sumie jeden z podstawowych jakie powinienem napisać!) skrypt w dzVents:
- sprawdzam zużycie prądu w domu i gdy jest zbyt duże o zadanych godzinach, w danych dniach - wyślij mi e-mail. W dniach tygodnia i w godzinach o których przeważnie jesteśmy w pracy.

Dlaczego? A może zapomniałem o włączonym żelazku? A może włączyło się coś, co nie powinno?

Z tego to oto powodu system powinien:
- od poniedziałku do piątku w godzinach 8:15 - 15:00 sprawdzić zużycie prądu
- jeżeli jest wyższe niż 400 Watt ma mi wysłać e-mail z powiadomieniem

-- Author: Adam Sobczak
-- Date created: 2018-10-18
-- Script takes current energy reading, and when it's bigger than suggested on weekdays between 8:15 - 15:00 - notifies user.
return {
    on = {
        ['timer'] = {'every 15 minutes between 8:15 and 15:00 on mon,tue,wed,thu,fri'}
    },
    execute = function(domoticz)
    local Energy = domoticz.devices('OWL').usage
    local EnergyLimit = 400

    function round(num, numDecimalPlaces)
          local mult = 10^(numDecimalPlaces or 0)
          return math.floor(num * mult + 0.5) / mult
        end
   
    if (Energy > EnergyLimit) then
            domoticz.notify('Energia', 'Uwaga, zużycie energii większe niż zwykle: ' ..round(Energy,1) .. '!', domoticz.PRIORITY_NORMAL)
        end
    end
}

Tyle. Proste i działa. Powodzenia przy próbach zrobienia tego w Blockly ;)

czwartek, 11 października 2018

Raspberry Pi nie nadaje się na NAS! Ale możemy się dużo nauczyć przy OpenMediaVault...

Taki tytuł to typowy click-bait. Czyli link w który trzeba kliknąć, żeby doczytać o co chodziło autorowi.

A czemu nie - każdy może czasem taki zastosować :D

Ale tak serio - szukam czegoś na czym będę mógł zbudować NAS. Czyli w skrócie dysk stale dostępny w sieci domowej. Mógłbym iść do sklepu i kupić QNAP albo Synology, ale z czystej przekory nie chcę tego zrobić. Widziałem te systemy w akcji, są świetne, ale nie jestem przekonany czy ich potrzebuję w domu. Owszem, bezpieczeństwo danych i RAID1, ale czyż nie wystarczy backup danych w chmurze i dane trzymane dodatkowo na dwóch osobnych dyskach? Niby wystarczy, ale mamy 2018 rok i wypadałoby wykrzesać coś więcej z tych systemów niż tylko kopię danych.

Warto się przekonać czy faktycznie NAS jest dla nas (taki żart słowny, wybaczcie ;) ) instalując wcześniej system podobny, nie tak rozbudowany, ale wbrew pozorom całkiem ciekawy.

Akurat w domu leżało Raspberry Pi 3, które chwilowo nie miało żadnego zastosowania. 'Czemu by nie spróbować OpenMediaVault?' pomyślałem. I godzinę później miałem go już zainstalowanego na dysku :D

Nawiązując jednak do tematu posta - Raspberry Pi jest faktycznie najgorszym możliwym SBC (Single Board Computer) jaki można wybrać to tworzenia NAS. Forsowane od dłuższego czasu dzielenie sterownika USB z portem Ethernet jest kiepskim rozwiązaniem, ponieważ teoretycznie montowana karta Gigabit osiąga maksymalnie, w szczycie 330 Mbit. A to i tak tylko Raspberry Pi3B+, bo w 3B jest to realnie około 60mbit. Jak na NAS to zbyt mało. Brak SATA nie pomaga, konieczne jest połączenie wyłącznie po USB, który jest w standardzie 2.0.

Ale nic to - sprawdzimy chociaż jak działa OpenMediaVault i z czym się to je.

Celów jest kilka, sprawdzimy które uda się zacząć realizować:
- udostępnienie danych rodzinie (jakby co najmniej była zainteresowana, ale przyjmijmy, że jest..)
- uruchomienie maszyny do tworzenia kopii zapasowych w formacie 3-2-1 - czyli:
a) co najmniej trzy kopie danych
b) przechowywać te kopie przynajmniej na dwóch różnych nośnikach
c) jedną kopię danych przechowywać 'na zewnątrz'
- media server z muzyką, filmami rodzinnymi

Po pierwsze nauczyłem się używać Etcher. Żadne to osiągnięcie, ale wcześniej był to Win32DiskImager. OpenMediaVault domyślnie jest udostępniony w formacie, który czyta Etcher.



Ram tam tam, kilka minut i gotowe.


Domyślny użytkownik to admin, hasło openmediavault.

Po uruchomieniu naszym oczom ukazuje się bardzo ładny, schludny ekran z możliwością konfiguracji.

Jak widać, mamy w sekcji System dostęp do:
- Ustawienia główne
- Data i czas
- Sieć
- Powiadomienia
- Zarządzanie energią
- Monitorowanie
- Zaplanowane zadania
- Aktualizacje
- Dodatki - na przykład Plex, integracja z LDAP, NUT do integracji z UPS, backup na dysk USB i wiele innych


W System -> Network możemy mieć na przykład to co poniżej:


W Storage -> Disks, gdy tylko podłączyłem dysk 2.5 cala w kieszeni, od razu pojawiła się o tym informacja.

Tutaj mamy esencję naszego NAS od strony bardziej technicznej, ponieważ:
- zawiadujemy tu dyskami
- monitorujemy je (S.M.A.R.T.) - Self-Monitoring, Analysis and Reporting Technology - dzięki niej dyski potrafią same w pewien sposób (na podstawie wielu parametrów) ocenić swój stan i przed prawdopodobną awarią poinformować o tym użytkownika
- zarządzamy RAID (Redundant Array of Independent Disks) czyli macierz dyskowa, która przez odpowiedni sposób traktowania dysków i zapisu na nich może:
a) w RAID 0 - w zależności od ilości dysków, tworzy na nich wspólną przestrzeń, czyli przy dyskach 2TB + 2TB będzie mieli dostępne 4TB, ale UWAGA, w przypadku 1TB + 2TB będzie to 2xnajmniejszy dysk, czyli 2TB
b) w RAID 1 - informacje są zapisywane na zdefiniowanej ilości dysków jednocześnie, czyli na przykład w przypadku 3x2TB mamy dostępne 2TB, przy czym dwa dyski mogę ulec awarii, a my ciągle mamy dostęp do danych
c) tutaj wiele innych typów, ale wchodzimy raczej w obszary firm i mechanizmów tworzenia kopii danych i ich zabezpieczania, a chcę się skupić na tym, co ma sens w domu

RAID na Raspberry Pi nie ma najmniejszego sensu (po USB?), ale OMV można zainstalować na innym sprzęcie, z kilkoma portami SATA i wtedy skonfigurować RAID.

- File Systems, czyli formaty zapisu na naszych dyskach - FAT, FAT32, NTFS, ext4, itp.


System pozwala oczywiście na definiowanie użytkowników oraz grup i przyznawanie im odpowiednich dostępów, uprawnień.


W Storage -> File Systems mamy dostęp do wszystkich naszych dysków, partycji, itp., wraz z podanym systemem plików. Jak widać, karta SD sformatowana w ext4 (domyślny dla Linuxa), mój dysk w ntfs - najgorszy możliwy system plików do współpracy z Raspberry Pi i NAS - zdecydowanie najwolniejszy. Ale... Kompatybilny z Windows, więc na początek musiał wystarczyć.


Poniżej jedno z okien, w którym można przydzielić odpowiednie foldery do różnych protokołów dostępu do plików. Zależy co włączycie - czy będzie to Samba, FTP, NFS, DLNA - tutaj nawet nie jest potrzebna wiedza techniczna. Jeżeli zależy Wam wyłącznie na dostępie do plików - będzie to zapewne Samba, jeżeli ma do tego mieć dostęp odtwarzacz video/muzyki/telewizor - zapewne DLNA. Oczywiście nic nie stoi na przeszkodzie, aby tych protokołów było uruchomionych kilka.


Jak widać na obrazku pod spodem - zadziałało i mam dostęp do swojego folderu, gdzie mogę zapisywać i odczytywać dane.



W przypadki OpenMediaVault napotkałem na pewien problem. Może nie potrafiłem czegoś zrobić, może coś pominąłem, ale nie udało mi się zaktualizować za pierwszym razem systemu i podległych komponentów. Miałem ciągły błąd, musiałem zadziałać w inny sposób, czyli SSH. Po pierwsze, logowanie na konto root trzeba włączyć w konfiguracji OpenMediaVault. Użytkownik root, hasło podawaliście w momencie wstępnej konfiguracji.


Później już sudo apt-get update, sudo apt-get upgrade i wszystko ruszyło. Następne aktualizacje można już realizować z poziomu interface użytkownika.


OpenMediaVault ma również bogatą sekcję raportową. Przy okazji zobaczcie, jak wygląda oprogramowanie w języku polskim, co możecie wybrać w momencie logowania do systemu. Informacje o uruchomionych serwisach, obciążeniu procesora, dysku, pamięci, itp., itd.



Teraz będzie trochę bardziej 'niskopoziomowo', będziemy usuwać partycje, zakładać i formatować dysk w ext4. Chciałem zmienić domyślny (dla mnie) ntfs na coś szybszego pod Raspberry po USB.

Uruchamiamy sudo cfdisk i naszym oczom ukazują się informacje o partycjach, które aktualnie są na dysku. 

Kasujemy wybierając Delete, 


Później wybieramy New.


Później Quit


I Write, aby zatwierdzić zmiany.


Partycja gotowa, teraz trzeba ją sformatować. Można użyć albo sudo mkfs.ext4 /dev/symbol_dysku,


Albo zrobić to z poziomu OpenMediaVault:


Formatowanie:


I dysk gotowy do pracy:


Na koniec dodatek, przy którym może się wyklarować do czego tak naprawdę może nam się przydać NAS - serwer PLEX. PLEX jest serwerem/klientem multimediów, który pozwala skatalogować i udostępniać swoje zasoby. Przeważnie wyłącznie w sieci domowej, chociaż można wykupić opcje synchronizacji w mobilnymi urządzeniami (tablety, telefony), synchronizacja z chmurą, itp. Ewoluował (a jakże...) z XMB (Xbox Media Center - aktualnie KODI). Od razu piszę, że to raczej w formie zabawy, ponieważ wspomniane wcześniej ograniczenia Raspberry Pi wykluczają możliwość używania go szybko i sprawnie.

Instalujemy go z poziomu dodatków w OMV,


Włączamy, wskazujemy miejsce na repozytorium:


I od razu (no, gdy już dane zostaną skatalogowane) na stronie projektu mamy dostęp do filmów, muzyki, zdjęć. Można tym zawiadywać z poziomu klientów na tablet, telefon, ze strony internetowej - nie jest źle.


Przepraszam za potraktowanie tematu pobieżnie, ale każdy z nich można rozwijać na kilka kolejnych wpisów - co postaram się zrobić w miarę rozwoju systemu.

Podsumowując to, co udało mi się zrobić i jakie wnioski wyciągnąłem:
- OpenMediaVault to pokaźne, darmowe narzędzie, które spełnia moje wymagania
- Raspberry Pi się na NAS nie nadaje ;)
- OMV udostępni moje pliki w sieci domowej - protokół Samba, mogę mieć swój, zabezpieczony hasłem folder
- OMV udostępni pliki dla Xiaomi Mi Box czy też innych urządzeń Smart (których akurat nie mam w domu zbyt wiele...)
- OMV zrobi backup na dysk zewnętrzny, gdy go podłączę - tu pomogą pluginy
- miniDLNA czy też PLEX pozwolą zawiadywać biblioteką mediów
- możliwości raportowania oraz informowania powiadomią mnie o potencjalnych problemach

Moje kolejne przemyślenia były następujące:
- idę w tę stronę! Nie kupię Qnap ani Synology, zrobię NAS sam! Platformę już mam wybraną, na razie nie zdradzę tajemnicy, ale wszystko już przygotowane. Nadmieniam, że brałem pod uwagę na przykład HP Proliant Microserver, Dell Optiplex 960, platforma Atom.
- ze względu na to, że nie lubię marnowania energii, platforma ma być maksymalnie oszczędna i pobierać minimalne ilości prądu
- będę się opierał na OpenMediaVault albo DietPi - zobaczymy co będzie lepsze
- backup 3-2-1 będę realizował trochę inaczej
a) 3 kopie - dwie w domu, jedna w chmurze - zapewne Google Drive
b) dwa dyski - jeden na stałe w NAS, drugi podłączany co pewien czas aby synchronizować najważniejsze dane, albo podłączony do Raspberry w drugiej części domu - tu mi na zależy na czasie dostępu, a na zrobieniu kopii
c) kopia zewnętrzna na Google Drive
albo
kopia na kolejny dysk i przechowywanie go poza domem
- zainteresuję się Docker'em, aby serwisy stawiać w nowoczesny, bezpieczny sposób

Może być ciekawie :D Pozdrawiam!

piątek, 5 października 2018

Grafana - tworzymy Dashboardy

Jakiś czas temu (jak sprawdziłem to ponad rok...) opisywałem sposób instalacji InfluxDB i Grafana - http://cezarowy.blogspot.com/2017/08/influx-grafana.html. Dopiero ostatnio się zorientowałem, że nie dopisałem kontynuacji tego artykułu - o tworzeniu wykresów. Niniejszym nadrabiam!

Najpierw musimy się dostać do samego serwisu. Jeżeli instalowaliście standardowo, to Grafana jest na porcie 3000, użytkownik to admin, hasło admin. Czyli na przykład http://192.168.1.200:3000.


Po zalogowaniu pierwszym miejscem do którego musicie się udać jest sekcja Configuration -> Data sources -> Add data source. Źródeł jest wiele, między innymi MySQL, Microsoft SQL oraz interesujący nas tutaj InfluxDB. 


Śmiało wybieramy (do odważnych świat należy) i konfigurujemy jak poniżej. Oczywiście, jeżeli zainstalowaliście InfluxDB na innym serwerze, odpowiednio wypełniacie pole URL. Nie zapomnijcie o polu Database, User oraz Password. Jeżeli robiliście to tak jak poprzednio opisałem, jest to domoticz/domoticz/domoticz. Szczyt bezpieczeństwa, którego oczywiście powinniście unikać ;)


Dobra, dążymy do czegoś, co jest przestawione poniżej. Wykresy, wskaźniki, itp. Grafana jest bardzo przyjemnym w pracy narzędziem. Obsługuje Drag and Drop, skalowanie wykresów, układanie ich w sekcje, ustalanie wartości progowych, alarmowanie. Kwestia poświęconego czasu i zaangażowania.


Nadmieniam, że jestem samoukiem w tym temacie, mogę się mylić, pewne rzeczy robić w sposób bardziej skomplikowany niż nakazuje sztuka, ale... Działa :D

Jedziemy.

Po pierwsze - Create -> Dashboard -> Graph.


I tutaj się na początku zatrzymałem na dłuższą chwilę, bo jakoś nie mogłem zaskoczyć co i jak mam zrobić.


Klikamy Panel Title -> Edit.


I powoli temat zaczyna się rozjaśniać, Grafana automatycznie przenosi nas na zakładkę Metrics, gdzie będziemy budować proste (lub bardziej zaawansowane) kwerendy (czyli zapytania) do bazy danych. Mój konik, więc mogę się trochę rozpędzić i używać niezrozumiałych słów ;)


Aby sobie zbyt życia nie komplikować na początku, wybieramy 'select measurement'. Zawartość tego pola jest oczywiście zależna od miar (czyli na przykład Ciśnienia, Temperatury, Wilgotności) jakie przesyłacie do InfluxDB z Domoticz.


Następnie (po 'where') wybieracie jakiego identyfikatora chcecie użyć. Idx lub nazwa. Ja osobiście wybieram nazwę, ponieważ czujniki 433MHz mają tendencję do zmiany idx po wymianie baterii, co zmusiłoby mnie do zmiany zapytań za każdym razem. W tym przypadku wystarczy podmienić czujnik w Domoticz i sprawa załatwiona. No i oczywiście kiepsko będzie się wybierało, jeżeli 10 czujników nazwiecie Temperatura, ale to raczej mało logiczne.


Po podjęciu decyzji wybieramy wartości czujnika jaki nas interesuje. Powiedzmy, że u mnie jest to Temperatura-Salon. 


Jest możliwe, że jakieś dane już zobaczycie, ale bardziej prawdopodobne jest to, że będziecie musieli wybrać zakładkę Display. Wybieracie typ wykresu (Bars, Lines, Points) i teraz kolejny temat, który sprawiał mi na początku problemy. W salonie mam czujnik Xiaomi Mi Flora, który jest ustawiony tak, aby raportował dane co godzinę. Czyli nie ciągle. Na początku pojawiały mi się kropki i nie wiedziałem co z tym zrobić. A wystarczy wybrać opcję Null value -> Connected. Jeżeli macie na przykład termometry 433MHz, czy inne, raportujące dane ciągle - powinniście zobaczyć wykres od razu.


Jeżeli chcecie widzieć wartości średnie, minimalne oraz maksymalne w którymś z miejsc obok wykresu - operujcie check-boxami w sekcji Options oraz Values, jak poniżej. Nazwę zmienimy na zakładce General.


Fajnie. Pierwszy wykres gotowy, wracamy na Dashboard ikoną w prawym górnym rogu.

Jak zdefiniować wykres, na którym będzie więcej niż jedna wartość? Na przykład tak jak poniżej - wilgotność i temperatura.


Trzeba na zakładce Metrics dodać kolejną kwerendę - w kolejności A, B, itd. W ten sposób możecie dać porównania temperatury w kilku pomieszczeniach w domu, aby wiedzieć, gdzie w jakimś momencie drastycznie się różni.


Kolejna funkcjonalność dodana. Teraz zegary, z angielskiego Gauges. W tym przypadku musimy ponownie założyć kolejny Panel, tym razem Singlestat.


Powiedzmy, że chcę zobaczyć aktualną temperaturę w salonie i ustawić sobie przedziały, gdy jest zimno, komfortowo i ciepło. Również błyskawiczne do wyklikania, chociaż finalnie z mnóstwem opcji.


Zaczynamy oczywiście od kwerendy na zakładce Metrics. Wybrałem wartości jednego z czujników temperatury.


Skoro się pojawiła, to teraz możemy zacząć ubarwiać. Wybór należy do Was, ja zmieniłem:
1. Value
- Stat na Current, czyli aktualną. Można wybrać minimum, maksimum, średnią w danym przedziale czasowym
- Unit - stopnie Celsjusza
2. Coloring - wybór, że tak powiem, sposobu kolorowania na podstawie wartości, czyli:
- Background - jeżeli tło ma się zmieniać wraz z wartościami
- Value - kolor wartości zmienia się wraz z nią
- Thresholds - brzegowe wartości
- Colors - kolory, jakie mają reprezentować nasze przedziały
3. Gauge
- Show - czy pokazywać w ogóle zegar?
- Min - wartość minimalna
- Max - wartość maksymalna
- Thresholds labels - czy pokazywać brzegowe wartości?
- Thresholds markers - czy pokazywać znaczniki wartości brzegowych?

W moim przypadku, w pokoju zegar pokazuje wartości od 10 do 40 stopni Celsjusza, pierwszy zakres zaczyna się od 10 stopni, kończy na 18 (niebieski), kolejny od 18 do 23 (zielony), ostatni od 23 do 40 (czerwony).

Ciekawa jest zakładka Value Mappings, gdzie możecie zamiast wartości pokazać tekst - przykładowo od 10 do 17 - 'Jest chłodno', itd.

Kolejna funkcjonalność - w prawym górnym rogu widzicie ikonę zegara. To tam można zmienić zakres pokazywanych danych. A wybór jest duży, bo oprócz własnego zakresu, są między innymi:
- Wczoraj
- Ten dzień w zeszłym tygodniu
- Poprzedni tydzień
- Poprzedni miesiąc
- Poprzedni rok
- Ten tydzień (wartości z dni przyszłych puste)
- Ten tydzień do dnia dzisiejszego
- Ten miesiąc
- Ten rok
- Ostatnie 15 minut
- Ostatnie pół godziny
- Ostatnie 24 godziny
- itp., itd.

Jest co analizować :D


Wykresy miesięczne wyglądają na przykład tak:


Zwróćcie uwagę na pewną rzecz - zdefiniowałem wiersze, w które możecie przesunąć Wasze wykresy i zwijać je w razie potrzeby:
- Energia
- Powietrze
- Systemowe

Można to zrobić poprzez dodanie Rows, dostępnego z Add New Panel.


Systemowe u mnie wyglądają tak:


Porada: Dla ułatwienia sobie życia, nie musimy każdego wykresu tworzyć od nowa, wystarczy wybrać Panel title -> More -> Duplicate i zmień jedynie zawartość zapytania w nowo powstałym wykresie.

W sumie na ten moment to tyle, wiele teraz zależy od Waszych potrzeb, zaangażowania, pomysłowości i zmysłu estetycznego. U mnie ten zmysł często przysłania pragmatyzm, także wybaczcie, jeżeli któryś z elementów wydaje się brzydki.