sobota, 21 października 2017

ESPEasy, Wemos i Domoticz - ABC podłączenia

W sumie (no, jeżeli chodzi o temperaturę) brakowało mi monitorowania garażu. Termometry na 433MHz nie sięgają tak daleko, jak się okazało i Xiaomi nie podołało z zasięgiem. W garażu mam jednak jakieś resztki zasięgu Wifi.

Jest przecież esp8266! Do tego są różne wersje - na przykład Wemos D1 mini, a na 'znanym chińskim portalu' znalazłem jego alternatywy wraz z 'shield'em', który zawiera DHT11. Nie jest to może i najlepszy termometr na rynku (delikatnie mówiąc), ale na moje potrzeby wystarczy, Do tego - łatwo się go łączy. Zestaw za kilkanaście złotych zawiera wszystkie potrzebne elementy. Przy okazji zakupiłem też Battery shield, ale to będę testował innym razem.






Jako że (jak pisałem) nie mam talentu do lutowania, muszę zaufać koledze, który mówił, że lutowanie było fraszką.


Skoro sprawy techniczne mamy za sobą, pora na oprogramowanie. Najwięcej słyszałem o ESPEasy, dlatego na nim się oparłem.

Zanim zaczniemy możemy w Domoticz stworzyć nowy element Hardware i Virtual sensor (to taka trochę pętla, bo tutaj musimy podać IP Wemos'a, które skonfigurujemy dopiero za chwilę, czyli możemy założyć, ale później i tak będziemy edytować). ZAPISUJEMY ID czujnika.



Na stronie https://www.letscontrolit.com/wiki/index.php/Main_Page jest odnośnik do ESPEasy. Przechodząc do niego skupmy się na sekcji Loading firmware - na czas pisania posta aktualna wersja to R120. Zostanie ona wkrótce zastąpiona przez wersję 2.0. Ale to przyszłość. Na razie jest R120.

Możemy doczytać więcej na https://www.letscontrolit.com/wiki/index.php/Tutorial_ESPEasy_Firmware_Upload, aby dowiedzieć się, że Wemos D1, Wemos D1 Mini oraz NodeMCU mają 4096k, Całkiem dużo. Do tego - są świetne dla początkujących, ponieważ mają konwerter USB do Serial. Czyli nie potrzebujemy żadnych programatorów - możemy podłączyć kablem USB Micro do komputera i zaprogramować flash.

Bezpośredni link do softu to: http://www.letscontrolit.com/downloads/ESPEasy_R120.zip

Jako że wszystkie moje komputery pracują na Windows, skupię się na tym systemie. Aby dowiedzieć się po podłączeniu na jakim porcie znalazł się nasz Wemos, musimy przejść do linii poleceń cmd i wpisać mode.

TU UWAGA. Zmarnowałem prawie godzinę, zanim okazało się, że kabel, który teoretycznie działał i ładował, praktycznie nie umożliwiał rozpoznania sprzętu. Zmiana kabla i wszystko ruszyło.



Kroków jest sześć:

1. Znajdź odpowiedni plik do Twojego modułu. To już mamy za sobą. Wiemy, że to Wemos D1 Mini

2. Ściągnij plik zip i wypakuj go do wybranego folderu. Link podałem powyżej, także to też mamy już za sobą

3. Uruchom 'flash.cmd'. Otworzy się okno z trzema pytaniami


4. Wpisz port na którym zainstalował się Wemos. Tu - 3
5. Wpisz wielkość flash - tu 4096
6. Wpisz numer wersji - tu 120

Programowanie rozpocznie się


Po zakończeniu otrzymamy stosowany komunikat


Teraz pora na wyszukanie sieci ESP_0, która pojawi nam się jako nowa sieć w domu do wybrania.
Hasło to configesp

Później będziemy mieli możliwość wejścia na stronę ESP Easy, gdzie możemy już wybrać do jakiej sieci ma się podłączyć nasz moduł.


Po tym kroku nastąpi restart

Tadam! Jesteśmy już prawie, prawie w domu :D

Po wejściu na adres podany powyżej uruchomimy stronę ESP Easy.

Zaczynamy konfigurację! Ohoho!


Tutaj można (idąc po linii najmniejszego oporu) wypełnić tylko Name (nazwa naszego modułu), SSID i hasło musi już być wypełnione. Domoticz HTTP również ustawia się domyślnie, Controler IP i Port ustawiamy na nasz Domoticz. Tyle tutaj.

Teraz Devices oraz Edit, przy Task = 1.

W zależności od tego, czego używamy (no, ja shield z DHT) ustawiamy Device na wybrany czujnik.

I kolejno Name (Nazwa dla czujnika, mało ważne), Delay to interwał wysyłania danych do Domoticz i IDX czujnika Domoticz (jak to zrobić opisałem wcześniej), GPIO w tym przypadku ustawiamy na 2, Typ DHT w zależności od tego co mamy.

Jako że DHT 11 znane są ze swojej słabej jakości i różnego skalibrowania, przyda się czasem korekta. U mnie aż o 4 stopnie ;) Możemy to zrobić w polu Formula Temperature. Możemy tam wpisać '%value% -4'. Jest co prawda pole do tego celu przeznaczone w Domoticz, ale ono działa tylko dla natywnych czujników temperatury.

