środa, 28 lutego 2018

iPeng - sterowanie Squeezebox na iPhone

Lubię Logitech Media server. Dzielnie służy mi od dwóch lat, czy to zainstalowany samodzielnie, czy też przez Max2Play.

Sterowanie nim jest możliwe na kilka sposobów, czy to przez stronę na serwerze lokalnym LMS, Domoticz, ale również przez inne aplikacje.

Dedykowana aplikacja nie jest już chyba nawet dostępna w App store, a nawet gdy była - delikatnie mówiąc nie była najlepsza. W sukurs przyszła mi aplikacja iPeng. Świetny (chociaż płatny) kawałek programu do obsługi serwera, biblioteki oraz samych odtwarzaczy Squeezebox.

Po połączeniu z serwerem automatycznie (i, co ważne, na bieżąco) wykrywa dostępne odtwarzacze naszej muzyki. Jak przystało na obsługę Squeezebox odtwarzacze można grupować, odtwarzać na nich tą samą lub różną muzykę, w zależności od potrzeb. Wszystko intuicyjne, dostępne przez 'drag and drop'.


Dla każdego odtwarzacza, po wybraniu go można zdecydować co jest źródłem muzyki. Może to być zarówno nasza biblioteka, jak i...


...cała pula dostępnych stacji internetowych.


Aplikacja jest ładna, schludna, bez zbędnego przeładowania danymi. O funkcjach takich jak obsługa list odtwarzanej muzyki, shuffle, pogłaśnianie, itp. nie ma sensu pisać, bo są raczej oczywiste. Dostęp do serwera jest błyskawiczny, a jeżeli Logitech Media serwer zainstalowany jest na Rpi3 wszystko działa odpowiednio szybciej od standardowego 1B. Nie jestem zbytnim zwolennikiem kupowania aplikacji dla samego ich posiadania, ale w tym przypadku nie miałem oporów przy zapłacie. Zdecydowanie warto i obsługa mojego 'systemu multi room' jest dużo przyjemniejsza.

Polecam.

poniedziałek, 19 lutego 2018

Podłączamy Sonoff Basic. Do prądu i Domoticz!

Dawno, dawno temu kupiłem kilka przełączników Sonoff Basic. Jako że nie jestem najlepszy z lutowania, leżały sobie i czekały na lepsze czasy. I w końcu te czasy nadeszły! Kolega był na tyle uprzejmy, że przylutował mi piny do ich przeprogramowania.

Do tego okazało się, że kupiłem jakiś dziwny (no, przynajmniej dla mnie) konwerter USB-TTL, w którym nie byłem pewien gdzie jest 3.3V a gdzie 5V.

Nic to, w końcu się zabrałem zaryzykowałem, podłączyłem i okazało się, że wszystko zadziałało 'od strzału'. Miło, że niczego nie spaliłem...


Powyżej płytka wyjęta z Sonoff Basic, wyprowadzone piny i wpięte kable, przygotowany już do zmiany oprogramowania. Ja wgrywałem ESPEasy. Ludzie polecają również Tasmota, ale jako, że kilka urządzeń już na ESPEasy działa u mnie (termometr i czujnik wilgotności w garażu, czujnik smogu), wybrałem go ponownie.


Taki oto programator przyszło mi zastosować.

Podłączyłem go następująco (piny Sonoff liczę od czarnego przycisku):
RXI -> 3
TX0 -> 2
VCC -> 1
GND -> 4

Świetny opis znalazłem na stronie https://randomnerdtutorials.com/how-to-flash-a-custom-firmware-to-sonoff/


Podłączone, ruszamy z pracą! Co ważne, w momencie podania napięcia trzeba wcisnąć przycisk na dłużej (ten czarny, długi), aby wejść w tryb programowania.


Ze strony https://www.letscontrolit.com/wiki/index.php/ESPEasy pobieramy oprogramowanie (ja wybrałem wersję 147) po wypakowaniu do folderu i urchomieniu programu do flashowania wybrałem port COM (na którym zainstalował się konwerter USB), wielkość modułu (1024) i wersję softu (czyli 147).


Po chwili było po wszystkim.


I teraz mały problem. Znaczy - problem, nie problem. Sieć WiFi o nazwie ESP_0 nie pokazywała mi się przez dłuższą chwilę. Ja rozumiem startowanie, uruchomienie, itp., ale w pewnym momencie myślałem już, że coś się źle wgrało i miałem się zabierać znowu do wgrania ESPEasy. Jednak, finalnie - ruszyło.

Poniżej opis wszystkich formatek wraz z kodem w Rules.


Tutaj ważny jest w sumie WiFi status LED - jeżeli dioda jest dla Was ważna. Co ciekawe, wszystkie opisy sugerowały GPIO-14, u mnie zadziałał GPIO-13...


Tutaj definiujemy jak nasz Sonoff ma się kontaktować z Domoticz. Czyli, jak we wszystkich poprzednich przykładach - najpierw hardware (albo użyjcie któregoś, który macie), później na nim Dummy sensor i zapisujecie jego wartość IDX. Dzięki temu po włączeniu przyciskiem Sonoff, stan zaktualizuje się również w Domoticz.


Tutaj definiujemy na którym GPIO znajduje się połączenie przycisku (tego czarnego, długiego). No, w końcu ESP Easy nie wie do czego go wgraliśmy, musimy mu napisać.


