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.

Kopia bezpieczeństwa InfluxDB

Ostatnio, po przeniesieniu systemu na dysk SSD, dorzuciłem tam też instalację InfluxDB i Grafana. Niestety musiałem się pożegnać z historią, z powodu problemów z wykonaniem kopii bazy InfluxDB. Chciałbym tego uniknąć w przyszłości, dlatego do swoich backup’ów dorzuciłem InfluxDB. Jak wyglądał poprzedni plik opisywałem tutaj: https://cezarowy.blogspot.com/2017/11/kopia-bezpieczenstwa-bazy-folderu.html

Tym razem musiałem zrobić trochę inaczej, gdyż Influx zapisuje backup w kilku plikach. Chciałem mieć jeden, ładni ułożony w folderach, tak jak poprzednie – Domoticz, HABridge.

Założyłem więc dodatkowy folder, gdzie wykonuje się backup bazy, później kompresuję ją do innego folderu. Dodałem na końcu skryptu wykonującego kopię następujące linijki:

#Backup InfluxDB
sudo rm /media/Dysk/Influx/*.*
sudo influxd backup -portable -database domoticz /media/Dysk/Influx/
tar -zcvf /media/Dysk/Influx_backup/Influx_$TIMESTAMP.tar.gz /media/Dysk/Influx/
/usr/bin/find /media/Dysk/Influx_backup/ -name '*.tar.gz’ -mtime +31 -delete

Tasmota i MQTT w Domoticz

Dzień dobry. A może dobry wieczór?

W jednym z poprzednich wpisów opisałem sposób załadowania alternatywnego (albo głównego – zależy od podejścia) oprogramowania do sprzętów Sonoff. Piszę sprzętów, ponieważ ich oferta jest dość bogata i stale się powiększa. Sonoff Basic, Sonoff TH (z termometrem), Sonoff Pow (z pomiarem energii), Sonoff G1 (z miejscem na kartę SIM, dla kontaktu w miejscach bez WiFi), gniazda Sonoff S20, Sonoff Touch (naścienne włączniki zdalne), sterowane uchwyty do żarówek – 'żyć, nie umierać’, jak to mówią.

Do roboty!

Po pierwsze, jak zawsze, aktualizujmy nasz system. Ja ciągle opieram się na raspbian Jessie, w tym przypadku różnic jednak nie powinno być.

sudo apt-get update
sudo apt-get upgrade

I teraz chwila wstępu. Czym jest MQTT i czemu jest używany? Cytując Wikipedię : 'oparty o wzorzec publikacja/subskrypcja, ekstremalnie prosty, lekki protokół transmisji danych. Przeznaczony jest do transmisji dla urządzeń niewymagających dużej przepustowości. Poprzez ograniczenie prędkości transmisji, protokół zapewnia większą niezawodność. Protokół ten idealnie sprawdza się przy połączeniach maszyna-maszyna, w internecie rzeczy (IoT), w urządzeniach mobilnych, oraz tam, gdzie wymagana jest oszczędność przepustowości, oraz energii.’

Tasmota korzysta akurat z MQTT.

Czyli jest serwis, który nasłuchuje, oczekuje i wysyła pewne komunikaty. W Domoticz obsługa tego protokołu jest zaimplementowana w szczątkowy sposób, ale jest. Jeżeli chcielibyśmy z niego korzystać w większym stopniu, musimy się przygotować do przejścia na Home Assistant.

Przystępujemy do instalacji Mosquitto, najpopularniejszego brokera na Raspberry Pi.

sudo apt-get install mosquitto mosquitto-clients

W sumie tyle – już działa 🙂
Wystarczy skonfigurować użytkownika, nadać mu hasło za pomocą komendy:
sudo mosquitto_passwd -c /etc/mosquitto/passwd [username]
I możemy 'podsłuchiwać’ co się dzieje na naszym kanale.
Komenda która podsłucha wszystkie kanały to:
mosquitto_sub -h localhost -t „#” -u „username” -P „password” -v
’#’ Oznacza wszystkie w tym przypadku.
Przy okazji – ponownie podziękowania dla Macieja za pomoc przy ogarnięciu tematu.
Jak widać – komunikaty już sobie 'latają’. Obrazek trochę wyprzedza późniejszą konfigurację – bez skonfigurowania MQTT na Sonoff żaden komunikat oczywiście nie zostanie wysłany…
Skonfigurujmy Domoticz, aby obsługiwał MQTT.
Zaczynamy od Hardware, dodajemy 'MQTT Client Gateway with LAN interface’, podając tam dane brokera MQTT. Podajemy IP, port (domyślnie 1883), wcześniej założonego użytkownika i hasło. Publish Topic zostawiamy na Out.
Następnie tworzymy Virtual Switch i zapamiętujemy jego IDX.
Jak widać, Domoticz już wysyła komunikaty:
Teraz skupimy się na naszym włączniku Sonoff i wgranym sofcie Tasmota.
Wchodzimy, przez stronę, w konfigurację i wybieramy Configure MQTT.

Podajemy nasze parametry MQTT.

Następnie Configure Domoticz i w Idx 1 podajemy IDX naszego Switcha. Jeżeli macie inne wersje Sonoff (z termometrem, licznikiem zużycia energii, itp.) musicie podać Wasze IDX odpowiednich czujników w Domoticz.

Po zapisaniu od razu można użyć przełącznika w Domoticz, będzie współpracował z MQTT.
Mission accomplished!
Ku pamięci (bardziej mojej). Można stworzyć pliki konfiguracyjne, jeżeli ich potrzebujecie.
sudo nano /etc/mosquitto/conf.d/mosquitto.conf

I kopiujemy:

# Config file for mosquitto
#
# See mosquitto.conf(5) for more information.

user mosquitto
max_queued_messages 200
message_size_limit 0
allow_zero_length_clientid true
allow_duplicate_messages false

listener 1883
autosave_interval 900
autosave_on_changes false
persistence true
persistence_file mosquitto.db
allow_anonymous true
password_file /etc/mosquitto/passwd

Coś jednak z tymi gadżetami wypadałoby zrobić… Na początek zdarzenia i powiadomienia na czujnikach…

Samo czytanie danych z czujników już jest fajne.

Dobrze by jednak było jakoś tym wszystkim sterować i wykonywać pewne zadania na podstawie danych zewnętrznych, innych czujników albo przełączników.

I tym zajmę się w tym i kolejnych wpisach.

Generalnie Domoticz ma kilka możliwości notyfikacji oraz wykonywania zadań:
– bezpośrednio na samych czujnikach
– schematy blokowe w Blockly
– skrypty Lua lub Python
– dzVents

Na początek pierwszy punkt. Każdy z czujników w Domoticz ma cztery przyciski:
– Log
– Edit
– Timers
– Notifications

Nas interesują w tym momencie dwa ostatnie.

Jak widać, jeżeli 'pod nimi’ jest cokolwiek stworzone, zapisane – kolor się zmienia. Znaczy to ni mniej ni więcej niż to, że gdzieś tam jest skrypt lub akcja, która ma zostać wywołana.

Tak w sumie to była jedna z pierwszych rzeczy jakie zrobiłem. Nawet nie w Domoticz, jeszcze wcześniej w małym systemie Pilight. Miałem wtedy podłączone na breadboard tani nadajnik i odbiornik, gniazdka 433MHz zakupione w Biedronce i byłem zafascynowany tym, że mogę je zdalnie włączyć z poziomu Raspberry Pi. Jak tak patrzę, to wiele się przez te dwa lata zmieniło.

Ok, dość sentymentalnych wspomnień. Cel – włączyć światła przed domem godzinę po zachodzie słońca i wyłączyć zawsze o 22. I jeszcze do tego dostać powiadomienie na e-mail.

W polu Type możemy wybrać sposób 'wyzwalania’ zdarzenia. Przed/po wschodzie/zachodzie słońca, o konkretnej godzinie, w dniach parzystych/nieparzystych, miesięcznie (na przykład zawsze 3 dnia, albo w drugi wtorek miesiąca, itp.) oraz rocznie (na podobnych zasadach).

Ja wybrałem:
– włącz 1 godzinę po zachodzie słońca w każdy dzień tygodnia (można ustawić na przykład dni pracujące, weekend, albo wybrane konkretne dni)
– wyłącz zawsze o 22

No, to mamy za sobą. W lecie był czas, kiedy światła włączały się o 21:57 i gasły o 22 😉

Teraz powiadomienia e-mail. Przede wszystkim trzeba skonfigurować adres.

Setup -> Email jest odpowiednim miejscem na zrobienie tego.

Podajemy adres wyjściowy (z parametrami serwera pocztowego) oraz docelowy.

Gdy już to mamy za sobą – dalej proste ustawienie 'wyzwalacza’ zdarzenia. Jeżeli przełącznik przejdzie w stan On, mam otrzymać e-mail z konkretną wiadomością.

Jak poniżej:

Dobra, skoro to już mamy, kolejny temat.

Mamy sobie odkurzacz Roomba. Świetny, rewelacyjny patent, który od razu zaczął być używany u nas w domu codziennie. Jednak drażni mnie w nim jedna rzecz – zasilasz 'strzela’ co pewien czas. Nie lubię tego, denerwuje mnie to. Oczywiście rozumiem, że Roomba musi być jakoś ładowana, ale (mimo, że teoretycznie powinien) nie chcę aby zasilacz był włączony cały czas.

Tutaj pomocne było automatyczne wyłączenie przełącznika po zadanym czasie (Off Delay). Czyli – jeżeli kiedykolwiek zostanie włączony, uruchamia się timer, który wyłączy go po skończeniu odliczania. Wyłączenie i ponowne włączenie resetuje licznik.

Ok, kolejny temat z głowy.

Co by tu wymyślić…

O, na przykład temperatura. Jeżeli wzrośnie w którymś z pokojów – może warto o tym dostać informację i (jeżeli macie, ja akurat niestety nie) – włączyć klimatyzator. Albo dostać po prostu powiadomienie na e-mail.

Nic prostszego: przycisk Notifications na czujniku temperatury, później kilka kliknięć, gotowe.

Dobra. Ale skąd teraz pewność, że nie będę dostawał tych powiadomień co minutę? Przecież temperatura może taka być przez kilka godzin.

Aaaaa, na to też mamy radę: Setup -> Settings -> zakładka Notifications.

Na końcu strony mamy Notification Intervals. I dla czujników ja osobiście mam ustawione 12 godzin. Switches – natychmiastowo.

Czyli – co 12 godzin, jeżeli nie nastąpiła zmiana statusu, dostaję powiadomienia.

To samo zastosowałem w przypadku Xiaomi MiFlora.

Jeżeli wilgotność w doniczce jest mniejsza niż 50% – e-mail.

Można sobie w ten sposób zapewnić powiadamianie w przypadku otwarcia drzwi, przekroczenia zużycia energii, pogorszenia jakości powietrza (i docelowo włączenia oczyszczacza), przekroczenia ilości czasu spędzonego przy konsoli przez dziecko, włączenia jakichś urządzeń, itp., itd.

W kolejnym wpisie – proste Blockly i przejdziemy do dzVents.

Do zobaczenia. Albo 'do poczytania’.

Wracam do remontu… Co też spłodzi kilka wpisów!

Monit – abyśmy byli pewni, że Domoticz działa…

Ostatnio miałem dużo problemów z Raspberry Pi i kiepskim zapisem na kartę SD. Czego bym nie robił, po dwóch, trzech tygodniach system 'się rozjeżdżał’, finalnie kończąc na 'Memory fault’ i 'Kernel panic’. Kiepska sprawa. Co prawda na Raspberry Pi nie stoją żadne krytyczne usługi, ale ciągłe odzyskiwanie z backupu nie jest najciekawszą pracą, jaką można robić…

Na pewno pomogło przeniesienie systemu Raspberry Pi na dysk HDD, ale dodatkowo można dołączyć sprawdzanie statusu Domoticz – u mnie są problemy z pluginami i czasem lubi nie wystartować.

Pomaga w tym 'monit’ – oprogramowanie, które dba o to, aby nasze procesy były uruchomione, a w razie ich nieprzewidzianego zatrzymania – pojawiły się ponownie. Opisywał to już Łukasz Jokiel na swoim blogu, ale od wiedzy jeszcze nikt nie umarł, dlatego pozwolę sobie opisać to i u siebie.

Na początku zaktualizujmy system:

sudo apt-get update

sudo apt-get upgrade

I zainstalujmy 'monit’

sudo apt-get install monit

Od razu po tym możemy przystąpić do zmian w domyślnym pliku konfiguracyjnym. Jest dość pokaźny, w większości opatrzony komentarzami przy przykładach.

sudo nano /etc/monit/monitrc

Dopiszmy sekcję (zamiast HASŁO podajecie hasło jakim chcecie się logować do monit’a w przeglądarce):

set httpd port 8890 and
use address localhost  # only accept connection from localhost
allow localhost        # allow localhost to connect to the server 
allow admin:HASŁO # and require user 'admin’ with password 'monit’
use address 0.0.0.0    # only accept connection from localhost
allow 0.0.0.0/0.0.0.0
allow @monit    # allow users of group 'monit’ to connect (rw)
allow @users readonly # allow users of group 'users’ to connect readonly

Wszyscy sugerują na końcu, więc dodajmy na końcu również:

check process domoticz with pidfile /var/run/domoticz.pid
start program = „/etc/init.d/domoticz.sh start”
stop  program = „/etc/init.d/domoticz.sh stop”
if failed
   url http://127.0.0.1:80/json.htm?type=command&param=getversion
       and content = '”status” : „OK”’
   for 2 cycles
   then restart
if 5 restarts within 5 cycles then exec „/sbin/reboot”

UWAGA – ostatnia linijka mówi o tym, że jeżeli 10 (2*5) razy nie powiedzie się uruchomienie Domoticz, to nastąpi restart Raspberry Pi – bądźcie świadomi! Do tego – zmieńcie port Domoticz na odpowiedni o Was (127.0.0.1 jest adresem hosta lokalnego) – u mnie jest to 80, domyślnym w Domoticz jest 8080 (dziękuję za sugestię).

Teraz

sudo systemctl enable monit.service
sudo systemctl restart monit.service

Sprawdzamy. Pierwsza komenda sprawdzi poprawność pliku konfiguracyjnego, druga poda pełen status.

sudo monit -t

sudo monit status

Wygląda na to, że działa. Teraz wystarczy

sudo service domoticz stop

i zobaczymy czy monit przywróci go do życia spoza grobu.

Taram! Bangla!

Strona przedstawia się następująco:

Ważne – wpisujecie adres swojego Raspberry, po nim port 8890 (lub taki, jaki ustawiliście w skrypcie konfiguracyjnym monitrc). Jeżeli macie konfiguracje rozproszone (Domoticz na innej maszynie, albo chcecie monitorować procesy na innych Raspberry) – musicie wpisać odpowienie adresy IP i porty.

Mała sugestia – jeżeli będziecie chcieli kiedyś wyłączyć świadomie Domoticz (chcecie coś sprawdzić, dodać nowy plugin powoli, itp.) – monit od razu włączy serwis Domoticz. No, taka jego funkcja. Dlatego to, musicie po kolei wydać polecenia:

sudo /etc/init.d/monit stop 

sudo /etc/init.d/domoticz.sh stop
Zmieniamy, mieszamy, testujemy, sprawdzamy…

I później:

sudo /etc/init.d/domoticz.sh start

sudo /etc/init.d/monit start

Dla pewności, poniżej zawartość całego pliku:

  set daemon 120
  set logfile /var/log/monit.log
  set idfile /var/lib/monit/id
  set statefile /var/lib/monit/state
  set eventqueue
      basedir /var/lib/monit/events
      slots 100
   include /etc/monit/conf.d/*
set httpd port 8890 and
use address localhost
allow localhost
allow admin:xxxxxxxxxxxx
use address 0.0.0.0
allow 0.0.0.0/0.0.0.0
allow @monit
allow @users readonly

check process domoticz with pidfile /var/run/domoticz.pid
start program = „/etc/init.d/domoticz.sh start”
stop  program = „/etc/init.d/domoticz.sh stop”
if failed
   url http://127.0.0.1:80/json.htm?type=command&param=getversion
       and content = '”status” : „OK”’
   for 2 cycles
   then restart
if 5 restarts within 5 cycles then exec „/sbin/reboot”

Domoticz i Floorplan – graficzna prezentacja naszego domu i czujników

Dzień dobry!

Ostatnio spotkałem się na grupie Domoticz ze zdziwieniem na informację o fakcie, że w Domoticz można robić 'piętrowe’, graficzne plany domu.

A owszem, można i to dość prosto.

Kilka osób polecało https://floorplanner.com/ z którego skorzystałem. Nie mam talentu graficznego (mimo tego, że z tym zamysłem kupowałem PC 25 lat temu ;)), dlatego wygląda to tak jak wygląda… Ale działa 😀

Program jest do pewnego momentu (ograniczona ilość projektów, elementów graficznych, itp.) darmowy. W zupełności jednak wystarczy, ale wyrysować w nim plan pięter domu, dodać meble, ikony osób, okna, drzwi, itp. Po skończonej pracy wystarczy wyeksportować go do jpg – zostanie przesłany na e-mail.

Swoją drogą – widzę, że czeka mnie odświeżenie tego co mam już zrobione, ponieważ teraz można wszystko wyeksportować w ładnym rzucie izometrycznym.

Dobra, Floorplanner można zamknąć.

Teraz, w dowolny sposób jaki macie zdefiniowany (Samba, FTP, itp.) wgrywacie pliki z rysunkami pięter do /domoticz/www/images/floroplans/

Wracamy do naszego ukochanego Domoticz 😉

Sugeruję najpierw Roomplan.

Tutaj wybierając Add Plan możecie wpisać nazwę pomieszczenia, które będziecie edytować. Z jakiegoś powodu (dopiszę gdy sobie przypomnę…) zakładałem je ze znakiem dolara przed nazwą… Zapewne po to, aby nie były widoczne w innych miejscach.

Po zdefiniowaniu tego co potrzebujecie, możecie wybrać nazwę pomieszczenia i z listy rozwijalnej na samym dole dodać urządzenia, które w danym miejscu się znajdują. Tak możecie zbudować listę tego, co macie w sypialni, łazience, salonie, itp. Na liście znajdują się wszystkie dostępne w Domoticz urządzenia, czujniki, sceny.

Teraz Setup -> More Options -> Plans -> Floorplan i wpisujemy piętra które nas interesują, wskazując przy okazji ich lokalizację w folderze Domoticz.

Po wybraniu piętra, z listy Plan możecie przypisać pomieszczenia do pięter. Po przypisaniu możecie obrysować kształt pomieszczenia, później przed 'dwuklik’ będziecie mogli je zbliżyć na ekranie.
Gdy wybierzecie nazwę pomieszczenia, w lewym górnym rogu pojawią się przypisane wcześniej czujniki i inne – wystarczy je przeciągnąć w odpowiednie miejsca i po skończonej pracy wybrać update.

Dla jasności – upewnijcie się, że to menu macie w ogóle włączone w Setup -> Settings…

 Później za pomocą guzika na dole możecie wybierać ten, który chcecie oglądać.

Oczywiście, tak dla pewności – wszystkie te ikony są interaktywne, można je przyciskać, temperatura jest aktualizowana na bieżąco, itp., itd.
Powodzenia!

Przechodzimy na Malinie z karty SD na dysk HDD/SSD…

Nadeszła pora…

Pora na zmianę głównego miejsca systemu Raspberry Pi. Wiele dobrego mogę powiedzieć o Raspberry Pi, ale na pewno nie to, że używanie kart pamięci (szczególnie przy wielu zapisach do loga, bazy danych, itp.) pozwala na bezstresową pracę. Ostatnio odzyskiwałem backup karty praktycznie co tydzień.

Jakoś tak się stało, że leżał mi mały dysk talerzowy 80GB ze starej PS3. Gdzieś, kiedyś w promocji kupiłem również aktywny hub USB. Niestety, napięcie na portach USB z Raspberry (nie chciałem modyfikować zmiennej max_usb_current) niby zasilało dysk, ale bardzo niestabilnie. Podłączyłem dysk do huba, hub do USB, podpiąłem zasilanie, ruszyło. Pierwszy sukces.

Na początku warto sprawdzić jak nasz dysk przestawia się w systemie, żeby przez przypadek nie sformatować czego, czego zdecydowanie nie chcemy 😉

sudo fdisk -l

Ok, jak widać mój dysk 80GB znalazł się pod /dev/sdb/. Pod /sda/ jest pendrive na którego zapisywane są backupy i leży część danych, na przykład z bajkami dla dzieci. Tak w sumie to warto będzie to niedługo przenieść na dysk, a backupy wypchnąć albo na FTP, albo w chmurę. Może kiedyś…

Skoro wiemy jaki dysk mamy sformatować, bierzemy się do pracy.

sudo fdisk /dev/sdb

I teraz po kolei komendy (po każdej literze Enter):

d – wyczyść dysk

n – new

 p – utwórz domyślną partycję

 1 – podaj numer partycji

w – zapisz zmiany

Po kolei (dinozaury może jeszcze pamiętają to wszystko ze starych komputerów, kiedy jeszcze nie było Windows i dyski trzeba było formatować z linii poleceń 😀 ):
1. Wymazaliśmy partycje z dysku, jeżeli jakieś były
2. Utworzyliśmy partycję domyślną
3. Podaliśmy dane domyślne – dla uproszczenia, oczywiście partycji można zrobić więcej, zmienić ich rozmiar…
4. Zapisaliśmy zmiany

Pora sformatować dysk.

sudo mkfs.ext4 /dev/sdb

Póżniej musimy dysk sparować z Raspberry Pi:

sudo mount /dev/sdb /mnt

I teraz sedno, synchronizacja naszej karty SD z dyskiem. rsync zachowuje wszystkie uprawnienia, restrykcje, itp.

sudo rsync -axv / /mnt

Kilka minut i mamy kopię karty na dysku.

Wypadałoby również powiadomić Raspberry Pi, że karta SD jest potrzebna tylko i wyłącznie do 'bootowania’, cały system jest już na dysku twardym.

To ważna różnica! Raspberry Pi 3 ma opcję jednorazowego przeprogramowania bitu OTP, aby bootowanie odbywało się bez użycia karty SD, ale osobiście się na to jeszcze nie zdecydowałem – po kilku tygodniach testów możliwe, że tak zrobię. Obciążenie karty SD jest jednak teraz minimalne i znacznie zwiększa bezawaryjność systemu.

Najpierw kopia

sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak

I zmieniamy plik cmdline.txt

sudo nano /boot/cmdline.txt

Zmieniamy wartość przy root i dodajemy na końcu rootdelay

root=/dev/sdb i na końcu rootdelay=5

Efekt:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sdb rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5

Brawo! Teraz pora wyedytować fstab, aby nasz dysk zawsze się mapował i system wiedział, że 'rootfs’ jest na HDD. Czyli używamy karty tylko na moment startu Raspberry Pi, później już wszystko odbywa się na HDD.

sudo nano /mnt/etc/fstab

Zamieniamy wpis przy karcie SD na nasz HDD, stary komentujemy:

/dev/sdb       /               ext4    defaults,noatime  0       1

U mnie wygląda to tak:
proc            /proc           proc    defaults          0       0
/dev/sdb       /               ext4    defaults,noatime  0       1
PARTUUID=376f54aa-01  /boot           vfat    defaults          0       2
#PARTUUID=376f54aa-02  /               ext4    defaults,noatime  0       1
Cudnie! Teraz 
sudo reboot
Chwila stresu i powinniśmy wystartować z dysku. Jak to informatycy piszą: 'U mnie działa’.
Mam nadzieję, że teraz żadnych rozjazdów w systemie nie będę już miał.
W przyszłości przejdę na dysk SSD, gdy uda mi się kupić coś fajnego, małego w dobrej cenie.

Xiaomi Air Purifier 2 – integracja z Domoticz

W końcu dotarł do nas Xiaomi Air Purifier 2. Udało się znaleźć go w dobrej cenie, wystarczyło poczekać 2 miesiące i już jest 😉 Smog na wsi nie jest tym, co tygrysy lubią najbardziej. Głównie chodzi o zdrowie dzieci.

Sprzęt, jak na Xiaomi przystało – dotarł w zwykłym pudle, bez setki kolorów, ale dobrze zapakowany. Miła niespodzianka – dostarczył go kurier.

Osobiście jestem bardzo zadowolony ze sprzętów tej marki. Działają niezawodnie, cechują się świetnym designem i łatwo się z nimi integrować.

Z tym oczyszczaczem jest podobnie – otwierasz, mówisz 'Ładne to’, włączasz, działa.

Po dodaniu do aplikacji (w standardowy dla nich sposób – podłączamy się do WiFi sprzętu i podajemy swoje dane WiFi) możemy od razu nim zarządzać.

Szybka aktualizacja 😉

I jesteśmy online!

Możemy oczywiście dodać widget do telefonu

Ale dobra, to było proste. Bardzo proste.

Teraz wypadałoby go zintegrować z Domoticz, to jest przecież moim głównym celem 😉

Według poradnika z forum Domoticz powinna zadziałać komenda jak poniżej.

sudo apt-get install npm sudo screen

Może i zadziałała, ale nie mogłem później zainstalować miio…

Jak się okazało – chodziło o wersję nodejs. Ruszamy więc z instalacją 'poprawnej’ wersji.

sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash –

sudo apt-get install -y nodejs

I już można:

sudo npm install –save miio

sudo npm install -g miio

Teraz już zadziała 'discover’ – czyli wyszukiwanie kompatybilnych sprzętów.

sudo miio –discover –sync

Po jej wydaniu musicie zobaczyć IP oczyszczacza i jego status, jak poniżej:

Skoro jest, to jedziemy dalej! Do odważnych świat należy.

Poradniki różnie radzą, niektóre są bardziej skomplikowane, inne mniej. U mnie zadziałało to co poniżej.

Dodajemy skrypt, który będzie wysyłał komendy do oczyszczacza. Ja się uparłem i wszystkie wrzuciłem do folderu /scripts, ponieważ jest archiwizowany co noc.

sudo nano /home/pi/domoticz/scripts/airpurifier.js

#!/usr/bin/node
/* eslint-disable */