Po wybraniu Submit pokaże się nam temperatura.

I od razu, jeżeli dobrze skonfigurowaliśmy czujnik, dane w Domoticz.


Hura, hura, koniec! Mam temperaturę w garażu! Zapewne do czegoś się ta informacja przyda :)

piątek, 20 października 2017

Domoticz i koszty zużytego prądu

Człowiek uczy się całe życie. To pewne.

Mnie udało się dziś przez przypadek dowiedzieć jak Domoticz wylicza koszty zużytego prądu.

W sumie zawsze miałem to przed oczami, ale jakoś nigdy do mnie nie dotarło. Skoro można sumować zużytą energię, to powinna być też możliwość przeliczenia jej na pieniądz. I jest!

Zacznijmy od zdefiniowania taryfy. W Setup -> Settings, na zakładce Meters/Counters możemy podać wartość w naszym przypadku.


Później wystarczy wejść na Log czujnika. Może to być zarówno Owl jak i gniazdko (na przykład Xiaomi). Tutaj mamy raporty zużycia godzinowego. Teraz przechodzimy na Report.


I tu mamy interesujące nas wartości. Łącznie z kosztem zużycia.


Jedyny minus jest taki, że są to wartości miesięczne. Ale dobre i to!

Teraz tylko muszę sprawdzić jak to się ma do rzeczywistych danych i sprawdzić inne parametry z tym związane w Domoticz.

poniedziałek, 16 października 2017

Dodatek do Domoticz - Storm Report. Nasz, swojski, polski!

Cudze chwalicie, swego nie znacie...

A w tym przypadku jest się czym pochwalić, ponieważ nasz rodak, Łukasz Rybak, stworzył bardzo ciekawy dodatek do Domoticz - informacje o burzach i wyładowaniach atmosferycznych.

Akurat podobny dodatek już tu kiedyś opisywałem, ale implementacja Łukasza wydaje mi się dużo lepsza. Raz, że zawiera nie tylko informacje o ilości piorunów, ale także o innych anomaliach - wiatr, mróz, gorąco, opady. Dwa - powstała u nas, w Polsce, w oparciu o serwis http://burze.dzis.net/, jest więc specjalnie profilowana pod nasz rejon, co jest dużym atutem.

Nie tylko jednak pioruny! Łukasz pobiera też informacje o:
- mrozie
- upale
- wietrze
- opadach deszczu/śniegu
- burze
- cyklony

Jest tego jak widać dużo...

Aby zainstalować (co jest przy okazji dokładnie opisane w Wiki) wystarczy przejść do folderu \domoticz\plugins i wykonać

git clone --recursive https://github.com/lrybak/domoticz-storm-report

a następnie zrestartować serwis Domoticz.

Ważne jest aby wersja Domoticz była dość świeża (najlepiej ostatnia stabilna - ja akurat sprawdzałem na 3.8153), ponieważ dopiero bodajże od dwóch stabilnych możliwe jest dodawanie własnych pluginów.

Kolejnym ważnym krokiem jest rejestracja na stronie https://burze.dzis.net/ i kontakt z autorem poprzez formularz kontaktowy i prośba o wysłanie klucza API. Mnie wysłał klucz po kilkunastu minutach.

Następnie w sekcji Hardware wybieram nasz plugin - domoticz-storm-report, podajemy nazwę, otrzymany klucz API, interwał sprawdzania pogody, miast i promień w jakim mamy otrzymywać informację i wyładowaniach. Autor burze.dzis.net zadbał również o wyszukiwarkę miast: https://burze.dzis.net/?page=wyszukiwarka



Po chwili zobaczymy nowe ikony w naszej sekcji Utility.


Polecam zapoznanie się z dodatkiem, jest bogaty w informacje, nie zawodzi.

Jako że autor wydaje co pewien czas poprawki, aby zaktualizować - wystarczy wejść do folderu z pluginem i wykonać

git pull

Sugestia: W razie problemów z instalacją/uruchamianiem pluginów w Domoticz warto zajrzeć na stronę Wiki Domoticz: http://www.domoticz.com/wiki/Linux#Problems_locating_Python

środa, 11 października 2017

Dashticz - część druga

Dobry wieczór...

W jednym z poprzednich postów opublikowałem wstęp do konfiguracji Dashticz.

Edit: kolejny tutaj.

