Dashticz ponownie na tapecie! Tym razem rozwiązanie problemu z kalendarzami i RSS.

Dashticz to ciekawy temat. Jak zresztą często bywa z oprogramowaniem – ktoś tworzy coś dla siebie, później zaczyna korzystać z niego coraz więcej osób. Z tym spotkał się również autor Dashticz – miał tam kawałek kodu, który przetwarzał kalendarze na jego stronie. Zapewne dlatego, że tak mu było wygodniej, ale z czasem ilość użytkowników zaczęła przerastać wydajność serwera, postanowił ją więc wyłączyć. No i trach – wszystkie kalendarze aktualnych użytkowników przestały się pojawiać.

Przetwarzanie danych kalendarzy musi być teraz po naszej stronie. Potrzebujemy do tego serwer Apache i PHP.

Od razu piszę, że opieram się tutaj na Raspbian w wersji Jessie!

Aby zainstalować PHP w wersji 7.0 musiałem dodać niestandardowe repozytorium, jak poniżej.

Edytujemy plik:

sudo nano /etc/apt/sources.list

deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free
#deb-src http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free

Instalacja certyfikatów zatwierdzających repozytoria:

sudo gpg –keyserver pgpkeys.mit.edu –recv-key CCD91D6111A06851

sudo gpg –armor –export CCD91D6111A06851 | sudo apt-key add –

I później już standardowo:

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install php7.0
sudo apt-get install php7.0-xml php7.0-curl

Nie wiem jak u Was, ale u mnie Domoticz jest na porcie 80, na którym standardowo instaluje się Apache, musiałem więc zmienić:

sudo nano /etc/apache2/sites-available/000-default.conf

Na:

<VirtualHost *:82>
DocumentRoot /var/www/html
</VirtualHost>

Do tego jeszcze:

sudo nano /etc/apache2/ports.conf

Listen 82

Restart Apache
sudo systemctl restart apache2

I możemy ruszać z Dasthicz, tym razem w wersji Beta. Nie chciałem robić żadnych symlinków, dlatego zainstalowałem go w folderze Apache:

cd /var/www/html

Ściągamy repozytorium:

sudo git clone https://github.com/robgeerts/dashticz_v2 –branch beta dashboard

Gdybyście chcieli jednak zrobić symlink, pobierzcie repozytorium do folderu /domoticz/www/ i wykonajcie

sudo ln -s /home/pi/www/dashboard/ /var/www/html

Pozostaje skopiować CONFIG.js i jesteśmy w domu. U mnie na ten moment Dashticz zgłasza się pod adresem 192.168.1.200:82/dashboard/index.html.

