niedziela, 29 października 2017

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

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!

piątek, 27 października 2017

Monitorowanie aktywności urządzeń w sieci

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

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

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

Ruszamy.

Na początek - definiowanie nowej zmiennej w Domoticz.


Niech się nazywa PRESENCE_LIST (jak w przykładzie z forum Domoticz). Format jest następujący: Adres_MAC;ID_Z_Domoticz_TEGO_CZEGO_STAN_SPRAWDZAMY| (pionowa kreska!). Na końcu łańcucha już jej nie dajemy. Czyli na przykład: aa:bb:cc:dd:ee:ff;73|bb:cc:dd:ee:ff:gg;122. Adres MAC urządzeń możemy poznać na przykład za pomocą aplikacji ipscan24.

Cyfra po średniku to IDX naszego urządzenia (które chcemy testować na obecność w sieci!) w Domoticz. Wcześniej należy pamiętać, aby stworzyć odpowiedni sprzęt w sekcji Hardware!

Czyli na przykład Playstation timer jako Dummy w Sekcji Hardware i tam tworzymy dwa Virtual sensors: jeden Switch i drugi Counter Incremental






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

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install arp-scan

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

cd domoticz

sudo nano scripts/Check_MAC.sh

I tam wstawiamy:

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

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

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

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

I WAŻNE, prawa do uruchamiania

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

sudo nano scripts/lua/script_time_Presence.lua

A tutaj to:

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

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

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

end

I na koniec dla KAŻDEGO urządzenia:

sudo nano scripts/lua/script_time_playstation_update.lua

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

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

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

return commandArray

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


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

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

Efekt?

Jak poniżej.

Pozdrawiam! Miłej zabawy!



EDIT.

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

1. Skoro działa, bo buczy i go słyszę, zbadajmy jaki ma adres MAC:
2. Dodaję wirtualny Switch, na Hardware typu Dummy. Zrobiłem to na istniejącym o nazwie Telefony:
3. Sprawdzam jaki ma IDX:
4. Dodaję adres MAC i IDX do zmiennej (fakt, adres MAC MAŁYMI literami):
5. Po chwili Switch odpowiada:



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

poniedziałek, 23 października 2017

Nowa wersja aplikacji MiHome oraz Yeelight

Aloha!

Zostałem dzisiaj mile zaskoczony przez aplikację MiHome na iPhone, która prosiła o aktualizację. Mając przed oczami ostatnią wersję, z rozjechanymi tłumaczeniami, 'place holderami' dla tekstów, itp. bardzo się bałem tego co zastanę. 

Jakże miło się rozczarowałem! Aplikacja zmieniła się kompletnie, i - co ważne - na plus. Jako że można używać Domoticz równocześnie z aplikacją, dobrze by było, żeby owa aplikacja działała dobrze.

Wcześniejszą listę zastąpiło ładne zestawienie w formie bloków ikon i zdefiniowanego tekstu, który można dowolnie zdefiniować, przesunąć, skonfigurować. W górnej części jawna zachęta do zakupu innych urządzeń - Nawilżacza powietrza i czujnika jego jakości ;)


Podział na pokoje ma w końcu sens, widać gdzie i jakie czujniki się znajdują i co raportują.


Coś, co mi osobiście bardzo się podoba - 'przewijalne' zakładki z najważniejszymi informacjami o czujnikach - bardzo ułatwiają życie i wprowadzają dużo ładu przy oglądaniu.



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

W przypadku na przykład Smart Power Plug wygląda to bardzo ciekawie.


Można nawet wybrać ikonę, która będzie prezentować nasze urządzanie.


Grzebiąc w opcjach znalazłem też 'Charge Protection'- automatyczne wyłączenie gniazdka po naładowaniu tego, co się w tym gniazdku znajduje. Warto będzie spróbować.


Przy okazji - zaktualizowała się również aplikacja do żarówek Yeelight. Tutaj też kilka nowości!

Stworzone sceny dla żarówek są bardzo przyjemne wizualnie. Tworzenie opiera się na wybraniu ikony, wpisaniu nazwy i, na przykład, przypisaniu aktualnego stanu żarówki do sceny.


A sterowanie samymi żarówkami, połączonymi w grupy jest banalnie proste.


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




sobota, 21 października 2017

ESPEasy, Wemos i Domoticz - ABC podłączenia

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

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






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


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

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



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

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

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

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

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



Kroków jest sześć:

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

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

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


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

Programowanie rozpocznie się


Po zakończeniu otrzymamy stosowany komunikat


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

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


Po tym kroku nastąpi restart

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

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

Zaczynamy konfigurację! Ohoho!


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

Teraz Devices oraz Edit, przy Task = 1.

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

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

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

Po wybraniu Submit pokaże się nam temperatura.

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


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