Kopia bezpieczeństwa bazy, folderu Domoticz oraz innych elementów

Jak mówią, ludzie dzielą się na tych, którzy backupy robią i na takich, którzy będą robić.

Żeby za późno nie znaleźć się w tej drugiej grupie – szybki skrypt do tworzenia backupu (na przykład Domoticz i HABridge) na zewnętrzny dysk. W moim przypadku pendrive, z którego do dane czasem zgrywam na osobny dysk zewnętrzny. Jest co prawda mechanizm wbudowany w Domoticz, ale osobiście mi on nie odpowiadał – robi backup na tą samą kartę, na której jest Domoticz, więc sensu to nie ma…

Raz, dwa trzy, skrypt piszesz Ty. Nie ukrywam – jest to zmieniony pod moim kątem skrypt z Wiki Domoticz. Ale po to jest Wiki…

Zaczynamy więc od:

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

Wpisujemy (oczywiście zmieniając dane do Domoticz oraz foldery, na które chcecie kopiować). Ja, jak widać, dodatkowo robię sobie backup HABridge pod kątem Alexa.

DOMO_IP=”192.168.1.200″  # Domoticz IP 
DOMO_PORT=”80″        # Domoticz port 
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
BACKUPFILE=”domoticzbackup_$TIMESTAMP.db” # backups will be named „domoticz_YYYYMMDDHHMMSS.db.gz”
BACKUPFILEGZ=”$BACKUPFILE”.gz

#Create backup and make tar archives
/usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /media/Dysk/Domoticz_backup/database/$BACKUPFILE
tar -zcvf /media/Dysk/Domoticz_backup/scripts/domoticz_scripts_$TIMESTAMP.tar.gz /home/pi/domoticz/scripts/
tar -zcvf /media/Dysk/Domoticz_backup/www/domoticz_wwwfolder_$TIMESTAMP.tar.gz /home/pi/domoticz/www/
tar -zcvf /media/Dysk/HABridge/HABridge_$TIMESTAMP.tar.gz /home/pi/habridge/data/

#Delete backups older than 31 days
/usr/bin/find /media/Dysk/Domoticz_backup/database/ -name '*.db’ -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/scripts/ -name '*.tar.gz’ -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/www/ -name '*.tar.gz’ -mtime +31 -delete
/usr/bin/find /media/Dysk/HABridge/ -name '*.tar.gz’ -mtime +31 -delete

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


Ja ustawiłem sobie uruchamianie go na 1:30 w nocy w cron:
30 1 * * * sudo home/pi/domoticz/scripts/domoticz_backup.sh
Oby się Wam backup nigdy nie przydał… Ale niestety, podczas pracy z Raspberry Pi widzę, że nie jest to widzimisię, a konieczność! 
Oczywiście można go zmienić, aby backupy lądowały na zewnętrznym FTP, czy też dysku NAS. Dla mnie jednak ta forma jest wystarczająca.

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

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

Xiaomi Smart Home, integracja z Domoticz z poziomu iPhone

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

Samo parowanie opisałem wcześniej.

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

Wybrać 'trzy kropki’,

I następnie About.

Pojawi się menu z trzema pozycjami.

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

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

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

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

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

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

Powyżej czujnik temperatury i wilgotności.

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

RFLink

Jednym z celów, dla których zakupiłem Raspberry Pi była prosta automatyka domowa. Na początku próbowałem wszystko zrobić własnoręcznie, na breadboard, lutować kable, próbować uruchomić nadajnik i odbiornik. Działało.

Później znalazłem mały system Pilight, który obsługiwał moje nadajniki/odbiorniki. Zasięg był jednak kiepski a odczytywanie sygnałów zabierało większość mocy Raspberyy Pi.

Apetyt rośnie jednak w miarę jedzenia, dlatego przeszedłem później do Domoticz i RFLink (alternatywa dla RFXCom), obsługujący urządzenia nadające i odbierające na 433MHz (głównie, chociaż nie tylko – w ostatnich aktualizacjach dodano również obsługę Philips, Milight oraz sprzętów Ikea). Co ważne – to on zajmuje się filtrowaniem sygnałów przychodzących z nadajników 433MHz (np. w termometrach, mierniku energii), także Raspberry Pi nie dostaje zadyszki przy obsłudze protokołu.

Ja osobiście z powodu braku talentu do lutowania zakupiłem wersję zmontowaną na https://www.nodo-shop.nl/nl/rflink-gateway/127-rflink-arduino-antenne-.html. Przyszedł błyskawicznie, porządnie zlutowany. Jedyne co zrobiłem to zapakowałem zmontowany moduł do przezroczystej obudowy.

Liczba urządzeń jest ogromna i naprawdę jest w czym wybierać. Dostępna pod adresem: http://www.rflink.nl/blog2/devlist.

W Domoticz wystarczy dodać nowe urządzenie w sekcji Hardware:

Nasze gadżety pojawią się automatycznie po chwili na liście Devices:

Osobiście używam:
– czujniki temperatury różnych marek

– czujniki dymu w domu

– gniazdka 433MHz – tutaj OGROMNY minus – nie ma statusu zwrotnego, więc w sumie nie wiemy czy coś jest włączone, czy nie. Coś za coś jednak… Cena robi swoje, tej wady nie da się usunąć, bo same urządzenia takiego statusu nie wysyłają.

czujniki otwarcia drzwi/okien
miernik energii elektrycznej

Co pewien czas pojawiają się na stronie projektu aktualizacje firmware (http://www.nemcon.nl/blog2/download), które wgrywamy za pomocą załączonego w pakiecie programu: RFLinkLoader (pod Windows, można to zrobić bezpośrednio na Raspberry Pi używając avrdude).

Trzeba wskazać plik RFLink.cpp.hex i przycisnąć przycisk opisany jako Upload/Program Firmware to device.

WAŻNE! Czasem Windows nie był na tyle łaskawy aby zainstalować sterowniki od ręki, pomogła u mnie w tym przypadku instalacja pakietu do obsługi Arduino: https://www.arduino.cc/en/Main/Software

Aby zrobić to samo od razu na Raspberry Pi:
sudo apt-get install avrdude

Skopiować plik hex na przykład do katalogu pi, następnie WYŁĄCZYĆ, NIE KASOWAĆ RFLink w Domoticz i zaktualizować poleceniem:
avrdude -v -p atmega2560 -c stk500 -P /dev/ttyACM0 -b 115200 -D -U flash:w:/home/pi/RFLink.cpp.hex:i

WŁĄCZYĆ RFLink w Domoticz

Xiaomi Mijia Smart Home – nowe gadżety przyszły :D

Może żadna to nowość, ale cieszę się niezmiernie. 
Dwa zestawy Xiaomi Mijia znalazły się u mnie w domu. Z pewnych względów jeden pozostanie w aplikacji MiHome i to opiszę dzisiaj.

Czujniki po wyjęciu z pudełek zaskakują rozmiarem. Nie są podobne do tych monstrów, które stoją często w naszych domach. Czujnik temperatury jest niewiele większych od kciuka. Przynajmniej mojego 🙂

Niestety, trzeba wspomnieć o minusach. Bez przejściówki z gniazdek typu chińskiego na polski nie uruchomimy zestawu…

WAŻNE – przejściówki często NIE SĄ załączone w zestawach. Ja kupiłem różne, całkiem ciekawe można znaleźć w Leroy Merlin.

Po podłączeniu centralka przemówi do nas w pięknym, chińskim języku. Niestety, ni w ząb nie rozumiałem co chce mi przekazać 😉

Po włączeniu aplikacji MiHome wybrałem lokalizację Mainland i mogłem wybrać jakie urządzenie chcę sparować – na początek Gateway.

Parowanie jest proste – postępujemy zgodnie z instrukcjami aplikacji – trzy kroki, zgodnie z kolorami na centralce.

Po udanym procesie parowania oraz aktualizacji oprogramowania mamy od razu dostęp do różnych funkcji centralki, które nie są tak ubogie jakby się mogło wydawać:
– nocne światło RGB z możliwością dopasowania koloru oraz jasności
– głośnik i radia internetowe. Da się załadować inne niż chińskie, ale o tym albo w innym wpisie, albo zaktualizuję ten.
– zdarzenia, zegar, ustawianie czasu włączenia/wyłączenia

Sama centralka jako taka w docelowym miejscu interesuje mnie dużo mniej niż termometr, dlatego od razu zabrałem się do połączenia Temperature and humidity sensor. Tutaj również wystarczyło przycisnąć stylowy przycisk na 5 sekund i automatycznie został dodany.

W efekcie mam na bieżąco temperaturę dostępną z każdego miejsca w którym jestem a możliwością przeglądania historii. Cel osiągnięty!

Dodatkowo można dodawać automatykę do centralki:
– gdy pojawimy się w domu
– gdy wychodzimy
– gdy wstajemy
– gdy śpimy
– wyzwalanie alarmu czujnikami – na przykład w przypadku otwarcia drzwi gdy śpimy

Wszystkie urządzenia od Xiaomi integrują się ze sobą, możemy więc na przykład włączyć światło w centralce gdy opaska Mi Band wykryje, że wstaliśmy.

Powodzenia w używaniu i instalowaniu!
W kolejnych wpisach zaawansowany Dashticz oraz podpinanie pozostałych elementów Xiaomi do Domoticz.

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

Licznik błyskawic w Domoticz

Dzień dobry!

Dzisiaj kolejny skrypt w stylu 'nie jest mi to do niczego potrzebne, ale skoro można, to czemu nie’…

Ponownie, korzystając z uprzejmości użytkowników forum Domoticz, skonfigurowałem i uruchomiłem program, który odczytuje ze strony ilość wyładowań atmosferycznych w zadanym dystansie.

Instalacja i konfiguracja jest prosta i szybka. W sumie jedyne co musimy zrobić, to założyć wirtualny czujnik (czyli najpierw zakładka hardware, później Create Virtual Sensors).

Ważne jest, aby skonfigurować zmienne server, port, deviceIdx, distanceRange. Jeżeli w Domoticz macie skonfigurowane koordynaty GPS, skrypt je stamtąd pobierze. Jeśli nie – trzeba je podać ręcznie. Moim zdaniem jednak i tak są potrzebne, aby mieć informację o wschodach/zachodach słońca.

Poniżej skrypt do wklejenia i zmiany:

# Following libraries in python are needed : json, yaml,math,time,requests
# This script will load an external json file that contact for europe the lightning information and will send it to Domoticz when it’s
# inside the distance range

import math
import requests
import json
import os
from datetime import datetime

# Domoticz server settings
server = „http://192.168.1.200”
port = 80
deviceIdx = 154

# Location to import the lightning info
jsonUrl = „http://www.onweerdetectie.com/domoticz_bo.json”

# GPS location and distance to calculate
#latHome = xx.xxxxxx
#lngHome = xx.xxxxxx
distanceRange = 10  # Distance in km

# Try to get GPS location from domoticz
try:
    data = json.loads(
        requests.get(
            „%s:%d/json.htm?type=settings” %
            (server, port)).content)
    latHome = float(data[’Location’][’Latitude’])
    lngHome = float(data[’Location’][’Longitude’])
except:
    pass

# Location distance calculation

def distance(lat1, lng1, lat2, lng2):
    radius = 6371

    dLat = (lat2 – lat1) * math.pi / 180
    dLng = (lng2 – lng1) * math.pi / 180

    lat1 = lat1 * math.pi / 180
    lat2 = lat2 * math.pi / 180

    val = math.sin(dLat / 2) * math.sin(dLat / 2) + math.sin(dLng / 2) *
        math.sin(dLng / 2) * math.cos(lat1) * math.cos(lat2)
    ang = 2 * math.atan2(math.sqrt(val), math.sqrt(1 – val))
    return radius * ang

last = 0
if os.path.exists(„/tmp/last_lightning.txt”):
    f = open(„/tmp/last_lightning.txt”)
    last = int(f.read())
    f.close()

z = requests.get(jsonUrl)
data = json.loads(z.content)
value = 0
ignored = 0
for pos in data:
    time_, lat, lng = pos
    distanceBetween = distance(latHome, lngHome, lat, lng)
    if (distanceBetween <= distanceRange):
        if (time_ > last):
            value += 1
        else:
            ignored += 1

f = open(„/tmp/last_lightning.txt”, „w”)
f.write(str(time_))
f.close()

print („Found %d matches — %s” %
       (value, datetime.strftime(datetime.now(), „%c”)))
print („%d old matches were ignored — %s” %
       (ignored, datetime.strftime(datetime.now(), „%c”)))

requests.get(„%s:%d/json.htm?type=command&param=udevice&idx=%s&svalue=%d” % (server, port, deviceIdx, value))

Ja zapisałem go w /home/pi/domoticz/scripts/python/lightning.py

Później wpis do cron, wygodniej było mi go uruchamiać co 15 minut.

crontab -e

*/15 * * * * sudo python /home/pi/domoticz/scripts/python/lightning.py

Działa, cieszy.

Czujnik otwarcia/zamknięcia drzwi w Domoticz

Dzisiaj krótki wpis, bo i temat nie najtrudniejszy, aczkolwiek z małym 'haczykiem’.

Dotarł do mnie ostatnio czujnik otwarcia/zamknięcia drzwi Kerui. Bardzo estetyczne, dobrze działające urządzenie, miałem z nim jednak pewien zgryz w Domoticz. Wysyła osobny sygnał otwarcia drzwi i osobny zamknięcia – co jest akurat dobrym rozwiązaniem, ale nie wiedziałem na początku jak sobie z tym poradzić.

Czujnik Kerui
Z RFLink zadziałał od razu, jak jednak oprogramować osobne sygnały na jednym wskaźniku? 
Okazało się, że trzeba pod sygnał otwarcia podpiąć Sub/Slave Device z sygnałem zamknięcia. Czyli, mówiąc prosto – pod sygnał Drzwi otwarte podpiąłem Drzwi zamknięte.

Działa i cieszy.
P.S. Mała poprawka/sugestia. Mimo tego, że stan ikon poprawnie się zmieniał, nie mogłem ustawić notyfikacji e-mail o otwartych drzwiach. Czego bym nie robił, e-mail przychodził wyłącznie po ich zamknięciu. Zmieniłem typ na Contact i poszło 'od strzału’