Widzę też, że pojawił się parametr dotyczący przetwarzania RSS:
config[’default_cors_url'] = 'http://cors-anywhere.herokuapp.com/' ;

Wygląda mi na to, że to on zdecydował o tym, że teraz RSS działają bez problemu.

Smart home, Domoticz, Raspberry – z czym się to je

Czytając swojego bloga (serio – czytam czasem co naskrobałem dwa lata temu, aby poprawiać 'warsztat') doszedłem do wniosku, że nie zrobiłem nawet małego wstępu dla amatorów tematów Smart house i Raspberry Pi. Odgórnie przyjąłem, że wszyscy już wiedzą o co chodzi i od razu, 'z grubej rury' przystąpiłem do opisywania tematów. Czasem dość trudnych.

Przy okazji rozpoczęcia strony na Facebook, dotarło do mnie, że nie mam co wrzucić jako początek, jak zainteresować ludzi, wytłumaczyć podstawy. Temu właśnie posłuży ten wpis.

Zaczynamy!

Designed by Freepik

Smart home, smart home, IoT, IoT. Bardzo głośne ostatnio tematy. Czyli tak zwane 'Inteligentne domy'. Osobiście wolę termin 'Sterowane', 'Odpowiednio sterowane' lub 'Automatyczne'. Inteligencję rezerwuję dla tworów żywych.

Dom taki na podstawie czujników czy też informacji z zewnątrz (na przykład pogodowych) potrafi odpowiednio się 'dostosować' do naszych potrzeb.

Dość często wymienia się tutaj przykłady:
– uruchomienia podlewania gdy prognozowany jest brak opadów przez kilka dni,
– automatyczne otwieranie rolet/markiz o poranku
– czy też domykanie ich, gdy słońce świeci akurat w konkretne okno,
– sterowanie ogrzewaniem w domu gdy nas nie ma
– lub ustawianie zadanej temperatury, bo akurat wcześniej wracamy z pracy/wyjazdu,
– inteligentne monitorowanie posesji – jeżeli kurier dzwoni wideofonem przy bramie – wyślij zdjęcie i jeżeli potrzeba – otwórz mu furtkę aby nie bawił się w ogrodową koszykówkę przesyłką,
– ustawianie natężenia świateł w zależności od potrzeb – czytanie/oglądanie filmu/pełna jasność
– łączenie powyższych elementów w sceny – jeżeli wybieram tryb Kino – rozwiń ekran, włącz amplituner, wyłącz światła
– sterowanie głosowe
– powiadamianie głosowe/sms/e-mail

Wszystkie te elementy można zrealizować 'na bogato' zlecając je wyspecjalizowanej firmie, lub hobbystycznie. Temu drugiemu podejściu dedykowany jest blog. Niestety, podczas budowy domu popełniłem kilka błędów, jednym z nich było pociągnięcie zbyt małej ilości kabli do przesyłania danych, 'bo przecież teraz wszystko po WiFi'. Wymusiło to (na ponowne kucie ścian i remonty nie mam ochoty) ustawienie zainteresowania na transmisję bezprzewodową.

Nie jestem profesjonalistą w tym temacie. Cały czas mnóstwo się uczę i wiele tematów jeszcze przede mną. Jeżeli coś jednak zaczynam i mnie wciągnie – 'nie ma zmiłuj' – nie będę spał, ale temat muszę rozgryźć a problemy usunąć. Kropka.

Dlatego zainteresowały mnie platformy Raspberry Pi, Wemos, Arduino. Stąd już krok do komunikacji 433MHz, WiFi, ZigBee, Z-Wave. Czujniki temperatury, wilgotności, zalania, dymu, monitorowanie zużycia energii. Internetowe prognozy pogody, dane w formacie JSON. Temat jest niesamowicie rozległy i ciężko powiedzieć: 'To jest jedyne dobre rozwiązanie'.

Są systemy płatne, kompleksowo zamykające temat przez autoryzowanych instalatorów – Fibaro, Grenton to tylko przykłady polskich rozwiązań, na rynku jest ich mnóstwo. Oferują sterowanie światłem, ogrzewaniem, bezpieczeństwem, czujnikami. Są jednak relatywnie drogie (oczywiście punkt widzenia każdej osoby będzie się różnił) oraz zamknięte, jeżeli chodzi o sposób zaimplementowanych rozwiązań.

Osobiście szukałem systemu darmowego aby sprawdzić, czy Smart home się w ogóle u mnie przyjmie, czy jest sensowny. Patrząc z perspektywy czasu – jak najbardziej tak! Do tego przydałoby się oprogramowanie, które to wszystko zepnie, odczyta dane z czujników, prześle do przekaźników, zapisze do bazy danych, umożliwi analizy, reakcję.

Mój wybór padł na Domoticz. Trzy lata temu 'próg wejścia' w jego przypadku był niższy niż w Home assistant. Aktualnie coraz częściej rozważam opuszczenie Domoticz, albo chociaż na pewien czas równoległe sprawdzenie Home assistant. Wydaje się platformą stabilniejszą, bardziej rozwojową ze względu na sposób jego budowy. Aktualnie jednak – Domoticz!

Dla osób początkujących ważna jest również kolejna informacja – oba systemy są darmowe, możliwe do zainstalowania na Raspberry Pi, komputerach/serwerach obsługujących Linux, Windows, MacOS. Nie nie ryzykujecie zaczynając przygodę ze Smart home.

Dlaczego akurat on?
– po zainstalowaniu na Raspberry Pi (i nie tylko) można go od razu używać, bez dodatkowych skryptów
– dla początkujących praktycznie wszystko da się wyklikać
– bogaty zbiór urządzeń, które są obsługiwane
– na tamten czas dość ładny interface użytkownika

Porównując koszty, są od 5 do 10 razy mniejsze niż przy rozwiązaniach dedykowanych, nadmieniam jednak, że spędziłem mnóstwo czasu ucząc się, dostrajając elementy do swoich potrzeb, instalując, testując. Nie każdy ma ochotę na takie hobby. Mnie akurat wciągnęło.

Kilka przykładów:

Dashboard (czyli główny pulpit). Z tego miejsca mogę sprawdzić status tego co się dzieje w domu – kamery, gniazdka, włączone urządzenia.

Przełączniki – światła, sterowanie IR (TV, wzmacniacz), gniazdka zdalnie włączane, LEDy, system audio multi room

Sceny – połączenie kilku elementów w łańcuch zdarzeń. Jeżeli oglądamy film, to wyłącz światła, włącz amplituner, subwoofer…

Temperatura – dane z każdego z czujników. Łącznie z wilgotnością.

Elementy użytkowe – status użycia Raspberry Pi, szybkość łącza internetowego, nawodnienie kwiatów, pobór prądu w domu

Domoticz umożliwia również robienie raportów w formie graficznej. Tutaj – wykres temperatury na zewnątrz

Ustawianie warunków włączenia/wyłączenia. Tutaj – Włącz światła przed domem godzinę po zachodzie słońca i wyłącz zawsze o 22:00.

Warunki powiadamiania. Tutaj – Jeżeli włączy się światło przed domem – wyślij e-mail na żądany adres

Jeżeli prezentacja danych w Domoticz nam nie odpowiada, zawsze można doinstalować dodatkowe systemy zbierające i prezentujące dane. Na przykład InfluxDB i Grafana.

Zachęcam do przeczytania poprzednich wpisów, postarałem się ułożyć opisane już tematy w pewne pakiety tematyczne:

– Przede wszystkim – Domoticz
– Systemy audio multi-room – Logitech media server, Max2Play
– Zdalny dostęp do Raspberry i Domoticz – Dataplicity
– Czujniki otwarcia/zamknięcia drzwi – Kerui
– Centralki obsługujące różne transmisje: RFLink, Xiaomi Mijia Smart Home
– Prezentacja danych/sterowania elementami domu: Dashticz, aplikacja Pilot, aplikacja MiHome
– Monitorowania zużycia energii: Owl Micro +
– Sterowanie głosem – Amazon Alexa – Echo Dot, Skille, Kalendarze
– Chipy ESP8266 – Wemos D1 Mini
– Instalacja, konfiguracja: Raspberry, Domoticz
– BLE – Bluetooth Low Energy – Mi flora
– Przełączniki Sonoff – Basic, POW, S20
– Sterowanie oświetleniem – włączniki Xiaomi, Milight
– Piloty uniwersalne IR – Broadlink
czujnik smogu
– Zdarzenia, powiadamianie – bezpośrednio w interface Domoticz, skrypty
pourlopowe wnioski

Nie twierdzę, że moja ścieżka jest jedyną dobrą. Ile osób, tyle możliwych rozwiązań, pomysłów, różnorakich podejść. Eksperymentujcie, sprawdzajcie!

Pozdrawiam, życząc miłej i przyjemnej lektury
Cezar

P.S. Życzę również dużo myślenia, potu, zastanawiania się czemu nie działa, szukania rozwiązań problemów.

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

Dashticz – wyświetlanie faz księżyca

Na prośbę jednego z czytelników opiszę sposób skonfigurowania w Dashticz bardzo ładnego, przydatnego dodatku – faz księżyca z ich prezentacją na zdjęciach. Nie dość, że estetyczne, to jeszcze naprawdę przydatne.

Nie jestem autorem tego pomysłu i skryptu, od razu piszę. Dlatego po źródłowy kod odsyłam do:

a postaram się tutaj wyjaśnić sposób jego instalacji.

Zacząć trzeba od stworzenia pliku w folderze /scripts/lua, co ważne z początkiem nazwy script_time_. Dla uproszczenia – można tak jak w przykładzie – script_time_moon.lua.

Tam wklejamy kod wskazany w linku.

Tak jak w podanej w Wiki Domoticz instrukcji – krytyczne jest założenie 2 zmiennych użytkownika i 5 wirtualnych czujników w zakładce Devices.

Najpierw jednak Hardware:

I później Dummy sensors z typami jak poniżej:

Czyli User Variable:

MoonPicture STRING
MoonphaseCheck STRING

I Dummy:

Dummy Switch Moon up Text
Dummy Switch Moon under Text
Dummy Switch Moonpercentage Percentage
Dummy Switch Moon age Custom Sensor Days
Dummy Switch Moonphase Text

Teraz pora zmienić dane w script_time_moon.lua. Co do zmiennych, które musimy dostosować:

local moonpicture = „MoonPicture”

Nazwa zmiennej użytkownika – tam skrypt zapisuje numer obrazka png do wyświetlenia.

local checkvar = „MoonphaseCheck”

Również używana w skrypcie. Wpisywana tam jest nazwa fazy. Można zmienić na angielski i później wyświetlać w Domoticz.

local checktime = 3600

Interwał odświeżania danych z WeatherUnderground. Nie może być zbyt mały, bo zależy od planu jaki tam mamy. A zapewne będzie darmowy…

local city = „Warszawa”

Miasto dla WeatherUnderground

local countryCode = „PL”

Kod kraju dla WeatherUnderground

local idxmoonrise=’161′
local idxmoonset=’162′
local idxmoonpercentage =’163′
local idxmoonage =’164′
local idxmoonphase =’165′

Powyżej 5 czujników, w których musimy wpisać IDX takie jak założyliśmy wcześniej.

local wuAPIkey = „xxxxxxxxxxx”

Klucz WeatherUnderground. Dla przypomnienia – instrukcja założenia tutaj: https://cezarowy.blogspot.com/2017/09/dashticz-spenienie-marzen-maniaka.html

AKTUALIZACJA 2018-05-21!

Z tego co widzę to Weather Underground przestało udostępniać darmowe API z danymi pogodowymi! Postaram się zbadać temat i odpowiedni zmienić opis Dashticz.

local DOMO_IP = „192.168.1.200”
local DOMO_PORT = „80”

Dane dostępowego naszego Domoticz.

local tempfilename = '/var/tmp/phase.tmp'

To miejsce gdzie będzie się zapisywał plik z danymi zrzucanymi z WeatherUnderground. Część danych wygląda na przykład tak:
  „astronomy”: 1
  }
        }
                ,       „moon_phase”: {
                „percentIlluminated”:”81″,
                „ageOfMoon”:”11″,
                „phaseofMoon”:”Waxing Gibbous”,
                „hemisphere”:”North”,
                „current_time”: {
                „hour”:”22″,
                „minute”:”20″
                },
                „sunrise”: {
                „hour”:”7″,
                „minute”:”23″
                },
                „sunset”: {
                „hour”:”16″,
                „minute”:”26″
                },
                „moonrise”: {
                „hour”:”12″,
                „minute”:”26″
                },
                „moonset”: {
                „hour”:”2″,
                „minute”:”54″
                }
        },