// Set path to node modules miio
const miio = require(’miio’);

// No need to change any lines in this section
var deviceip = process.argv[2];
var secondarg = process.argv[3];
var thirdarg = process.argv[4];
function exit() {
process.exit(-1);
}

// Power On (on / off specified as true or false)
if ( secondarg === „power” ) {
        setTimeout(exit, 7000);
        console.log(’Sending Power’, thirdarg, 'command’);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setPower(JSON.parse(thirdarg));
})}

// Status
if ( secondarg === „status” ) {
        miio.device({
        address: deviceip
}).then(device => {
                stats = device.getProperties([ 'power’, 'mode’, 'aqi’, 'temperature’, 'humidity’ ])
                console.log(stats);
                process.exit();
})}

// Specify favorite manual fan speed (1 to 16) eg usage: fanspeed 16
if ( secondarg === „fanspeed” ) {
        setTimeout(exit, 7000);
        console.log(’Setting manual fan speed to:’, thirdarg);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setFavoriteLevel(parseInt(thirdarg));
})}

// Set fan mode option, specify: idle, auto, silent or favorite which needs to be set for manual speed control
if ( secondarg === „fanmode” ) {
        setTimeout(exit, 7000);
        console.log(’Telling device to use’, thirdarg, 'fan speed mode’);
        miio.device({
        address: deviceip
}).then(device => {
                return device.call(’set_mode’, [ thirdarg ])
})}

// Control the device led (specify as bright, dim or off)
if ( secondarg === „led” ) {
        setTimeout(exit, 7000);
        console.log(’Setting device led to:’, thirdarg);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setLedBrightness(thirdarg);
})}

