ID – zrób to sam

Inteligentny dom stworzony własnymi rękami

Skrypty

2. Zliczanie uruchomień TV

Przydatny link: dokumentacja

Na początku w zakładce objects dodamy obiekt, który będzie naszym licznikiem, w tym celu klikamy na górne menu w +

rys. 1

Pojawi się nam okno jak poniżej

rys. 2
  1. rodzic tworzonego obiektu, jeżeli pole jest puste to obiekt nie będzie miał rodzica i znajdzie się w głównej gałęzi obiektów. Nieraz aby to pole było puste należ odświeżyć przeglądarkę na zakładce Objects. Jeżeli chcemy aby obiekt miał rodzica, to przed kliknięciem w + należy zaznaczyć rodzica.
  2. nazwa tworzonego obiektu.
  3. typ tworzonego obiektu
  • hm-rpc.0.IEQ1234567 – device
    • hm-rpc.0.IEQ1234567.0 – channel
      • hm-rpc.0.IEQ1234567.0.INFO – datapoint
      • hm-rpc.0.IEQ1234567.0.RSSI – datapoint
    • hm-rpc.0.IEQ1234567.0 – channel
      • hm-rpc.0.IEQ1234567.0.STATE – datapoint
      • hm-rpc.0.IEQ1234567.0.BATTERY – datapoint 4.

4. Typ danych dla obiektu typu datapoint

W pierwszej kolejności tworzymy obiekt typu device i nazywamy go liczniki.0. Otworzy nam się okno z ustawieniami danego obiektu, ale ponieważ nie chcemy nic w nich zmieniać to klikamy cancel. Następnie zaznaczamy utworzony obiekt liczniki.0 aby były rodzicem kolejnego obiektu i tworzymy obiekt typu channel o nazwie TV i postępujemy tak samo jak w przypadku poprzedniego obiektu.
Na tym etapie powinniśmy mieć taką strukturę

rys. 3

Zaznaczamy TV i tworzymy kolejny obiekt, ale tym razem wybieramy typ obiektu jako datapoint i powinniśmy zobaczy takie okienko

rys. 4

Jak widzimy pomimo, że wybrany mamy typ datapoint nie wyświetla się nam pole State type, które widzieliśmy na 1 rysunku tego artykułu. Jest to jeden z błędów ioBrokera, jednak nie ma co panikować. Wpisujemy w polu name licznik i klikamy ADD.
W oknie które się pojawi z listy wybieramy interesujący nas typ danych (w naszym wypadku number) i klikamy SAVE.

rys. 5

Jeżeli w drzewku nie widać dodanych obiektów to można kliknąć na przycisk przebudowania drzewka (pierwszy przycisk z rys. 1). Po odświeżeniu powinniśmy zobaczyć taką strukturę

rys. 6

Jak widać na obrazku pomimo tego, że obiekt licznik zmieniliśmy na typ number to jego wartość jest false. Aby to skorygować należy kliknąć 2 razy na wartości false dzięki czemu będziemy mogli wpisać nową wartość – w naszym przypadku 0.
Jeżeli wszystko przebiegło pomyślnie to będziemy mieli taką strukturę

rys. 7

Struktura założona, teraz zajmiemy się skryptem.
Przechodzimy do zakładki Scripts i tworzymy nowy skrypt (jak to zrobić opisałem w 1 artykule) o nazwie licznik_tv.

on({id: 'ping.1.192_168_1_100'/*Tv*/, change: "ne"}, function(obj){
    //sprawdza czy nowa wartość to true
    if(obj.state.val){
        //odczytanie stanu licznika z obiektu
        var stan_licznika = getState('liczniki.0.tv.licznik'/*licznik*/).val;

        //inkrementacna licznika
        stan_licznika++;

        //zapisanie nowego stanu licznika do obiektu
        setState('liczniki.0.tv.licznik'/*licznik*/, stan_licznika);
    }
});

funkcja getState(id) pobiera obiekt w formie

{
    val: value, 
    ack: true/false, 
    ts: timestamp, 
    lc: lastchanged, 
    from: origin
}

ponieważ chcemy odczytać wartość jaką dany obiekt przechowuje musimy użyć odpowiedniego parametru (w naszym przypadku val).

Zapis do obiektu wykonujemy funkcją setState(id, nowa_wartosc).

Skrypt zapisujemy i uruchamiamy

ZOSTAW ODPOWIEDŹ

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *