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 +

Pojawi się nam okno jak poniżej

- 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.
- nazwa tworzonego obiektu.
- 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.
- hm-rpc.0.IEQ1234567.0 – channel
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ę

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

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.

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ę

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ę

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