EDIT! Poprawka do Forecast.io w sekcji o tym serwisie!

Pora pójść dalej!

Najważniejszy parametr dzisiejszego wieczora to:

config['auto_positioning'] = 1;
config['use_favorites'] = 1;

Zamieniamy je na

config['auto_positioning'] = 0;
config['use_favorites'] = 0;

Wyłączamy nasze Ulubione w Domoticz i wyłączamy automatyczne pozycjonowanie. Od tej pory to my rządzimy tym co i gdzie ma się pokazać na ekranie.

Dzisiaj skupimy się na dwóch ekranach. W kolejnym wpisie inne pomysły.

Pierwszy będzie zawierał daty, prognozy pogody, kalendarz rodzinny oraz kilka naszych czujników. W tym przypadku temperatura, pobór prądu oraz czas dojazdu do pracy przy aktualnych warunkach drogowych.


Drugi ekran to status gniazdek prądowych, żarówki Yeelight, sceny z włączaniem/wyłączaniem muzyki, czujniki dymu, zalania, otwarcia drzwi, wilgotność ziemi w doniczce i szybkość łącza internetowego.


Czyli dużo różnych funkcji, czujników w jednym miejscu - mam nadzieję, że będzie to pomocne w tworzeniu Waszych pulpitów.

Ogólna zasada w Dashticz - każda sekcja zaczyna się od deklaracji co tam w sumie ma być. Czyli na przykład 'var config = {}' - 'Poniżej będą parametry', 'var columns = {}' - 'Poniżej będą definicje kolumn z ich zawartością', i tak dalej.

Na początek sekcja parametrów - opisana poprzednio, nie będziemy się więc na niej skupiać ponownie. Ogólnie - jeżeli chcecie korzystać z dodatków takich jak Weather Underground (opisane poprzednio), Google Maps czy Spotify - musicie postarać się o klucze do API tych produktów. Przeważnie jest to sekcja Developer lub, w przypadku Spotify - Applications. W razie pytań służę pomocą.

var config = {}
config['domoticz_ip'] = 'http://IP:PORT';
config['app_title'] = 'Dom';
config['domoticz_refresh'] = '5';
config['dashticz_refresh'] = '60';
config['news_scroll_after'] = '15';
config['standby_after'] = 0;
config['auto_swipe_back_to'] = 0;
config['auto_swipe_back_after'] = '30';
config['auto_slide_pages'] = 0;
config['slide_effect'] = 'slide';
config['standard_graph'] = 'month';
config['language'] = 'pl_PL';
config['timeformat'] = 'DD-MM-YY HH:mm';
config['calendarformat'] = 'dd DD.MM HH:mm';
config['calendarlanguage'] = 'pl_PL';
config['boss_stationclock'] = 'RedBoss';
config['gm_api'] = 'Klucz_API_Google_Maps';   <------ Tu zmień na swoją wartość!
config['gm_zoomlevel'] = 1;
config['gm_latitude'] = Szerokość;   <------ Tu zmień na swoje współrzędne!
config['gm_longitude'] = Długość;   <------ Tu zmień na swoje współrzędne!
config['wu_api'] = 'Klucz_Weather_Underground';   <------ Tu zmień na swoją wartość!
config['wu_city'] = 'Miasto';   <------ Tu zmień na swoją wartość!
config['wu_name'] = 0;
config['wu_country'] = 'PL';
config['idx_moonpicture'] = 7;
config['selector_instead_of_buttons'] = 1;
config['auto_positioning'] = 0;
config['use_favorites'] = 0;
config['last_update'] = 0;
config['hide_topbar'] = 1;
config['hide_seconds'] = 1;
config['hide_seconds_stationclock'] = 1;
config['use_fahrenheit'] = 0;
config['use_beaufort'] = 0;
config['translate_windspeed'] = 1;
config['static_weathericons'] = 0;
config['hide_mediaplayer'] = 0;

Poniższa część jest ciekawa - pozwala tworzyć przyciski, które mogą wyzwolić konkretną akcję - na przykład otworzą stronę internetową, pokażą kamery czy też, jak poniżej - pokażą fazy księżyca.

var buttons = {}
buttons.moon = {width:6, isimage:true, refreshimage:60000, image: 'moon'}

Dokładnie jest to opisane w Domoticz Wiki - w razie pytań z chęcią na nie odpowiem:
https://www.domoticz.com/wiki/Dashticz_V2_-_Custom_Applications#Module_-_Moonphases

Jeżeli chcemy dodać do naszego pulpitu kalendarz Google - nic nie stoi na przeszkodzie - wystarczy podać jego adres w parametrze:

var calendars = {}
calendars.private = { key:'private', width:12, maxitems: 6, icalurl: 'https://calendar.google.com/calendar/ical/Klucz_Kalendarza@group.calendar.google.com/public/basic.ics' }