// Switch the device buzzer on or off (specify as true or false)
if ( secondarg === „buzzer” ) {
        setTimeout(exit, 7000);
        console.log(’Setting device buzzer to:’, thirdarg);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setBuzzer(JSON.parse(thirdarg));
})}


Jeżeli wszystko zrobiliście poprawnie, komenda jak poniżej pokaże jego status:

node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 status

Próbować możecie z różnymi komendami:

node airpurifier.js 192.168.1.115 power true – Włączenie
node airpurifier.js 192.168.1.115 power false – Wyłączenie
node airpurifier.js 192.168.1.115 status – Wyświetlenie statusu
node airpurifier.js 192.168.1.115 led off – Wyłączenie diody led
node airpurifier.js 192.168.1.115 buzzer true – Włączenie sygnałów głosowych
node airpurifier.js 192.168.1.115 fanmode auto – Tryb Auto
node airpurifier.js 192.168.1.115 fanmode favorite – Tryb Ulubiony

node airpurifier.js 192.168.1.115 fanspeed 16 – Maksymalna prędkość wiatraka


No to teraz pora na Domoticz.

Mała aktualizacja!

Dla pewności i wyjaśnienia. Zaczynamy od zdefiniowania nowego Hardware!

Dopiero później na jego podstawie zakładamy dwa Virtual sensor’y.