W sieci (na przykład tutaj http://kostrzewinki.pl/sonoff-basic-systemie-domoticz/) można też znaleźć opis konfiguracji dodatkowych statusów ESP (na przykład moc sygnału WiFi), ale akurat mnie nie był potrzebny, dlatego z niego zrezygnowałem.

Teraz sekcja Rules. Dlaczego? Po zmianie na ESP Easy w standardowej konfiguracji nie można skorzystać z przycisku i jednocześnie sterować nim z Domoticz. Rules pozwala to zmienić.



on Przycisk1#Button=1 do
if [Przycisk#Relay]=1
gpio,12,0
else
gpio,12,1
endif
endon

on Przycisk#Realy do
if [Przycisk#Relay]=1
gpio,13,0
else
gpio,13,1
endif
endon

Teraz Domoticz. 


Najpierw sekcja Hardware i albo dodajemy nowy sprzęt, albo korzystamy z już istniejącego. Na nim Dummy sensor typu Switch.


Switch pojawi się na zakładce Switches. Masło maślane...

Teraz, po edycji przycisku, w On Action i Off Action wpisujemy komendy do włączenia i wyłączenia Sonoff. Jak widać - trzeba podać jego adres IP. Dobrze więc byłoby zadbać o to, aby jego adres w routerze nie zmieniał się, przypisać na stały adres w DHCP. 


http://192.168.1.110/control?cmd=GPIO,12,1

http://192.168.1.110/control?cmd=GPIO,12,0

Oł jes! Mamy Sonoff sterowany zarówno z poziomu Domoticz jak i przyciskiem! Świetna sprawa, ależ jesteśmy zdolni...


Jak widać - udało się nic nie spalić, bezpieczniki całe, Sonoff działa, żarówka świeci. Cel osiągnięty. Miał służyć do montażu w suficie podwieszanym i do sterowania oświetleniem, ale w międzyczasie znalazłem inne, dużo lepsze rozwiązanie. O tym już w kolejnym wpisie. Nadmieniam, że bardzo mnie ucieszyło to, co udało mi się znaleźć!

czwartek, 8 lutego 2018

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"

wtorek, 6 lutego 2018

Klucz Google Maps API do wykorzystania w Dashticz i Domoticz

Powitać!

W kilku przypadkach przydatny może okazać się klucz do API Google Maps. Na przykład w Dashticz, aby wyświetlić ruch drogowy w miejscach, które nas interesują, czy też w Domoticz, aby skorzystać z pluginu Travel Time

Po pierwsze, musimy udać się na stronę https://console.developers.google.com/apis/credentials/ i tam, jeżeli trzeba założyć konto developerskie.


Na ekranie który widać wybieramy listę aplikacji - u Was może być pusta, dlatego dodamy nową.


Za pomocą plusa wystarczy dodać nowy Projekt i nazwać go dowolną nazwą.


Następnie Utwórz dane logowania -> Klucz API.

To samo możemy uzyskać pod linkiem https://developers.google.com/maps/documentation/directions/get-api-key

Numer, który zostanie nadany później wrzucamy do CONFIG.js w Dashticz czy też w pluginach, które wykorzystujemy.

config['gm_api'] = 'AIzxxxxxxxxxxxxxxxxxxxxxx';

Edit: Czytelnik zasugerował, abym opisał, jak użyć tego kodu w Dashticz. Z chęcią :)

Po pierwsze, w sekcji konfiguracji musicie dodać:

config['gm_api'] = 'AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxx';

Druga część znajduje się w sekcji deklaracji zmiennych. Możecie ją wstawić na przykład przed var blocks = {}.

var maps = {}
maps.tychy = { width:12, latitude: 50.117067, longitude: 18.981058899999994, zoom:10 };

W sekcję kolumn wrzucamy:

columns[14] = {} //Maps
columns[14]['blocks'] = [maps.tychy];
columns[14]['width'] = 5;

A w sekcję ekranów na przykład:

screens[2] = {}
screens[2]['background'] = 'bg2.jpg';
screens[2]['columns'] = [14];

Ostatecznie powinna się pojawić mapa:


Zachęcam do pobrania pliku i spróbowania

poniedziałek, 5 lutego 2018

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 :D


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!

piątek, 2 lutego 2018

Czajnik Xiaomi z obsługą przez Bluetooth

Chyba powoli można mnie zacząć obwoływać fanem marki Xiaomi ;)

Teraz do kolekcji doszedł Xiaomi Mi Electric Kettle. Raz, że pora wymiany czajnika nadeszła, dwa, że ma kontrolę podtrzymywania ciepła wody, trzy - że ładny :D

W ogóle ich pomysł z wejściem w start-upy był świetny...

Czajnik jaki jest - każdy widzi, jak to mówią... Ten dotarł dobrze zabezpieczony, w estetycznym, ale minimalistycznym - jak przystało na Xiaomi - opakowaniu. Dla mnie plus - nie potrzebuję krzykliwych 'Super, Newest release, Outstanding' na pudełkach.




Po wyjęciu z pudełka - podstawka, czajnik oraz przejściówka - to jest niestety ciągle bolączka przesyłek z Chin... Kabel jest zawinięty w podstawce, można go rozwinąć.

Plastik bardzo przyjemny w dotyku, dobrze spasowany, stal w środku wydaje się dobra jakościowo. Na pewno trzeba będzie często czyścić i odkamieniać, ze względu na termometr zamontowany na dnie. Mamy 'twardą' wodę, kamień się osadza dość szybko.

Ogólnie nie ma się co rozpisywać, włączamy Bluetooth w telefonie/tablecie, uruchamiamy aplikację i przechodzimy proces parowania. Ważną różnicą jest to, że (jak to z Bluetooth), sparować możemy z


Czajnik możemy w aplikacji przypisać do wybranego pokoju/miejsca w domu.


Aplikacja po jej włączeniu i podłączeniu do czajnika podaje bieżącą temperaturę oraz możliwość wyboru temperatury i czasu utrzymywania podgrzewania.


Dodatkowo kilka opcji konfiguracyjnych do wyboru - czy podgrzewać wodę tylko po wybraniu przycisku oraz czy podgrzewać po wyjęciu i ponownym włożeniu do bazy.

Cudów nie ma - woda jest gorąca albo ciepła, tak jak chcecie. Jesteśmy bardzo zadowoleni.

Jedynym minusem jak dla mnie są chińskie opisy przycisków (wolałbym już obrazki) na uchwycie - trzeba pamiętać, że wrzątek bliżej rączki, podgrzewanie bliżej czajnika ;)