Na pierwszej stronie pulpitu mam zdefiniowane dwie prognozy pogody - z różnych serwisów. Ot tak, bardziej jako fanaberia niż potrzeba. Jeden z nich - z serwisu forecast.io wyświetla po prostu bardzo ładne ikony z minimalną oraz maksymalną temperaturą dnia.

var frames = {}
frames.weather = {refreshiframe:10000,height:230,frameurl:"//forecast.io/embed/#lat=Szerokość&lon=Długość&name=Miasto&color=#00aaff&font=Helvetica&fontcolor=#ffffff&units=si&text-color=#fff",width:12}

Poprawka poniżej!

W związku ze zmianami na forecast.io jakiś czas temu, problematyczne okazało się wyświetlanie tekstu na ciemnych tłach, ponieważ opisy pogody zrobiły się szare.

Jest rozwiązanie, niezbyt logiczne (jak we wczesnych grach Sierra On-Line ;) Wystarczy dodać pogrubiony tekst na końcu definicji pogody... Słów brak.

//forecast.io/embed/#lat=50.117067&lon=18.981059&name=Tychy&units=si&color=#00aaff&text-color=#fff&lang=nl

Teraz główne 'mięso' - definicja jak to wszystko ma wyglądać i być ułożone.

var blocks = {}

Tutaj definiujemy zmiany w naszych blokach, jeżeli mają się pokazywać niestandardowo. Jeżeli wszystko nam pasuje - możemy ten element zostawić nietknięty. Jeżeli jednak - posługujemy się IDX z Domoticz.

Poniższe umożliwiają zmianę na przykład opisu, który jest przesyłany z Domoticz. Inaczej ma się w moim przypadku sprawa estetyczna w standardowym interface, a inaczej gdy wrzucę je na ikony w Dashticz. Dodatkowo, jak widać w przypadku IDX 142 - można zmienić ikonę oraz rozmiar pola.

blocks[24] = {}
blocks[24]['title'] = 'Przed domem'
blocks[100] = {}
blocks[100]['title'] = 'Roomba'
blocks[166] = {}
blocks[166]['title'] = 'Yeelight'

//Tytuły temperatury
blocks[93] = {}
blocks[93]['title'] = 'Ogród'
blocks[133] = {}
blocks[133]['title'] = 'Salon'

//Inne
blocks[142]['title'] = 'Droga do pracy';
blocks[142]['width'] = 6;
blocks[142]['icon'] = 'fa-female';

//Tytuły czujników
blocks[59] = {}
blocks[59]['title'] = 'Czujnik dymu'
blocks[132] = {}
blocks[132]['title'] = 'Kwiatki'

blocks[163] = {}
blocks[163]['title'] = 'Księżyc'

Istnieją czujniki, które podają kilka wartości na raz - na przykład temperatura i wilgotność, czy mój Owl - zużycie chwilowe aktualne i ogólne na dzień. Warto je czasem rozdzielić - robimy to przez dodanie _1, _2. WAŻNE - musimy tutaj zastosować apostrofy, w przeciwieństwie do standardowych elementów.

blocks['136_1'] = {}
blocks['136_1']['title'] = 'Aktualnie'
blocks['136_2'] = {}
blocks['136_2']['title'] = 'Dzisiaj'

Każdy z bloków ikon, czujników, przełączników może mieć nagłówek, który również możemy dowolnie zdefiniować:

blocks['blocktitle_1'] = {} //Switches - general
blocks['blocktitle_1']['type'] = 'blocktitle';
blocks['blocktitle_1']['title'] = 'Gniazdka';

blocks['blocktitle_2'] = {} //Control - general
blocks['blocktitle_2']['type'] = 'blocktitle';
blocks['blocktitle_2']['title'] = 'Czujniki';

blocks['blocktitle_5'] = {} //Owl - general
blocks['blocktitle_5']['type'] = 'blocktitle';
blocks['blocktitle_5']['title'] = 'Zużycie prądu';


Kolejna sekcja - kolumny. To tutaj umieszczamy IDX naszych czujników w odpowiednich miejscach. Możemy to traktować jak pudełka z klockami, które to później pudełka dowolnie układamy na stronie. Co ważne - powyższe specyficzne ustawienia (zmiana nazwy, ikony) są aplikowane w tym miejscu.

Trzeba zapamiętać, że długość wszystkich kolumn powinna się sumować do wartości równej 12!

var columns = {}

Tutaj małe odstępstwo. U mnie zmienna config['hide_topbar'] = 1;  jest ustawiona, czyli pasek górny się nie wyświetla, ale dobrze, abyście wiedzieli, że jest możliwość ustawienia i skonfigurowania takiego paska, który będzie wyświetlany zawsze nad waszymi pulpitami.

columns['bar'] = {}
columns['bar']['blocks'] = ['logo','miniclock','sunrise','settings']