Dla jakości powietrza – Custom Sensor

Dla temperatury i wilgotności – Temp + Hum


Zapisujemy ich (Devices) IDX
i wstawiamy do skryptu poniżej

sudo nano /home/pi/domoticz/scripts/xair2domoticz.sh

#!/bin/bash

# Get the data
data=$(node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 status)
# Sort it
temperature=$(echo „$data” | grep „temperature” | sed -e s/[^0-9.]//g)
humidity=$(echo „$data” | grep „humidity” | sed -e s/[^0-9.%]//g)
aqi=$(echo „$data” | grep „aqi” | sed -e s/[^0-9.]//g)

# Load it into Domoticz
curl -s „http://192.168.1.200/json.htm?type=command&param=udevice&idx=247&nvalue=0&svalue=${temperature};${humidity};0″
curl -s „http://192.168.1.200/json.htm?type=command&param=udevice&idx=248&svalue=${aqi}”

Nadajemy uprawnienia do uruchamiania:
sudo chmod +x /home/pi/domoticz/scripts/xair2domoticz.sh

I wrzucamy do crontab

crontab -e 
*/15 * * * * sudo ~/domoticz/scripts/xair2domoticz.sh
Działa. Łaski nie robi 🙂 U mnie nazywa się to Aqi (tak prawdę mówiąc to identycznie jak w  poradniku…). Temperatura i wilgotność w odpowiedniej zakładce.
Ok, dane już odbieramy. Teraz wypadałoby nauczyć się nim sterować.

Założyłem Selector Switch (na podstawie Hardware), zmieniłem wartości z domyślnych na:
– Off
– Auto
– Low
– Max
– Silent

Pozostało wpisać skrypt LUA. Nie będę cwaniakował – zmieniłem skrypt autora z forum Domoticz (http://www.domoticz.com/forum/viewtopic.php?t=15537)

Skrypt, na podstawie nazwy urządzenia i jego statusów w Domoticz, wysyła komendy do Xiaomi Air Purifier 2.

sudo nano /home/pi/domoticz/scripts/lua/script_device_xair.lua

commandArray = {}
if devicechanged[’Oczyszczacz powietrza’] == 'Auto’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 power true’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode auto’)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Off’ then
    os.execute (’sudo screen -S airpurifieroff -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 power false’)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Low’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode favorite’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanspeed 3′)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Max’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode favorite’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanspeed 16′)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Silent’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 power true’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode silent’)
end
return commandArray

I to by było na tyle. Działa, raportuje, oczyszcza. Mam mały problem z czasami nie działającymi ustawieniami Max i Low (komendy wysyłane z linii poleceń działają bez problemu, w powyższym skrypcie może muszę wstawić mały delay). Ale On, Off, Silent, Auto działa bez problemu.

Do tego wypadałoby jeszcze zrobić pobieranie statusu Włączony/Wyłączony i aktualizowanie w Domoticz – automatycznie się to nie dzieje.

Swoją drogą – warto było go nabyć.

Max2Play – czyli jak łatwo postawić serwer muzyczny MultiRoom

Postanowiłem zrobić mały remanent i przedefiniowałem zadania moich Raspberry.
Do tej pory wyglądało to tak:
– Raspberry Pi3 i na nim Domoticz, Logitech Media Server, InfluxDB + Grafana
– Raspberry Pi1 B i B+ jako PiCorePlayer’y
Mimo mocy Pi3, za dużo zapisów/odczytów szło na nią, co skutkowało dość częstymi problemami i koniecznością reinstalacji systemu/odzyskiwania z backupu.
Gdzieś podczas przeglądania internetu, grup, forów, wpadł mi w oczy Max2Play. Nie jest niczym innym niż 'nakładką’ na system, która w prosty sposób umożliwia zdefiniowanie komponentów związanych z odtwarzaniem muzyki w naszym domu. Zresztą, nie tylko muzyki, ale o tym później. Zainstalować i skonfigurować Logitech Media Server, owszem potrafię, ale nie pogniewam się, jeżeli ktoś/coś część roboty odwali za mnie. I to właśnie robi Max2Play.
Zdecydowałem, że Raspberry Pi3 będzie służyło wyłącznie do Domoticz i Squeezeplayer’a (jest podłączone po HDMI do amplitunera), Pi1 B+ będzie służyło jako Max2Play serwer oraz serwer InfluxDB i Grafana, reszta jako PiCorePlayer’y.
Do roboty!
Wystarczy pobrać obraz systemu ze strony https://www.max2play.com/en/max2play-image/#close, wrzucić na kartę i zacząć konfigurację.
W dosłownie kilka minut miałem:
– działający Logitech Media Server – wystarczyło wybrać opcję Install
– działający Airplay do iPhone/iPad
– działający na tym samym Raspberry Squeezelite Player.
– podłączony i skonfigurowany dysk zewnętrzny

Strona tytułowa pozwala wybrać wspieraną kartę muzyczną. Ja zrobiłem to oszczędnie i kupiłem tanią kartę muzyczną USB. Czyli powyższy krok pominąłem.

Strona startowa Max2Play

Strona z podstawową konfiguracją

Mamy możliwość wyboru instalacji i przeznaczenia naszego Rapberry. Od prostego odtwarzacza aż do pełnego Logitech Media Server

Informacja o zakończeniu konfiguracji serwera.

Na stronie Audioplayer możemy zainstalować i skonfigurować Squeezelite i Shairport (czyli AirPlay)

Dodatkowe opcje odtwarzaczy muzyki

Tu już po konfiguracji i z działającymi podstawowymi serwisami

I sam proces instalacji Logitech Media Server (Squeezebox Server). Jak widać – wszystko z automatu.
Jak widać – jest też możliwość instalacji Kodi/XBMC, aby mieć jeszcze więcej 'dobra’ na jednym Raspberry 🙂

Świetną cechą Logitech Media Server jest to, że sam odnajduje odtwarzacze z nim zgodne i pozwala odtwarzać muzykę, jeżeli tylko jest w zasięgu.

Raspberry Pi, Raspbian, Domoticz – od zera do bohatera…

W kolejnym (długim!) poście pozwolę sobie zająć się przygotowaniem Raspberry Pi do działania.

Pomocy na różnych stronach jest mnóstwo, przesadą byłby kolejny szczegółowy poradnik, skupię się więc wyłącznie na esencji i najważniejszych tematach, ważnych dla mnie z punktu widzenia prostej automatyki domowej za pomocą Malinki. Z czasem wpis się może zmieniać, ponieważ ciągle coś nowego dochodzi. Ostatnio na przykład HABridge, skoro już Alexa się zadomowiła.

Wpis jest długi i opisuje wiele tematów, może znajdziecie coś dla siebie.

Kwestia wyboru sposobu instalacji Raspbiana zależy już od Was, swego czasu korzystałem z NOOBS LITE, który wszelkie potrzebne do instalacji komponenty pobiera na bieżąco z sieci.

Ostatnio wolę jednak mieć przygotowany obraz jako plik .img i za pośrednictwem Win32 Disk Imager szybko wrzucić go na kartę.

Chwila podstaw, która mam nadzieję pomoże innym wkroczyć w ten świat.

Instrukcja – jak szybko postawić system, zrobić podstawową konfigurację, zrobić kopię bezpieczeństwa na przyszłość.

Podstawowa strona: raspberrypi.org. Tam powinien się udać każdy początkujący. W zależności od potrzeb mamy:
1. Możliwości ściągnięcia instalatora Noobs
– wersja pełna z danymi systemów od razu dostępnymi
– wersja Lite, zajmująca 40 Mb, resztę danych potrzebnych dla różnych systemów ściąga bezpośrednio z sieci
2. w przypadku instalacji Raspbiana – ostatnia dostępna stabilna wersja (w czasie pisania posta – Stretch), pełna ze środowiskiem graficznym albo Lite

Ja opieram się na pełnym obrazie Jessie (czyli poprzednim do Stretch) – jest to dla mnie osobiście najwygodniejsze i w mojej opinii ta wersja jest najbardziej stabilna. Wszelkie opisane tutaj programy i instalacje działają na każdej z wersji. Oprócz SSL w Domoticz na wersji Stretch, bez czego nie uruchomimy go! Wszystkie obrazy Raspbiana można pobrać z: http://downloads.raspberrypi.org/raspbian/images/.

W tym wpisie zajmiemy się:
– ogólnymi komendami do wykonania
– raspi-config
– Interface sieciowy
– Mapowanie pendrive + ntfs-3g
– Konfiguracja Samba
– Instalacja FTP
– Win32DiskImager

Nie opisuję każdej komendy dokładnie – poradników w sieci jest na tyle dużo, że mija się to z celem.

Jak zaczynamy?

– Pobieramy obraz systemu ze strony Raspberry Pi
– rozpakowujemy
– ja używam Win32 Disk Imager aby wrzucić do na kartę SD
– po zgraniu podłączam klawiaturę i kabel HDMI do TV

Do pierwszych dwóch punktów musimy podpiąć klawiaturę bezpośrednio do Raspberry – ssh (do zdalnego połączenia) jest domyślnie wyłączone za względów bezpieczeństwa. Później możemy się przenieść na komputer – będzie bardziej komfortowo.

1. Najważniejsza sprawa zanim cokolwiek rozpoczniemy. Zawsze, gdziekolwiek – zmiana hasła!

passwd

2. Konfiguracja

sudo raspi-config

Domyślnie (od pewnego czasu, ze względów bezpieczeństwa) SSH jest wyłączone, musimy je włączyć. Przynajmniej jeżeli chcemy dostać się do Pi zdalnie, nie klęcząc przed telewizorem czy monitorem.

Następnie dobrze ustawić strefę czasową.

Wybieramy Europe -> Warsaw

Ja jeszcze osobiście ustawiam Memory split na minimum.

Oraz Hostname na swój.

3. Kolejny temat to aktualizacja Raspbiana i komponentów, które mamy zainstalowane. Oczywiście, z wpiętym kablem z routera.

sudo apt-get update
sudo apt-get upgrade

4. Następnie – konfiguracja sieci WiFi, bo głupio tak z kablami Malina wygląda 😉 …

Ja osobiście używam edytora nano. Przy wyjściu, w celu zapisu – Ctrl + X, Y(es), potwierdzamy nazwę pliku.

sudo nano /etc/network/interfaces

Ja chciałem mieć połączenie przez Wifi na stałym adresie IP (192.168.1.200, czyli warto to skonfigurować na routerze!), a w przypadku podłączenia kabla sieciowego adres z DHCP (czyli z automatu), wpakowałem tam więc:

auto wlan0

iface lo inet loopback

iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.100
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Konfiguracja połączenia z routerem odbywa się w pliku wpa_supplicant.conf.

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

I tutaj:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid=”Cezar”
        psk=”TwojeHaslo”
        proto=RSN
        key_mgmt=WPA-PSK
}