Celem skryptu na Wiki Domoticz jest odpowiednie odczytanie tego pliku i zamapowanie zmiennych.
Jeżeli zmienne są poprawne i skrypt zacznie działanie (sam, ponieważ script_time_ uruchamiają się automatycznie), będzie to wyglądać tak:
W sumie mamy już wszystko. Pozostaje konfiguracja Dashticz.
W sekcji config dodajemy:
config[’idx_moonpicture'] = 7;
Ten IDX jest numerem naszej User Variable.
W sekcji buttons:
var buttons = {} 
buttons.moon = {width:6, isimage:true, refreshimage:60000, image: 'moon'}
W columns:
columns[1] = {} 
columns[1][’blocks'] = [buttons.moon];
columns[1][’width'] = 3;
I screens:
screens[1] = {}
screens[1][’columns'] = [1];
Oczywiście Wy powinniście dołożyć ten przycisk w kolumnach, które u Was są poprawne i na odpowiednim ekranie.
Chciałbym teraz napisać: 'Cieszymy się, że działa' i mam nadzieję, że tak będzie…

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!

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

Dashticz – spełnienie marzeń maniaka gadżetów ;)

W jednym z poprzednich postów opisałem front-end do Domoticz – framb0ise.

Jest on bajecznie prosty w instalacji i konfiguracji, co jest także jego minusem – możliwości są ograniczone. Warto zająć się innym, potężnym już w moim mniemaniu, narzędziem – Dashticz.

Instalacja i uruchomienie jest proste, osadzenie Ulubionych i automatyczne ułożenie ikonek również. Ciekawie zaczyna się robić, gdy chcemy dashboard dostosować do naszych potrzeb. I to opiszę w tym i kolejnym poście. Temat jest na tyle bogaty, że lepiej rozbić go na dwa osobne – dla amatorów i zaawansowanych 🙂

Po zalogowaniu się do terminala przechodzimy do domoticz/www

git clone https://github.com/robgeerts/dashticz_v2

cd domoticz/www/<dashticzv2 folder>/custom/
cp CONFIG_DEFAULT.js CONFIG.js

Aby zaktualizować wersję, wystarczy dać polecenie.
git pull

WAŻNE aby wcześniej zrobić kopię zapasową swojej konfiguracji.

W najprostszej konfiguracji wystarczy usunąć linie komentarzy /* */ z pliku CONFIG.js i powinniśmy już cieszyć się pulpitem z naszymi Ulubionymi (czyli urządzeniami dodanymi do Ulubionych w Domoticz) elementami.

Powyższa zaznaczona część zdania jest bardzo ważna! Często wiele osób jest zaskoczona tym, że ich zmiany nie działają. Domyślnie cały CONFIG.js jest opatrzony komentarzem (tak to się , który powoduje, że Dasthicz NIE WIDZI zmian, które wprowadzacie).

Można też użyć najprostszego pliku:
var config = {}
config[’language'] = 'pl_PL'; //lub: en_US
config[’domoticz_ip'] = 'http://IP:Port';
config[’domoticz_refresh'] = '5′;
config[’dashticz_refresh'] = ’60′;

Ale my jesteśmy ambitni i nasz początkowy ekran będzie wyglądał następująco:

Dla wyjaśnienia – na powyższym zrzucie ekranu wyłączyłem Ulubione, żeby nie zaśmiecić ekranu. Trochę zbyt dużo u mnie już tego jest 🙂

Tak dla pewności, aby dostać się do Dashticz po jego zainstalowaniu trzeba wejść na adres http://IP_Domoticz/dashticz_v2/index.html

Aby to osiągnąć musimy wrzucić do CONFIG,js następujący tekst

var config = {}
var _BACKGROUND_IMAGE = 'bg1.jpg'
config[’domoticz_ip'] = 'http://IP:Port';
config[’app_title'] = 'Dashticz';
config[’domoticz_refresh'] = '5′;
config[’dashticz_refresh'] = ’60′;
config[’language'] = 'en_US';
config[’timeformat'] = 'DD-MM-YY HH:mm';
config[’wu_api'] = 'xxxxxxxx';
config[’wu_city'] = 'City';
config[’wu_name'] = 0;
config[’wu_country'] = 'PL';
config[’auto_positioning'] = 1;
config[’use_favorites'] = 1;
config[’last_update'] = 1;
config[’hide_topbar'] = 0;
config[’hide_seconds'] = 1;
config[’use_fahrenheit'] = 0;
config[’use_beaufort'] = 0;
config[’static_weathericons'] = 0;
config[’hide_mediaplayer'] = 0;

var buttons = {} 
buttons.radio = {width:12, image: 'img/radio_on.png', title: 'Radio', url: 'http://rmf.fm'} 
buttons.news = {width:12, icon: 'fa-newspaper-o', title: 'News', url: 'http://news.gazeta.pl'} 
buttons.log = {key:’log', width:12, icon:’fa-microchip', title: 'Domoticz Log', log:true, level: 2}

Pozwolę sobie objaśnić poszczególne elementy, przyda się to do późniejszego (bardziej zaawansowanego) konfigurowania pulpitu.

var _BACKGROUND_IMAGE = 'bg1.jpg'
Zmienna opisująca nazwę pliku z tłem dla Dashticz. W folderze <dashticz>/img znajduje się wiele przykładowych plików z tłami do wykorzystania. Oczywiście nic nie stoi na przeszkodzie, aby użyć swoich, ale o tym w kolejnym wpisie

config[’domoticz_ip'] = 'http://IP:Port';
Standard – IP i port Domoticz

config[’app_title'] = 'Dashticz';
Tytuł aplikacji, który będzie wyświetlany na pasku tytułowym

config[’domoticz_refresh'] = '5′;
config[’dashticz_refresh'] = ’60′;
Kolejno – interwał odświeżania danych z Domoticz oraz odświeżania samego Dashticz

config[’language'] = 'en_US';
Język w jakim będzie się z nami komunikować Dashticz – na przykład en_US lub pl_PL

config[’timeformat'] = 'DD-MM-YY HH:mm';
Format czasu używany w Dashticz

config[’wu_api'] = 'xxxxxxxx';
config[’wu_city'] = 'City';
config[’wu_name'] = 0;
config[’wu_country'] = 'PL';

Klucz API Weather Underground, dzięki któremu zobaczymy ikony z prognozą pogody

Dla jasności – klucz do API Weather Underground możemy uzyskać na ich stronie: https://www.wunderground.com/weather/api/. Darmowa subskrypcja powinna być dla nas wystarczająca (przy okazji – mam nadzieję, że dodaliście go w Domoticz, chociaż osobiście korzystam ostatnio częściej z DarkSky).

AKTUALIZACJA 2018-05-21!

Z tego co widzę to Weather Underground przestało udostępniać darmowe API z danymi pogodowymi! Postaram się zbadać temat i odpowiedni zmienić opis Dashticz.


config[’auto_positioning'] = 1;
config[’use_favorites'] = 1;
Dwie BARDZO ważne opcje, które na początku mogą sprawić trudności. Ważne jest aby były włączone, jeżeli chcecie uruchomić Dashticz 'na szybko'. Pierwsza poinformuje system, żeby automatycznie ułożyć ikony, druga, żeby użyć Ulubionych zdefiniowanych w Domoticz.

config[’last_update'] = 1;
Czy pokazywać czas aktualizacji naszych czujników?

config[’hide_topbar'] = 0;
Ukrycie górnego paska

config[’hide_seconds'] = 1;
Pokazanie sekund na zegarze

config[’use_fahrenheit'] = 0;
config[’use_beaufort'] = 0;
Czy używać stopni Celsjusza i skali Beauforta?

config[’static_weathericons'] = 0;
Czy ikony pogody powinny być animowane?

config[’hide_mediaplayer'] = 0;
Czy ukrywać ikony odtwarzacza multimedialnego, jeżeli nic nie jest odtwarzane?

var buttons = {} 
buttons.radio = {width:12, image: 'img/radio_on.png', title: 'Radio', url: 'http://rmf.fm'} 
buttons.news = {width:12, icon: 'fa-newspaper-o', title: 'News', url: 'http://news.google.pl'} 
buttons.log = {key:’log', width:12, icon:’fa-microchip', title: 'Domoticz Log', log:true, level: 2}

Pierwszy – pozwoli wyświetlić po naciśnięciu stronę z radiem internetowym, drugi stronę z wiadomościami, trzeci – log Domoticz. To tak w ramach ciekawostki.

To tyle na początek. Dopiero zaczynamy się jednak rozkręcać, bo możliwości są ogromne!

Edit: Część druga
Oraz Cześć trzecia