No to lecimy!

Blok Gniazdka - u mnie jest to najpierw nagłówek, później kilka gniazdek w domu, żarówka Yeelight (Dashticz automatycznie rozpoznał, że musi mu dać pasek do sterowania natężeniem światła i kolorem) oraz dwie sceny (ważne, z apostrofem podajemy numer sceny poprzedzony literą 's').

columns[1] = {} //Gniazdka
columns[1]['blocks'] = ['blocktitle_1',24,100,103,21,22,166,'s1','s2'];
columns[1]['width'] = 6;

Blok pogody i kalendarza - wcześniej zdefiniowane nazwy wprowadzamy według żądanej kolejności. Proszę zwrócić uwagę, że 'weather' jest w apostrofach jako natywny element Dashticz.

columns[2] = {} //Pogoda, kalendarz
columns[2]['blocks'] = ['weather',frames.weather,calendars.private];
columns[2]['width'] = 6;

Różnej maści czujniki.

columns[7] = {} //Czujniki
columns[7]['blocks'] = ['blocktitle_2',59,147,132,112,195];
columns[7]['width'] = 6;

Czujniki ciepła z rozdzielonymi wartościami temperatury i wilgotności (jak wcześniej pisałem - w apostrofach)

columns[8] = {} //Temperatura
columns[8]['blocks'] = ['blocktitle_3',93,133,'118_1','121_1',160,'118_2','121_2'];
columns[8]['width'] = 3;

Indykatory który sprzęt jest włączony, który wyłączony.

columns[9] = {} //Sprzęt
columns[9]['blocks'] = ['blocktitle_4',72,73,74,75,76,120,122,123];
columns[9]['width'] = 6;

Pomiar natężenia prądu oraz 'Droga do pracy'

columns[10] = {} //Owl
columns[10]['blocks'] = ['blocktitle_5','136_1','136_2','blocktitle_7',142];
columns[10]['width'] = 3;

Zegar cyfrowy, mini-pogoda, wschód/zachód słońca, obraz fazy księżyca i zegar analogowy bez sekund (można zmienić to parametrem)

columns[11] = {} //Pogoda, słońce, księżyc, zegar
columns[11]['blocks'] = ['clock','currentweather_big','sunrise',buttons.moon,163,'stationclock']
columns[11]['width'] = 3;

Definiowanie ekranów. Jeżeli chcecie mieć jeden - wystarczy zostawić pierwszą część. U mnie ledwo się mieszczę na siedmiu ;)

Co ciekawe - zakomentowana (dla przykładu) jest opcja zmiany ekranów w zależności od czasu na tablecie. Jeżeli usuniecie komentarze - o różnych porach dnia zobaczycie różne tła. Mnie się to podoba :) Zdjęcia ładujemy do folderu <dashticz>\img. W moim przypadku jest to \domoticz\www\dashticz_v2\img\

To tutaj układamy nasze kolumny na odpowiednich stronach, po prostu wrzucając powyższe identyfikatory w odpowiednie miejsca.

var screens = {}
screens[1] = {}
screens[1]['background'] = 'bg1.jpg';
//screens[1]['background_morning'] = '/Cezar/image004.jpg'; //morning = 06:00-10:59
//screens[1]['background_noon'] = '/Cezar/image003.jpg'; //noon = 11:00-15:59
//screens[1]['background_afternoon'] = '/Cezar/image002.jpg'; //afternoon 16:00-19:59
//screens[1]['background_night'] = '/Cezar/image005.jpg'; //night = 20:00:05:59
screens[1]['columns'] = [11,2,8,10];

screens[2] = {}
screens[2]['background'] = 'bg3.jpg';
screens[2]['columns'] = [1,7,9];

Ufffff... Wydaje się skomplikowane, ale tak naprawdę nie jest. Po zaakceptowaniu faktu, że po prostu układamy nasze czujniki, gniazdka i dodatki jak klocki w ramce a później tą ramkę wieszamy na ścianie - jest całkiem prosto.

Co prawda w tle za tymi zmianami jest też specyficznych kilka wpisów formatujących w custom.css, ale o tym kolejny wpis. Oraz instrukcja wrzucenia wielu innych elementów. Zachęcam do testów i pytań.

Pełny skrypt do wrzucenia do CONFIG.js. Oczywiście prywatne zmienne musicie wypełnić sami - IP Domoticz, klucze API, koordynaty położenia, itp.