5. Warto byłoby teraz zainstalować dodatkowe programy. Mnie się przydaje Samba (dostęp do udostępnionych plików), obsługa NTFS, FTP, Midnight Commander oraz (do Domoticz) arp-scan i speedtest.

sudo apt-get install samba samba-common-bin cifs-utils ntfs-3g mc proftpd arp-scan speedtest-cli -y

6. Skoro już mam czego potrzebuję – najwyższa pora na Domoticz! Przypominam, że instaluję na Jessie, także nie mam problemu z ssl na wersji Stretch!

sudo curl -L install.domoticz.com | bash

7. Tworzenie wirtualnych folderów. Mam podpięty pendrive, na który nie dość, że lądują backupy Domoticz, to jeszcze są piosenki córki i syna. Trzeba go podpiąć, jeżeli Raspbian sam go nie wykrywa.

Możemy się wspomóc:
sudo fdisk -l
oraz
df -h

Tworzenie wirtualnego folderu:

sudo mkdir /media/Dysk

U mnie pendrive pojawił się na sda, więc:

sudo mount -t auto /dev/sda /media/Dysk

Edycja fstab, gdzie znajdują się informacje o mapowanych dyskach, folderach.

sudo nano /etc/fstab

Dodaję na końcu

/dev/sda /media/Dysk ntfs-3g nofail,defaults 0 0

