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:

82 komentarze do “Monitorowanie aktywności urządzeń w sieci”

  1. Witam po podaniu polecenia sudo apt-get arp-scan pojawia się błąd
    E: Invalid operation arp-scan co moze być przyczyną?

  2. W drugim poleceniu też jest błąd sudo apt-get ugrade
    Robię wszystko według poradnika jednak nie pokazuje mi ze urządzenie jest włączone można prosić o skrypt w pliku gotowym do wklejenia może podczas kopiowania coś cie miesza

  3. Dobra, w takim razie po kolei:
    1. Co odpowiada arp-scan? Dokładnie komenda sudo arp-scan –localnet | grep -e xx:xx:xx:xx:xx:xx – w miejsce xx:xx wstaw adres MAC tego, co chcesz zbadać – na przykład laptop na którym pracujesz
    2. Jeżeli poda adres IP a za nim na czerwono adres MAC, to już jesteśmy do przodu.
    3. Kolejny krok: jaki wynik daje w przeglądarce podanie http://192.168.1.200/json.htm?type=command&param=switchlight&idx=xx&switchcmd=Off? Adres IP zamień na swój, xx na numer IDX wirtual switch, który ma przejść na On, jeżeli sprzęt jest włączony. Czyli na przykład virtual switch o nazwie Laptop.
    4. Powinieneś dostać komendę:
    {
    "status" : "OK",
    "title" : "SwitchLight"
    }
    5. Status urządzenia powinien się zmienić na On

  4. Odpowiada adresem ip czyli ok ale nastęny krok juz nie odpowiada
    {
    "message" : "Error sending switch command, check device/hardware!",
    "status" : "ERROR",
    "title" : "SwitchLight"
    }

  5. W takim wypadku znaczy to najprawdopodobniej, że próbujesz włączyć coś, czego nie ma, albo co nie może zostać włączone. Możesz załączyć zrzuty ekranu z Devices?

  6. Wrzuć link do imgur czy czegoś podobnego.

    Co do samego rozwiązania – na pewno działa, bo dwa tygodnie temu przechodziłem tą ścieżkę z innym kolegą 🙂 Jeżeli będzie trzeba to jakiś komunikator wykorzystamy.

  7. No to nie ma opcji. Po podaniu IDX = 50, zmianie w podanym wyżej json na On musi przejść na On.

    Przychodzi mi jeszcze jedna rzecz do głowy – masz wpisaną maskę sieci domowej w Settings -> Local Networks? Bo może Domoticz Ci nie akceptuje wywołań z sieci wewnętrznej bez konieczności logowania.

  8. Super. W takim razie teraz ikona powinna się świecić na żółto. A jeżeli tak, to teraz kolejny skrypt będzie liczył czas. Ważne, aby dobra nazwa była podana

  9. No to kolejne pytanie – czy NA PEWNO masz dobrze przypisany adres MAC do IDX? Wklej może również tutaj zawartość zmiennej PRESENCE_LIST (lub takiej jaka jest u Ciebie). Wygląda na to, że włączasz włącznik ręcznie, jest ok, później skrypt wykrywa, że jednak na podstawie MAC go nie widzi i ustawia go na wyłączony.

  10. No nie dodałem nowe urzadzenie i zmienł sie idx i zmienilem tez w presence_list ale dalej nie pokazuje stanu juz tego nie ogarniam

  11. Rozumiem. To jest w sumie bardzo prosty mechanizm:
    1. Na podstawie adresu MAC sprawdzamy czy sprzęt odpowiada
    2. Jeżeli tak – włączamy przełącznik na On
    3. Skrypt sprawdza na podstawie nazwy czy jest włączony
    4. Jest włączony -> Dodaj minutę do czasu używania

    I tak w kółko. Działa mi to dla 10 urządzeń bez problemów –
    konsole, komputery, drukarka, telefony. Jedynie tygodniowe wykresy w Domoticz są błędne, ale miesięczne i roczne się rysują.

    Jeżeli jeszcze się nie poddałeś, to starałbym się maksymalnie to na początek uprościć, czyli:
    1. W zmiennej wyłącznie jeden adres
    2. Jeden włącznik
    3. Bez skryptu sumującego czas

    Jeżeli przełącznik włączony pozostanie włączony – to już dobry start. Jeżeli chcesz możemy popisać na jakimś komunikatorze, czy na e-mail – wtedy można więcej i szybciej wiadomości przekazać. FB? What's app?

  12. Witam. Mam ten sam problem co Ty. Zauważyłem że u Ciebie w PRESENCE_LIST adres MAC ma duże litery. U mnie komenda sudo arp-scan –localnet | grep -e 1c:5a:3e:f5:d0:6e gdy MAC był z dużymi literami nie działała. Po zmianie na małe litery daje wynik: 192.168.0.3 1c:5a:3e:f5:d0:6e (Unknown). Ale i tak nie włącza mi urządzenia, gdy włączę go ręcznie to czas jest zliczany. Co to może być? Dziękuję za pomoc

  13. Dzięki za pomoc ale u mnie niestety nie włącza urządzenia gdy jest w sieci. Znalazłem takie logi w Domoticzu:
    2017-11-28 17:48:00.174 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Presence.lua: /home/pi/domoticz/scripts/lua/script_time_Presence.lua:34: attempt to concatenate field '?' (a nil value)
    Tu jest problem, jak sprawdzić czy z Presence_List prawidłowo odczytuje MAC i Idx?

  14. I jeszcze taki wpis w logach:
    2017-11-28 19:26:00.214 EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_TV_update.lua
    2017-11-28 19:26:00.226 LUA: MAC Address to Poll: 1c:5a:3e:f5:d0:6e On IDX:215

    Jak włączę ręcznie urządzenie to zlicza czas.

  15. Na przykład: sudo /home/pi/domoticz/scripts/Check_MAC.sh e0:2a:82:a7:0e:d0 72

    Gdzie pierwsze to MAC, drugie IDX Switcha.

    Ale coraz bardziej mnie to wszystko dziwi. Nawet ostatnio stawiałem Raspbiana od nowa i wszystko to poszło 'od strzału'

  16. Wszystko się wyjaśniło:
    cd domoticz/scripts
    sudo chmod +x Check_MAC.sh
    Nie było praw dostępu do pliku
    Wielkie dzięki za pomoc wszystko działa.

  17. Aaahhh. Fakt! Mam to na liście ‚to do’ przy stawianiu nowej instalacji, zapomniałem tutaj wstawić. Dziękuję bardzo, zaraz poprawię wpis i przy okazji dodam do wpisu o backupie. Tam też brakuje

  18. Witaj,
    mam problem z tym skryptem 🙁 W logach pojawia mi się coś takiego: rror: EventSystem: in /home/domoticz/domoticz/scripts/lua/script_time_dell__update.lua: …moticz/domoticz/scripts/lua/script_time_dell__update.lua:4: attempt to concatenate global 'timer_device_ID' (a nil value)
    i nie wiem o co chodzi….

  19. Cześć. Literówka się wkradła. W deklaracji zmiennej powinno być: local timer_device_ID = 8. Poprawiłem w blogu, dziękuję za zwrócenie uwagi

  20. Udało mi się usunąć błędy z logów, ale skrypt nadal nie zmienia stanu urządzenia, a co z tym idzie licznik nie nalicza minut 🙁

  21. Check_MAC.sh działa prawidłowo, po jego wywołaniu przez sudo w domoticz zmienia się stan przełącznika. Natomiast skrypt script_time_Presence.lua nie wiedzieć czemu nie wywołuje skryptu Check_MAC 🙁

  22. ja mam taki bład w logach:
    2018-04-13 12:23:00.346 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Presence.lua: /home/pi/domoticz/scripts/lua/script_time_Presence.lua:33: attempt to concatenate field '?' (a nil value)

  23. Po odpaleniu komendy switch(lampka sygnalizujaca zapalenie w domoticzu) się zapala lecz wyłacza się samoczynnie po minucie .Czasu dalej nie zlicza.

  24. W takim razie oznacza to, że jednak nie znajduje działającego urządzenia w sieci i skrypt uznaje, że powinien ustawić Switch jako Off. Adresy MAC są poprawnie wpisane w zmienną użytkownika?

  25. Hej, super stronka i bardzo cenne rozwiązania! 🙂
    Zacząłem dopiero przygodę z Domoticzem i staram się wdrożyć to rozwiązanie powyżej – przełącznik działa ale ma problem ze skryptem czytającym czas – dostaje komunikat jak niżej w logach:
    "2018-08-14 01:50:00.434 Error: EventSystem: in /home/pi/domoticz/script_s/lua/script__time_iphone_asia_update.lua: …/domoticz/script_s/lua/script__time_iphone_asia_update.lua:3: unexpected symbol near '='" Podpowiesz coś? Skrypt skopiowany ze strony tylko nazwy zmienione i oczywiście IDX:) Z góry dzięki!:)

  26. Cześć, miło słyszeć, że informacje są przydatne.

    Na początek polecam pobrać skrypty z google drive umieszczone w linku powyżej, wydaje mi się, że wiele się wtedy wyjaśni. Oczywiście służę pomocą, jeżeli będzie inaczej.

  27. Cześć,

    Nie wiem czemu, ale u mnie ten arp-scan trwa w nieskończoność. Przerobiłem skrypty na arping, ale prawdę mówiąc mam duże wątpliwości, czy skuteczność jest równie dobra.

    Druga sprawa, to czy coś specjalnego trzeba zrobić, żeby na sensorze z licznikiem pojawiła się sekcja "Today" ?

    • Mam ten sam problem. Nie pokazuje czasu 'Today' tylko zlicza wszystko w jedną wartość.
      W urządzaniu masz ustawiony Typ Counter i uzupełnione 'Value Units' jako Minuty?
      Jest dostępny typ 'Time', lecz on nie pokazuje wartości tylko pytajnik '?', tak jakby był jakiś błąd z tym.

      Czy może testowałeś to już na nowym Stretch ?

    • Wydaje mi się, że brak Today może mieć coś wspólnego z nową wersją Domoticz. Type: Counter, Value Units jako Minutes (Domoticz trzymam cały po angielsku). Ja nawet nie mam typu Time 😉

      Na Stretch nie przeszedłem, bo nie udało mi się w normalnym czasie (dwa wieczory) wszystkiego skonfigurować tak jak chciałem, a na rok 2019 mam inne plany 😉

  28. Specem nie jestem, ale apr-scan powinien szybko zakończyć działanie, może ma problem z jakimś adresem MAC?

    Co do 'Today' – nic nie robiłem w tym celu – Domoticz sam mi wstawił tę wartość. Ja jednak ciągle jestem na poprzedniej stabilnej wersji, może coś się w tym kontekście zmieniło. Dopiero powoli stawiam wszystko od nowa na Stretch z zamiarem przejścia na nową wersję Domoticz.

  29. Dzięki za info, faktycznie ja używam aktualnie do testów najnowszej wersji z bety i może usunęli ten ficzer, a szkoda.

    Z arp-scan'em to nie mam pojęcia skąd u mnie ten problem ale może jeszcze powalczę, w każdym razie dzięki za info i za całego bloga – jest motywujący do grzebania 🙂

  30. Cześć dzięki za super blog!
    Zrobiłem wszystko wg Twojego poradnika, a w logach pojawia się coś takiego
    2018-10-08 20:30:00.121 Status: LUA: MAC Address to Poll: b0:c0:90:9f:d7:a4 On IDX:95
    2018-10-08 20:30:00.220 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_dellewa_update.lua

    więc wydaje się że wszystko dobrze, ale po 4 sekundach taki log:
    2018-10-08 20:30:04.655 Status: User: Admin initiated a switch command (95/Dell Ewa/Off)

    Czemu się przełącza na OFF?

  31. Witam
    Skrypt ciekawy, u mnie na początku nie działał do końca, doinstalowałem culr i poszło. Jeśli chodzi o status wł/wył to działa OK. Problem u mnie wystąpił, gdy do folderu lua zapisałem skrypty dla pomiaru czasu dla każdego komputera stacjonarnego. Skończyło się to najpierw wyczyszczeniem ustawień ( tak jakbym miał nową instalkę Domoticz ), a później przeszedł do Offline. W sumie za pierwszym razem myślałem, że to przypadek. Ale zainstalowałem od nowa całego Armbiana i Domoticza i ponownie dodałem te skrypty i stało się to samo. Samo Orange Pi działa, jak również zainstalowane na nim usługi np. nginx.

  32. Ja takie przypadki miałem na Raspberry Pi, po instalacji pluginów. Tutaj wydaje mi się, że problemem może być mechanizm uruchamiający skrypty automatycznie (a tak Domoticz robi, gdy pojawia się przedrostek script_time). Wydaje mi się, że zamiast reinstalacji wystarczyłoby skasować 'felerne' pliki z folderu. Przy okazji – jak sprawuje Ci się Orange Pi? Dopiero kilka miesięcy użytkuję Orange Pi Zero Plus i mimo braku wsparcia – jestem całkiem zadowolony.

  33. Ja użytkuję Orange Pi Zero już koło roku. Nie narzekam, działa nieźle ( nie licząc tego skryptu do sprawdzania aktywności 🙂 ). Udało mi się uruchomić na jego karcie muzycznej radio internetowe sterowane z Domoticza ( wł/wył, wybór stacji, głośność ), integracja z Airly ( sieć czujników zanieczyszczenie PM10/PM2.5), integracja z Burze.dzis.net, nawet ruszył chiński wyświetlacz 320×240 po SPI, udało mi się zaimportować GPIO ( tutaj nieco trudniej było z GPIO niż w Raspberry Pi ) i sterować wentylatorem w oparciu o odczyt temperatury z Orange PI, no i ostatnio napisałem sobie skrypt w Pyhonie, który odczytuje dane z konwertera USB/Uart i dopisuje je do wybranych czujników ( działa, tylko temperatura CPU skoczyła z 37 do 54 stopni i zwiększyło się zużycie CPU z 6% do 27% ).
    Wracając do skryptu – kiedyś używałem skryptu do sterowania pinami ESPEasy – dimmer. Zaczynał się od script_device. Nie było z nim problemu.

  34. Chyba zrezygnuję z tego skryptu, wczoraj na początek dałem tylko samo sprawdzanie aktywności, bez liczenia czasu i w nocy się rozłożył Domoticz. Na szczęście usunięcie plików z katalogu pomogło

  35. No widzę, że się napracowałeś na Orange Pi. Bardzo mnie to pocieszyło, bo dobrze wróży mojemu NAS. Będę wszystko spinał w kolejnych dniach. Co do skryptu – wybieramy to co nam pasuje 🙂 Ma działać stabilnie i cieszyć, a nie stresować. Może spróbuj wbudowanej funkcjonalności w Domoticz? Alive checker się chyba nazywa.

  36. juz nie daje rady
    {
    "message" : "Error sending switch command, check device/hardware !",
    "status" : "ERROR",
    "title" : "SwitchLight"
    }

  37. no właśnie cały artykuł jest o tym jak zastąpić standardową funkcjonalność domoticza System Alive Checker która nie działa poprawnie !
    generuje mnóstwo fake'owych komunikatów
    a może pójść w tą stronę żeby poprawić tą funkcję w domoticzu
    ja niestety mam go uruchomionego na Synology NAS i nie mam zielonego pojęcia jak tam doinstalować arp-scan
    aczkolwiek bardzo mi zależy żeby np. wiedzieć ile czasu moje dziecko gra na PlayStation

  38. Jak zmienić jednostkę w Counter Incremental z Kwh na minuty ?
    Nie mogę znaleźć takiej opcji.
    Pozdrawiam
    Krzysztof

  39. Witam
    Mam ze skryptem mały problem.
    W logach mam
    2019-11-18 20:08:00.464 Status: LUA: MAC Address to Poll: 90:2b:34:1f:bb:40 On IDX:30
    2019-11-18 20:08:00.480 Status: LUA: MAC Address to Poll: 90:2b:34:1f:bb:4e On IDX:26
    2019-11-18 20:08:00.496 Status: LUA: MAC Address to Poll: d0:f8:8c:8c:3b:eb On IDX:28
    2019-11-18 20:08:00.524 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Ania_komp_update.lua
    2019-11-18 20:08:00.543 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Basia_komp_update.lua
    2019-11-18 20:08:00.559 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Basia_tel_update.lua

    W terminalu jak wpiszę:
    domoticz@orangepione:~/domoticz/scripts$ sudo /home/domoticz/domoticz/scripts/Check_MAC.sh 90:2b:34:1f:bb:40 30
    to mam:
    192.168.0.219 90:2b:34:1f:bb:40 GIGA-BYTE TECHNOLOGY CO.,LTD.
    Device 90:2b:34:1f:bb:40 in LOCAL LAN
    curl: (6) Could not resolve host: http

    Ręcznie mogę włączyć „przełącznik” i zlicza, ale automatycznie nie chce.
    Ustawienia sprzętu:
    Basia komputer 0001406A 1 Basia komp stan Light/Switch Switch Off
    Basia komputer 82041 1 Basia komp czas General Counter Incremental 1 Minuty
    Basia telefon 0001406C 1 Basia telefon stan Light/Switch Switch Off
    Basia telefon 82029 1 Basia telefon czas General Counter Incremental 0 Minuty
    Ania komputer 0001406E 1 Ania komp stan Light/Switch Switch Off
    Ania komputer 82031 1 Ania komp czas General Counter Incremental 0 Minuty

    Zmienna PRESENCE_LIST:
    90:2b:34:1f:bb:40;30|90:2b:34:1f:bb:4e;26|d0:f8:8c:8c:3b:eb;28

  40. Zapomniałem dodać:
    script_time_Basia_tel_update.lua
    local timer_device_ID = 29

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

    local TotalMinutesOn = otherdevices_svalues[’Basia telefon czas’]
    if otherdevices[’Basia telefon stan’] == 'On’ then
    TotalMinutesOn = TotalMinutesOn + 1
    end
    commandArray[’UpdateDevice’] = timer_device_ID .. '|0|’ .. tostring(TotalMinutesOn)

    return commandArray

    script_time_Presence.lua
    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/domoticz/domoticz/scripts/Check_MAC.sh "..macs[1].." "..macs[2].." &"
    os.execute(execcommand)

    end

  41. Czu urządzenia podpięte do WiFi też powinien pokazywać ? U mnie pokazuje tylko sprzęty podpięte kablem, telefon córki, mimo, iż jest zalogowany do routera – widzę go w liści klientów DHCP i mam go w ręku, to pokazuje, że jest wyłączony.

  42. Nie widzi żadnego urządzenie podpiętego przez WiFi,
    jak wpiszę:
    sudo /home/domoticz/domoticz/scripts/Check_MAC.sh d0:f8:8c:8c:57:bf 48
    to mam odpowiedź:
    Device 60:01:94:20:2b:97 Not in LOCAL LAN
    {
    "status" : "OK",
    "title" : "SwitchLight"
    }

    po kablu OK

  43. Witam
    Zainstalowałem ten skrypt. Błędów nie ma, tylko że nie działa z automatu.
    W logach mam:
    2019-11-30 13:11:00.037 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Ania_tel_update.lua
    2019-11-30 13:11:00.053 Status: LUA: MAC Address to Poll: 90:2b:34:1f:bb:40 On IDX:23
    2019-11-30 13:11:00.068 Status: LUA: MAC Address to Poll: 90:2b:34:1f:bb:4e On IDX:27
    2019-11-30 13:11:00.083 Status: LUA: MAC Address to Poll: d0:f8:8c:8c:3b:eb On IDX:29
    2019-11-30 13:11:00.100 Status: LUA: MAC Address to Poll: d0:f8:8c:8c:57:bf On IDX:25
    2019-11-30 13:11:00.118 Status: LUA: MAC Address to Poll: 90:2b:34:1d:b5:03 On IDX:31
    2019-11-30 13:11:00.184 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Piotr_komp_update.lua
    2019-11-30 13:11:00.202 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Basia_komp_update.lua
    2019-11-30 13:11:00.215 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Ania_komp_update.lua
    2019-11-30 13:11:00.228 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Basia_tel_update.lua

    ale nie przełącza.
    Jak zrobię ręcznie:
    sudo /home/domoticz/domoticz/scripts/Check_MAC.sh 90:2b:34:1f:bb:40 23
    to działa i przełącza ( jeśli jest dostępny )
    Zastanawiam się jak ma być z właścicielem i grupą do które nalezą pliki skryptu. U mnie jest zarówno user jak i grupa domoticz.

  44. Witam
    Niestety w nowej wersji Domoticz 2020.1 pod Armbian Buster na Orange Pi PC licznik dodaje więcej niż 1 minuta – 7 do 10 "na minutę". Efekt – po 10 prawdziwych minutach mam na liczniku 107 minut aktywności.

  45. Witam. Zamiast „Licznika przyrostowego” wybierz „Licznik” i skrypt znowu działa poprawnie.

  46. Witam, jak wydłużyć czas oczekiwania na odpowiedź urządzenia. Z kilku tylko jedno mi nie działa. Jest one najbardziej oddalone od routera a w windows jako jedyne ping'uje powyżej 100ms

Możliwość komentowania została wyłączona.