var config = {}
config['domoticz_ip'] = 'http://IP:PORT';
config['app_title'] = 'Dom';
config['domoticz_refresh'] = '5';
config['dashticz_refresh'] = '60';
config['news_scroll_after'] = '15';
config['standby_after'] = 0;
config['auto_swipe_back_to'] = 0;
config['auto_swipe_back_after'] = '30';
config['auto_slide_pages'] = 0;
config['slide_effect'] = 'slide';
config['standard_graph'] = 'month';
config['language'] = 'pl_PL';
config['timeformat'] = 'DD-MM-YY HH:mm';
config['calendarformat'] = 'dd DD.MM HH:mm';
config['calendarlanguage'] = 'pl_PL';
config['boss_stationclock'] = 'RedBoss';
config['gm_api'] = 'Klucz_API_Google_Maps';
config['gm_zoomlevel'] = 1;
config['gm_latitude'] = Szerokość;
config['gm_longitude'] = Długość;
config['wu_api'] = 'Klucz_Weather_Underground';
config['wu_city'] = 'Miasto';
config['wu_name'] = 0;
config['wu_country'] = 'PL';
config['idx_moonpicture'] = 7;
config['spot_clientid'] = 'ID_Spotify_Developer_Mode';
config['selector_instead_of_buttons'] = 1;
config['auto_positioning'] = 0;
config['use_favorites'] = 0;
config['last_update'] = 0;
config['hide_topbar'] = 1;
config['hide_seconds'] = 1;
config['hide_seconds_stationclock'] = 1;
config['use_fahrenheit'] = 0;
config['use_beaufort'] = 0;
config['translate_windspeed'] = 1;
config['static_weathericons'] = 0;
config['hide_mediaplayer'] = 0;

var buttons = {}
buttons.moon = {width:6, isimage:true, refreshimage:60000, image: 'moon'}

var calendars = {}
calendars.private = { key:'private', width:12, maxitems: 6, icalurl: 'https://calendar.google.com/calendar/ical/Klucz_Kalendarza@group.calendar.google.com/public/basic.ics' }

var frames = {}
frames.weather = {refreshiframe:10000,height:230,frameurl:"//forecast.io/embed/#lat=Szerokość&lonDługość&name=Miasto&color=#00aaff&font=Helvetica&fontcolor=#ffffff&units=si&text-color=#fff",width:12}
frames.poland = {refreshiframe:10000,height:230,frameurl:"https://api.sat24.com/animated/PL/visual/1/Central%20European%20Standard%20Time/357718",width:4}

var blocks = {}

blocks[24] = {}
blocks[24]['title'] = 'Przed domem'
blocks[100] = {}
blocks[100]['title'] = 'Roomba'
blocks[103] = {}
blocks[103]['title'] = 'Dysk MP3'
blocks[21] = {}
blocks[21]['title'] = 'Sauna'
blocks[22] = {}
blocks[22]['title'] = 'Sypialnia'
blocks[166] = {}
blocks[166]['title'] = 'Yeelight'

//Tytuły temperatury
blocks[93] = {}
blocks[93]['title'] = 'Ogród'
blocks[133] = {}
blocks[133]['title'] = 'Salon'
blocks[118] = {}
blocks[118]['title'] = 'S'
blocks[121] = {}
blocks[121]['title'] = 'Z'
blocks[160] = {}
blocks[160]['title'] = 'Sypialnia'
blocks[142] = {}
blocks[142]['title'] = 'Droga do pracy';
blocks[142]['width'] = 6;
blocks[142]['icon'] = 'fa-female';

//Tytuły czujników
blocks[59] = {}
blocks[59]['title'] = 'Czujnik dymu'
blocks[132] = {}
blocks[132]['title'] = 'Kwiatki'

blocks[163] = {}
blocks[163]['title'] = 'Księżyc'

blocks['136_1'] = {}
blocks['136_1']['title'] = 'Aktualnie'
blocks['136_2'] = {}
blocks['136_2']['title'] = 'Dzisiaj'

blocks['blocktitle_1'] = {} //Switches - general
blocks['blocktitle_1']['type'] = 'blocktitle';
blocks['blocktitle_1']['title'] = 'Gniazdka';

blocks['blocktitle_2'] = {} //Control - general
blocks['blocktitle_2']['type'] = 'blocktitle';
blocks['blocktitle_2']['title'] = 'Czujniki';

blocks['blocktitle_3'] = {} //Temperature - general
blocks['blocktitle_3']['type'] = 'blocktitle';
blocks['blocktitle_3']['title'] = 'Temperatura';

blocks['blocktitle_4'] = {} //Equipment - general
blocks['blocktitle_4']['type'] = 'blocktitle';
blocks['blocktitle_4']['title'] = 'Sprzęt';

blocks['blocktitle_5'] = {} //Owl - general
blocks['blocktitle_5']['type'] = 'blocktitle';
blocks['blocktitle_5']['title'] = 'Zużycie prądu';

blocks['blocktitle_6'] = {} //Malinka - general
blocks['blocktitle_6']['type'] = 'blocktitle';
blocks['blocktitle_6']['title'] = 'Malinka';