8. Konfiguracja Samba (czyli dostępu do plików)

Zainstalowaliśmy ją już wcześniej (punkt 5), teraz trzeba skonfigurować. Ot, taki prosty NAS. Bardzo prosty…

Dodajemy użytkownika/użytkowników:

sudo useradd Cezar
sudo smbpasswd -a Cezar

Uruchamiamy:

sudo nano /etc/samba/smb.conf

I konfigurujemy. Oczywiście wszelkie foldery, nazwy – dostosowujemy do siebie.

[global]

#PL znaki w SMB
display charset = utf-8
unix charset = utf-8
dos charset = 852

workgroup = DOM
server string = Serwer NAS
wins support = yes
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0

####### Authentication #######
security = user
map to guest = Bad User

[homes]
comment = Home Directories
browseable = no
read only = no
valid users = %S

[dysk_public]
comment = Server NAS 4 All
path = /media/Dysk/
public = yes
only guest = no
writable = yes

Ostatnie trzy parametry to: Publiczny – tak, Tylko goście – nie, Zapisywalny – tak.

Oczywiście dostosujcie go pod siebie, można definiować foldery dla użytkowników, nadawać uprawnienia, itp. itd. Dla mnie było ważne, aby każdy w domu mógł tam łatwo się dostać.

Restart serwisu i powinno działać:

sudo /etc/init.d/samba restart

8. Następnie nadanie praw do wykonania dla skryptu robiącego kopię baz i folderu www Domoticz.

sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup.sh

9. Bez Dashticz sobie już życia nie wyobrażam…

10. Zdalny dostęp do Raspberry i Domoticz, czyli Dataplicity. Ale to już opisywałem wcześniej.

11. bluez – potrzebny do Xiaomi Mi Flora

12. Logitech, a dokładnie instalacja odtwarzacza Squeezelite

13. HABridge

Po około 1.5 godziny mamy kompletny system.

Teraz sudo poweroff, kopia karty w Win32 Disk Imager i jesteśmy bezpieczni. W razie rozsypania się danych na karcie – szybki restore i jesteśmy gotowi do działania.

WAŻNE! Komenda Czytaj zapisuje dane Z KARTY NA DYSK, Zapisz – odwrotnie – Z DYSKU NA KARTĘ, czyli Zapisz może Wam namieszać, jeżeli nie używacie jej rozważnie!