Dashticz – część trzecia

Trzecia część opisu Dasthicz przed Wami. Mam nadzieję, że przyda się przy Waszych konfiguracjach i pięknym zdefiniowaniu pulpitów. Mnie ustawianie i przestawianie sprawiło mnóstwo frajdy. 
Ostrzegam, może być nudno! To już same informacje dla takich świrów jak ja 😉
Poprzednie (ważne, ponieważ każdy wpis jest rozwinięciem poprzedniego) tutaj:
Teraz zajmiemy się już innymi dodatkami. Może mniej ważnymi, ale czyniącymi system jeszcze ciekawszym. Do tego dojdzie czwarta część poradnika, skupiająca się na pliku css, gdzie możemy sterować bardziej wyglądem, ikonami, kolorem, fontem, itp.
Gwoli wyjaśnienia – czasem prezentowane tu ustawienia mogą się Wam wydać nielogiczne – tapety, ilość czujników, etc. Wrzuciłem je tutaj głównie aby pokazać, że można to zrobić i jak to zrobić – wybierzcie wygląd i ułożenie takie jak Wam pasuje 🙂
Na stronie trzeciej wrzucimy podgląd kamer oraz dodatki związane z odtwarzaniem muzyki: status odtwarzaczy Logitech (u mnie piCorePlayer), kilka stacji radiowych odtwarzanych bezpośrednio z tabletu oraz klient Spotify.

Czwarta strona to wykres – aby zaznajomić Was z taką możliwością, log Domoticz, mapa pogodowa Polski oraz status naszej Maliny.

Strona piąta zawiera newsy w formacie RSS oraz wyświetlany ruch w okolicach przy pomocy Google Maps

Szósta i siódma – czujniki i elementy od Xiaomi. Aby pokazać paski to przyciemniania światła, selektory i inne.

Jedziemy!

Tekstem zwykłym, nie wytłuszczonym, są parametry już wcześniej omawiane, nowe są pogrubione. Pozwolę sobie (a jak, w końcu mogę) opisać je bezpośrednio pod spodem. Link do pełnego pliku znajduje się TUTAJ.

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';

Tutaj już pisałem poprzednio – trzeba postarać się o stworzenie aplikacji w Spotify.


Ważne, aby na końcu nacisnąć Save!

Tam stworzone ID musimy wpisać w Dashticz.

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.webcam = {width:12, isimage:true, refresh:2000, image: 'http://192.168.1.155/cgi/jpg/image.cgi', url: 'http://192.168.1.155/cgi/jpg/image.cgi'}
buttons.webcam1 = {width:12, isimage:true, refresh:2000, image: 'http://192.168.1.156/image/jpeg.cgi', url: 'http://192.168.1.156/image/jpeg.cgi'}
buttons.log = {key:’log', width:12, icon:’fa-microchip', title: 'Domoticz Log', log:true, level: 2}