blocks['blocktitle_8'] = {} //Xiaomi
blocks['blocktitle_8']['type'] = 'blocktitle';
blocks['blocktitle_8']['title'] = 'Xiaomi';

blocks['blocktitle_7'] = {} //Czas do pracy - general
blocks['blocktitle_7']['type'] = 'blocktitle';
blocks['blocktitle_7']['title'] = 'Droga do pracy';

blocks['news_1'] = {}
blocks['news_1']['feed'] = 'https://cors-anywhere.herokuapp.com/http://wiadomosci.gazeta.pl/pub/rss/wiadomosci_kraj.htm';
blocks['news_1']['maxheight'] = 113;

blocks['news_2'] = {}
blocks['news_2']['feed'] = 'https://cors-anywhere.herokuapp.com/http://kanaly.rss.interia.pl/swiat.xml';
blocks['news_2']['maxheight'] = 250;

var columns = {}
columns['bar'] = {}
columns['bar']['blocks'] = ['logo','miniclock','sunrise','settings']

columns[1] = {} //Gniazdka
columns[1]['blocks'] = ['blocktitle_1',24,100,103,21,22,166,'s1','s2'];
columns[1]['width'] = 6;

columns[2] = {} //Pogoda, kalendarz
columns[2]['blocks'] = ['weather',frames.weather,calendars.private];
columns[2]['width'] = 6;

columns[7] = {} //Czujniki
columns[7]['blocks'] = ['blocktitle_2',59,147,132,112,195];
columns[7]['width'] = 6;

columns[8] = {} //Temperatura
columns[8]['blocks'] = ['blocktitle_3',93,133,'118_1','121_1',160,'118_2','121_2'];
columns[8]['width'] = 3;

columns[9] = {} //Sprzęt
columns[9]['blocks'] = ['blocktitle_4',72,73,74,75,76,120,122,123];
columns[9]['width'] = 6;

columns[10] = {} //Owl
columns[10]['blocks'] = ['blocktitle_5','136_1','136_2','blocktitle_7',142];
columns[10]['width'] = 3;

columns[11] = {} //Pogoda, słońce, księżyc, zegar
columns[11]['blocks'] = ['clock','currentweather_big','sunrise',buttons.moon,163,'stationclock']
columns[11]['width'] = 3;

var screens = {}
screens[1] = {}
screens[1]['background'] = 'bg1.jpg';
//screens[1]['background_morning'] = '/Cezar/image004.jpg'; //morning = 06:00-10:59
//screens[1]['background_noon'] = '/Cezar/image003.jpg'; //noon = 11:00-15:59
//screens[1]['background_afternoon'] = '/Cezar/image002.jpg'; //afternoon 16:00-19:59
//screens[1]['background_night'] = '/Cezar/image005.jpg'; //night = 20:00:05:59
screens[1]['columns'] = [11,2,8,10];

screens[2] = {}
screens[2]['background'] = 'bg3.jpg';
screens[2]['columns'] = [1,7,9];

poniedziałek, 9 października 2017

Xiaomi Mijia Smart Home - pozostałe dwa gadżety

W końcu znalazłem wolną chwilę, aby podłączyć pozostałe dwa elementy: czujnik otwarcia drzwi oraz sterowane gniazdko - wersja ZigBee (bo są i Wifi).

Nie ma się tutaj za bardzo o czym rozpisywać - wszystko podłącza się i paruje błyskawicznie. Jedyne o czym warto pamiętać to to, że potrzeba czegoś ostrego aby wprowadzić czujnik w tryb parowania - wystarczy agrafka lub igła.

Ponownie powtórzę, że sprzęty od Xiaomi są niezwykle ładne, estetyczne i małe - sama przyjemność. Żeby jeszcze aplikacja chciała tak działać...





















Gniazdko również jest świetne, jak widać - wspiera wersje z różnych krajów.




Przejściówka jest jednak konieczna, co burzy ostateczny wygląd.



Oba elementy mamy od razu dostępne na liście urządzeń:




Co ciekawe, po pewnym czasie włączyłem wykrywanie nowych urządzeń i Domoticz dodał mi Xiaomi Smart Plug Usage. Czyli raportowanie natężenia prądu w gniazdku.

Edit: Koledzy z grupy Domoticz zeznają, że czasem nie wystarczyło poczekać - musieli na nowo dodać Gateway w aplikacji Mijia.


Z pewnego, nieznanego mi, powodu raporty dzienne, tygodniowe i miesięczne zaczęły mi działać dopiero po przełączeniu odczytu energii z 'From device' na 'Computed.


Co przekłada się na takie wykresy:


I miesięczny raport:


Jak to osiągnąć opisałem w innym poście: https://cezarowy.blogspot.com/2017/10/domoticz-i-koszty-zuzytego-pradu.html

piątek, 6 października 2017

Sonos One - głośnik oraz asystent w jednym, którym zdecydowanie warto się zainteresować...

Głośniki z asystentami starają się wedrzeć szturmem na rynek. To już fakt.


Amazon Echo z serwisem Alexa, Google Home Max czy też Apple HomePod. Nawet sam jestem zainteresowany zakupem Amazon Echo Dot aby zrozumieć ten fenomen i zintegrować go z aktualnym 'Smart Home'. Problemem jednak było to, że wiążemy się z jednym dostawcą i na jego łaskę/niełaskę jesteśmy skazani. Okazuje się jednak, że ktoś wpadł na pomysł, który uwalnia nas od tego problemu.

Zaledwie kilka dni temu Sonos, znany między innymi z rozwiązań głośników multi-room, ogłosił nowy produkt - Sonos One. To nie tylko głośniki, które świetnie grają (niestety, bazuję na opiniach innych osób - sam nie miałem przyjemności ich sprawdzić), ale na dodatek pozwalają wybrać Asystenta którego chcecie użyć. Na ten moment na pewno będzie to przynajmniej Alexa oraz Google Assistant. Jak się do tego wpasuje Siri - przekonamy się, pewne jest, że Sonos One wspiera AirPlay 2 - czyli 'dogada się' ze sprzętem Apple.

Ze strony serwisów muzycznych lista jest już ogromna (głośniki Play:1, na których oparty jest One są już na rynku kilka lat) i wspiera na przykład:
- Apple Music
- Spotify
- Amazon Music
- Google Play music
- Soundcloud
- Deezer
- TuneIn
- Bandcamp
- Audiobooks
- Pandora
- Tidal

Dwa wzmacniacze klasy D, tweeter i woofer zapewnią odpowiedni dźwięk dla nas.

Każdy z tych głośników można łączyć w grupy, odtwarzać tą samą lub inną muzykę na każdym z nich. Czyli w sumie to samo, co udało mi się zbudować przy pomocy Raspberry Pi i Logitech Media Server (opisane we innym wpisie) ;) Jakość (zależnie do tego na czym oparliśmy LMS i PiCore) może być różna i na pewno z nimi nie porozmawiamy, ale...

Osobiście bardzo się w tym momencie waham - miałem już zamawiać Amazon Echo Dot, ale teraz chwilę chyba zaczekam.


poniedziałek, 2 października 2017

Xiaomi Smart Home, integracja z Domoticz z poziomu iPhone

Dzisiaj o integracji Mijia (Xiaomi) Smart home z Domoticz, ale za pomocą iPhone. Bo tych poradników jakby mniej, a miałem przy tym mały problem.

Samo parowanie opisałem wcześniej.

Aby dostać się do nich z poziomu Domoticz (i przy okazji uzyskać kilka dodatkowych funkcji) musimy wejść do aplikacji, przejść na Gateway,


Wybrać 'trzy kropki',

I następnie About.

Pojawi się menu z trzema pozycjami.


W przypadku Android wiadomo gdzie klikać - numer wersji aplikacji. Niestety, w aplikacji na iPhone (która swoją drogą jest fatalna i ostatnio, na szczęście już po wykonaniu zrzutów ekranu, 'zgubiła' mi wszystkie tłumaczenia angielskie i zostały same zmienne, które powinny się zamienić w poprawne słowa) tego tekstu nie ma i trzeba klikać 'w ciemno'. Niemniej - tak samo jak przy wersji na Android, trzeba szybko klikać palcem aż do pojawienia się trzech chińskich pozycji menu.

Wchodzimy w drugą i włączamy tryb deweloperski - pierwszy, jedyny przełącznik. Zapisujemy kod centralki jaki nam się pokaże. W razie problemu ikoną obok możemy go zawsze odświeżyć.

Adres IP centralki możemy odczytać dowolnym programem do skanowania adresów IP, albo wchodząc w trzecie menu - tam jest podany przypisany adres. Najlepiej go dodać do stałych rezerwacji IP na routerze.

W ostatnich wersjach Domoticz po wejściu do sekcji Hardware wybieramy po prostu typ Xiaomi Gateway, wpisujemy pozyskane IP, port koniecznie 9898 i hasło odczytane w aplikacji.


Po kilku minutach w Domoticz zobaczymy nasze podpięte do centralki urządzenia.


Możemy je dodać do naszych wskaźników:


Powyżej czujnik temperatury i wilgotności.


A tutaj sama centralka - możliwość sterowania kolorami RGB, włączania/wyłączania dźwięków alarmu, dzwonków, sterowania głośnością. Na zakładce Utility powinien Wam się również pokazać czujnik natężenia światła.

No dobra, kupiłem ULIfAC do Amstrada 464. Co dalej?

     Nadeszła jesień i warto było w końcu powrócić do uruchamiania tegorocznych zakupów. Padło na Amstrada 464. Od razu napiszę, że były mom...