W sekcji Buttons możemy zdefiniować na przykład kamery oraz link do loga Domoticz.

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 _STREAMPLAYER_TRACKS   = [
{„track”:1,”name”:”Antyradio”,”file”:”http://ant-kat.cdn.eurozet.pl:8604/;stream”},
{„track”:2,”name”:”Trójka”,”file”:”http://stream3.polskieradio.pl:8904/listen.pls”},
{„track”:3,”name”:”Slam! NonStop”,”file”:”http://stream.radiocorp.nl/web10_mp3″},
{„track”:4,”name”:”100%NL”,”file”:”http://stream.100p.nl/100pctnl.mp3″},
  ];

A tutaj przypisujemy stacje radiowe, które streamują swoje programy online. Pobieramy linki na przykład stąd.

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}

Tutaj zachciało mi się animowanej mapy pogody w Polsce. Więc ją znalazłem i wstawiłem 😀

var maps = {}
maps.miasto1 = { width:12, latitude: Szerokość, longitude: Długość, zoom:10 };
maps.miasto2 = { width:12, latitude: Szerokość, longitude: Długość, zoom:10 };

Ta sekcja mówi Dashticz dla jakich koordynatów wyświetlimy mapy ruchu drogowego. Teksty Szerokość i Długość zastępujemy własnymi koordynatami. Same cyfry, bez apostrofów, np.: 10.232

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';

Powyższe w sumie same się komentują – tytuły nagłówków do naszych sekcji.

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;

Kanały RSS! Nie dość, że pokażą nam tekst, to jeszcze zdjęcia w przypadku tych bardziej bogatych w treści.

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[3] = {} //Kamery
columns[3][’blocks'] = [buttons.webcam,buttons.webcam1];
columns[3][’width'] = 5;

columns[4] = {} //RSS news
columns[4][’blocks'] = [’news_1′,’news_2′];
columns[4][’width'] = 5;

columns[5] = {} //Księżyc
columns[5][’blocks'] = [buttons.moon];
columns[5][’width'] = 3;

columns[6] = {} //LMS players
columns[6][’blocks'] = [151,150,157,80];
columns[6][’width'] = 5;

Nasze kolejne bloki a w nich:
– dwie kamery
– wiadomości RSS 
– ikona fazy księżyca
– Logitech Media Players oraz radia status odtwarzacza KODI

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;

columns[12] = {} //Graphs
columns[12][’blocks'] = [’graph_136′,buttons.log,frames.poland];
columns[12][’width'] = 5;

Tutaj przykład wykresu. UWAGA – zgodnie z parametrem config[’standard_graph'] = 'month';

domyślnie ustawia się na miesiąc. Wpiszcie wartość, jaka Wam pasuje (czyli 'day', 'week',’month'). Kolejny element to log Domoticz i animowana mapa pogody.


columns[13] = {} //Music
columns[13][’blocks'] = [’streamplayer',’spotify'];
columns[13][’width'] = 5;

Odtwarzacz stream’ów z radiami internetowymi oraz plugin Spotify. Ze Spotify trzeba pamiętać, że aplikacja musi być zainstalowana na tablecie! Do tego – u mnie zaczynała działać, gdy coś najpierw odtworzyłem w aplikacji i dopiero przeszedłem do strony. Za pierwszym razem, później już bez problemu.

columns[14] = {} //Graphs
columns[14][’blocks'] = [maps.miasto1,maps.miasto2];
columns[14][’width'] = 5;

Mapy Google z natężeniem ruchu drogowego.

columns[15] = {} //Malinka
columns[15][’blocks'] = [53,54,49,52,51];
columns[15][’width'] = 5;

Czujniki naszego Raspberry. Temperatura, pamięć, zajętość dysków, itp.

columns[16] = {} //Xiaomi
columns[16][’blocks'] = [’blocktitle_8′,167,168,169,170,171,172];
columns[16][’width'] = 10;

columns[17] = {} //Xiaomi
columns[17][’blocks'] = [’blocktitle_8′,173,174,175,177,190,192,208,209];
columns[17][’width'] = 10;

A tu już elementy od Xiaomi.

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];

screens[3] = {}
screens[3][’background'] = 'bg8.jpg';
screens[3][’columns'] = [3,6,13];

screens[4] = {}
screens[4][’background'] = 'bg_morning.jpg';
screens[4][’columns'] = [12,15];

screens[5] = {}
screens[5][’background'] = 'bg_noon.jpg';
screens[5][’columns'] = [4,14];

screens[6] = {}
screens[6][’background'] = 'bg_night.jpg';
screens[6][’columns'] = [16];

screens[7] = {}
screens[7][’background'] = 'bg2.jpg';
screens[7][’columns'] = [17];

Uffff… Dużo tego, ale po zaznajomieniu się z tym wszystkim będzie Wam na pewno łatwiej stworzyć własne pulpity.

Generalna zasada:
– najpierw ustawienia
– później definicje bloków, zmiana tytułów, itp.
– ustawienie elementów w kolumnach
– wrzucenie kolumn na ekrany

POWODZENIA!

Monitorowanie aktywności urządzeń w sieci

Lubię wiedzieć co się dzieje. Czy to w domu czy na świecie. Jako że nad światem nie zapanuję, można się chociaż starać sprawdzić co się dzieje w domu 😉

Większość urządzeń ma teraz połączenie bezprzewodowe i je możemy bez problemu monitorować. Laptop, konsole, tablety, drukarki – gdy są włączone na komendę arp-scan odpowiada ich adres MAC. To dzisiaj zrobimy.

Jest co prawda natywny System Alive Checker (Ping), ale u mnie więcej oszukiwał, niż podawał prawdziwe dane. Ostatnio chyba został poprawiony, ale skoro już swoje skrypty mam…

Ruszamy.

Na początek – definiowanie nowej zmiennej w Domoticz.

Niech się nazywa PRESENCE_LIST (jak w przykładzie z forum Domoticz). Format jest następujący: Adres_MAC;ID_Z_Domoticz_TEGO_CZEGO_STAN_SPRAWDZAMY| (pionowa kreska!). Na końcu łańcucha już jej nie dajemy. Czyli na przykład: aa:bb:cc:dd:ee:ff;73|bb:cc:dd:ee:ff:gg;122. Adres MAC urządzeń możemy poznać na przykład za pomocą aplikacji ipscan24.
Cyfra po średniku to IDX naszego urządzenia (które chcemy testować na obecność w sieci!) w Domoticz. Wcześniej należy pamiętać, aby stworzyć odpowiedni sprzęt w sekcji Hardware!
Czyli na przykład Playstation timer jako Dummy w Sekcji Hardware i tam tworzymy dwa Virtual sensors: jeden Switch i drugi Counter Incremental


Później konieczne będzie doinstalowanie arp-scan:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install arp-scan

I przechodzimy do sedna, czyli naszych funkcji badających obecność urządzeń w sieci.

cd domoticz

sudo nano scripts/Check_MAC.sh

I tam wstawiamy:

#!/bin/bash
MAC=$1
IDX=$2

sudo arp-scan –localnet | grep -e $MAC

if [ $? -eq 1 ]
then
echo „Device $MAC Not in LOCAL LAN”
curl „http://IP_Domoticz:Port/json.htm?type=command&param=switchlight&idx=$IDX&switchcmd=Off”
else
echo „Device $MAC in LOCAL LAN”
curl „http://IP_Domoticz:Port/json.htm?type=command&param=switchlight&idx=$IDX&switchcmd=On”
fi

Zamieniając IP_Domoticz:Port na własne IP i port

I WAŻNE, prawa do uruchamiania

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

sudo nano scripts/lua/script_time_Presence.lua

A tutaj to:

function splitString(str, delim, maxNb)
    — Eliminate bad cases…
    if string.find(str, delim) == nil then
        return { str }
    end
    if maxNb == nil or maxNb < 1 then
        maxNb = 0    — No limit
    end
    local result = {}
    local pat = „(.-)” .. delim .. „()”
    local nb = 0
    local lastPos
    for part, pos in string.gmatch(str, pat) do
        nb = nb + 1
        result[nb] = part
        lastPos = pos
        if nb == maxNb then break end
    end
    — Handle the last field
    if nb ~= maxNb then
        result[nb + 1] = string.sub(str, lastPos)
    end
    return result
end

commandArray = {}
maclist= uservariables[’PRESENCE_LIST']
Lines=splitString(maclist,”|”)

for i,line in pairs(Lines) do
   –print (i..” „..line)
   macs=splitString(line,”;”)
   print („MAC Address to Poll: „..macs[1]..” On IDX:”..macs[2])
        execcommand=”sudo /home/pi/domoticz/scripts/Check_MAC.sh „..macs[1]..” „..macs[2]..” &”
    os.execute(execcommand)

end

I na koniec dla KAŻDEGO urządzenia:

sudo nano scripts/lua/script_time_playstation_update.lua

local timer_device_ID = 8 <—- Tu wstawiamy IDX naszego Device z Counter incremental

commandArray = {}
commandArray[’UpdateDevice'] = timer_device_ID .. '|0|0′

local TotalMinutesOn = otherdevices_svalues['Playstation timer']
if otherdevices['Playstation 4'] == 'On' then
  TotalMinutesOn = TotalMinutesOn + 1
end
commandArray[’UpdateDevice'] = timer_device_ID .. '|0|' .. tostring(TotalMinutesOn)

return commandArray

Co robi powyższa funkcja? Sprawdza, czy urządzenie Playstation 4 (czyli to musicie zmienić na nazwę u siebie) jest dostępna w sieci. Jeżeli tak, zwiększy licznik Playstation timer o 1, czyli i jedną minutę.

I tyle. Koniec. Tutaj jednak należy się Wam wytłumaczenie. Nazwy plików MUSZĄ rozpoczynać się od script_time_*, ponieważ jest to wewnętrzny mechanizm Domoticz, który uruchamia skrypty.

Co teraz zrobiliśmy? Napisaliśmy skrypt, który co minutę się uruchomi i sprawdzi, czy urządzenia zapisane na naszej zmiennej użytkownika są widoczne w sieci. Jeżeli tak, zwiększamy licznik.

Efekt?

Jak poniżej.

Pozdrawiam! Miłej zabawy!

EDIT.

Jak widać w komentarzach, są z tym czasem problemy, jednak ciężko mi określić, czemu może u niektórych z Was nie działać ta funkcja. Dla próby dodałem przed chwilą dzisiaj podłączony czujnik smogu na ESP. Świeża rzecz, nie ma więc prawa być w systemie, działać z tytułu zaszłości, itp. Po kolei:

1. Skoro działa, bo buczy i go słyszę, zbadajmy jaki ma adres MAC:

2. Dodaję wirtualny Switch, na Hardware typu Dummy. Zrobiłem to na istniejącym o nazwie Telefony:

3. Sprawdzam jaki ma IDX:

4. Dodaję adres MAC i IDX do zmiennej (fakt, adres MAC MAŁYMI literami):

5. Po chwili Switch odpowiada:

Idę spać, wyłączam testowy czujnik, po chwili:

Nowa wersja aplikacji MiHome oraz Yeelight

Aloha!
Zostałem dzisiaj mile zaskoczony przez aplikację MiHome na iPhone, która prosiła o aktualizację. Mając przed oczami ostatnią wersję, z rozjechanymi tłumaczeniami, 'place holderami' dla tekstów, itp. bardzo się bałem tego co zastanę. 
Jakże miło się rozczarowałem! Aplikacja zmieniła się kompletnie, i – co ważne – na plus. Jako że można używać Domoticz równocześnie z aplikacją, dobrze by było, żeby owa aplikacja działała dobrze.
Wcześniejszą listę zastąpiło ładne zestawienie w formie bloków ikon i zdefiniowanego tekstu, który można dowolnie zdefiniować, przesunąć, skonfigurować. W górnej części jawna zachęta do zakupu innych urządzeń – Nawilżacza powietrza i czujnika jego jakości 😉
Podział na pokoje ma w końcu sens, widać gdzie i jakie czujniki się znajdują i co raportują.
Coś, co mi osobiście bardzo się podoba – 'przewijalne' zakładki z najważniejszymi informacjami o czujnikach – bardzo ułatwiają życie i wprowadzają dużo ładu przy oglądaniu.

Mam wrażenie, że zmieniły się również pluginy obsługujące poszczególne elementy. Albo w końcu pojawiły się poprawne tłumaczenia i wiem o co w nich chodzi 😉

W przypadku na przykład Smart Power Plug wygląda to bardzo ciekawie.
Można nawet wybrać ikonę, która będzie prezentować nasze urządzanie.

Grzebiąc w opcjach znalazłem też 'Charge Protection'- automatyczne wyłączenie gniazdka po naładowaniu tego, co się w tym gniazdku znajduje. Warto będzie spróbować.
Przy okazji – zaktualizowała się również aplikacja do żarówek Yeelight. Tutaj też kilka nowości!
Stworzone sceny dla żarówek są bardzo przyjemne wizualnie. Tworzenie opiera się na wybraniu ikony, wpisaniu nazwy i, na przykład, przypisaniu aktualnego stanu żarówki do sceny.

A sterowanie samymi żarówkami, połączonymi w grupy jest banalnie proste.
Dla samych pojedynczych żarówek można również błyskawicznie wybrać scenę, na którą mamy ochotę, zmienić światło na białe, albo bawić się kolorami. To wszystko oczywiście z możliwością programowania czasu włączenia/wyłączenia.

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 😀

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 🙂

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.

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 domoticzplugins 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

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 domoticzwwwdashticz_v2img

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];

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

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.