Domoticz – detekcja urządzenia po jego numerze IP

wpis w: Domoticz | 33

W dzisiejszym wpisie opisze jak sprawić by Nasz system Domoticz był w stanie rozpoznać czy Nasze urządzenie, np. (telefon komórkowy, laptop, TV, tablet itp.) jest włączony – znajduje się w obrębie Naszej sieci WiFi.

Aby to zrobić należy zalogować się przez SSH do Naszego Raspberry:

Przechodzimy do katalogu Scripts przez wpisanie komendy:

  • cd domoticz/scripts

Następnie utworzyć plik check_device_online.py za pomocą komendy: (plik można nazwać jak tylko chcecie)

  • sudo nano check_device_online.py

W pliku należy wkleić poniższy tekst:

Zmieniamy w nim tylko linię (domoticzserver=192.168.2.1:8080„) gdzie wpisujemy adres IP do Waszego systemu Domoticz.

Naciskamy CTR+X i zapisujemy plik.

Następnie wpisujemy:

      • sudo chmod +x check_device_online.py

Następnie w systemie Domoticz tworzymy wirtualny przycisk o typie Przełącznik ( o czym nie raz pisałem w poprzednich wpisach).

Zapamiętujemy jego IDX (możemy go znaleźć po lewej stronie w Konfiguracja–> Urządzenia–> Nieużywane) – w moim przypadku będzie to 98.

Następnie wpisujemy komendę:

  • crontab -e

Na końcu tego pliku wpisujemy:

  • */10 * * * * sudo python /home/pi/domoticz/scripts/check_device_online.py XX.XX.XX.XX 98 99 45

Zamiast XX.XX.XX.XX wpisujemy adres IP Naszego urządzenia, którego widoczność chcemy sprawdzić (np. laptopa z ip 192.168.0.15).

Kolejna liczba 98 to Wasz IDX, o którym pisałem wcześniej.

Liczba 99 w przykładzie – co tyle czasu (99 sekund) Domoticz będzie sprawdzał czy Wasze urządzenie jest podłączone do sieci.

Liczba 45 w przykładzie – Jeżeli w przeciągu 45 sekund urządzenie nie odpowie na żądania IP – Domoticz ustawi włącznik w pozycji OFF.

Naciskamy CTRL+X i zapisujemy Nasz plik.

 

Crontab -e

 

Jeżeli Wszystko zrobiliście poprawnie powinniście widzieć czy Wasze urządzenia są dostępne (włączone) w Waszej sieci domowej co pozwoli Wam np. na odpalenie lamki biurowej gdy włączycie laptopa, itp.

Gdyby coś nie działało pod tym adresem znajdziecie gotowy plik.

Pozdrawiam

33 Odpowiedzi

  1. Robię dokładnie jak w poradniku jest napisane i zero reakcji … Co mogę robić źle ?

    • Łukasz Kostrzewa

      Witam
      Zapomniałem napisać o tym w poradniku ale czy zmienił Pan: domoticzpasscode = „your passcode for Light/Switch Protection”
      Ma Pan to hasło ustawione w Konfiguracja–> Ustawienia „Zabezpieczenie świateł/przełączników:”
      Może to pomoże
      Proszę dać znać
      Pozdrawiam

  2. Mam RPi3 z domoticzem i w zaden sposob nie moge tego uruchomic.
    [email protected]:~/domoticz/scripts $ sudo python check_device_online.py 192.168.1.60 3 45 45
    20:33:20- pid file exists
    20:33:20- Seems to be an old file, ignoring.
    20:33:20- script started.
    20:33:20- according to domoticz, 192.168.1.60 is offline
    20:33:20- 192.168.1.60 offline, waiting for it to come back
    Niby dziala ale nie widzi laptopa. Pingowanie OK

    • Łukasz Kostrzewa

      Hmm…
      Dziwne… Rozumiem, że adres 192.168.1.60 na pewno odpowiada Pańskiemu laptopowi i próbował Pan komendy ping 192.168.1.60 i wszystko działa?
      Zapomniałem napisać o tym w poradniku ale czy zmienił Pan: domoticzpasscode = „your passcode for Light/Switch Protection”
      Ma Pan to hasło ustawione w Konfiguracja–> Ustawienia „Zabezpieczenie świateł/przełączników:”
      Może to jest problem?
      Rozumiem, że 3 to numer IDX Pańskiego wirtualnego przełącznika odpowiadającemu za laptopa?
      Proszę spróbować usunąć wszystkie pliki o rozszerzeniu .pid jakie utworzyły się w katalogu i spróbować raz jeszcze…mi czasami nie działało i musiałem usunąć utworzone wcześniej pliki.
      Pozdrawiam

  3. Witam.
    Skrypt wyrzuca mi błąd w lini 57 :

    [email protected]:~/domoticz/scripts $ sudo python check_device_online.py 192.168.0.101 5 99 45
    File „check_device_online.py”, line 57
    if (time.time() – os.path.getmtime(pidfile)) < (float(interval) * 3): print datetime.datetime.now().strftime(„%H:%M:%S”) + „- script seems to be still running, exiting” print datetime.datetime.now().strftime(„%H:%M:%S”) + „- If this is not correct, please delete file ” + pidfile sys.exit(0) else: print datetime.datetime.now().strftime(„%H:%M:%S”) + „- Seems to be an old file, ignoring.” else: open(pidfile, ‚w’).close() if check_for_instances.lower() == „ps”: if int(subprocess.check_output(‚ps x | grep \” + sys.argv[0] + ‚ ‚ + sys.argv[1] + ‚\’ | grep -cv grep’, shell=True)) > 2 :
    ^
    SyntaxError: invalid syntax
    [email protected]:~/domoticz/scripts $

    • Łukasz Kostrzewa

      Witam
      Po tym jak to zostało wklejone niewiele widać.
      Bardzo bym prosił o wysłanie screena z błędem na maila [email protected]
      Pozdrawiam

      • Witam serdecznie.
        Panie Łukaszu jeszcze raz dziękuję za pomoc w rozwiązaniu błędu, który opisałem.
        W moim przypadku metoda „kopiuj i wklej” skrypt nie zdała egzaminu, zapewne kwestia kodowania znaków.
        Pomogła dopiero pomoc Pana Łukasza, a mianowicie przesłanie gotowego działającego skyptu e-mailem w załączniku.
        Fajnie gdyby na blogu skrypty do opisywanych tematów były zamieszczane na serwerze z linkiem do pobrania gotowego pliku.
        Ostatecznie wszystko u mnie działa jak należy zgodnie z opisem w tym tutorialu.
        Pozdrawiam serdecznie i czekam na kolejne ciekawe wpisy 🙂

        • Łukasz Kostrzewa

          Witam
          Super, że się wszystko udało.
          Uzupełniłem niektóre wpisy o gotowe pliki do ściągnięcia
          Pozdrawiam i życzę miłego dnia

  4. Skopiowany kod podobnie jak u Krzysztofa wyrzucał błąd. Pobrałem więc plik i niestety tez nie działa prawidłowo: wyrzuca mi ze skryptu: „Not enough parameters. Needs %Host %Switchid %Interval %Cooldownperiod.” Gdzie szukać problemu?

  5. U mnie to samo co u Kamila. Jest rozwiązanie?

  6. Witam ja tez mam problem jesli użyje polecenia sudo python check_device_online.py 192.168.1.202 34 45 45 urzadzenie jest wykrywane i wszystko ok ale bez uruchomionego tego polecenia nie działa co może byc tego przyczyną?

  7. Witam,
    może ktoś wie co jest przyczyną tego, iż skrypt nie wykrywa obecności urządzeń pracujących na Windows 10? Telefony z androidem są wykrywane, laptop pod kontrolą Windows 7 również. Smart TV LG też jest wykrywany. Natomiast dwa komputery stacjonarne pracujące na systemie Windows 10 już niestety nie. Co może być przyczyną takiej sytuacji ?

    pozdrawiam

    • Agnieszka Kostrzewa

      Ciekawa sytuacja. Rozumiem ze komputer podlaczony jest kablem? A inne urzadzenia po WiFi? Nie powinno to miec teirerycznie znaczenia ale…
      Pozdrawiam

      • Laptop pod Win7 jest po WIFI, Telewizor jest po kablu.
        Komputery pod kontrolą Win10 które nie są wykrywane – jeden łączy się po Wifi, drugi po kablu. Znajdują się w tej samej sieci i widzą normalnie Domoticza…
        Dziwne, wiem – jak to rozwiązać?

        • Agnieszka Kostrzewa

          Kurcze… Prosze sprobowac wyslac komende ping …. A w miejsce kropek nr ip komputera stacjonarnego. Jezeli ping nie wroci to bedzie to wina ustawien kompa. Jak wroci to nie mam pomysłu 🙁
          Pozdrawiam

          • Już rozwiązałem problem.
            Konieczne okazało się ustawienie w systemie Windows 10 zezwolenia na udostępnianie plików i drukarek. Po tej małej zmianie wszystko działa 🙂
            Może komuś się przyda.

            ps. Bardzo fajne artykuły. Malina stoi u mnie już ponad rok z bramką Mysensors i kilkoma czujnikami bezprzewodowymi.
            Teraz widzę, że można do wyposażyć w szereg innych ciekawych rozszerzeń 🙂

            Jeszcze jedna rzecz, może komuś się przyda. Dostęp do sieci mam poprzez Play LTE i byłem przekonany, że nie da się ustawić dostępu zdalnego do Maliny. Byłem w okropnym błędzie. Oczywiście da się. Polecam zapoznać się z rozwiązaniem VPN.net – Hamachi by LogMeIn

            pozdrawiam
            Tomek.

          • Agnieszka Kostrzewa

            Hej. Wielkie dzięki za info jak rozwiązać ten problem. Dzieki za mile slowa:) Pozdrawiam

  8. Witam,
    ponowie pytanie czy jest rozwiązanie na problem z :
    „Not enough parameters. Needs %Host %Switchid %Interval %Cooldownperiod.”
    Szukałem skąd ma pobrać te parametry ale już nie wiem…. są zmienne :
    device=sys.argv[1]
    switchid=sys.argv[2]
    interval=sys.argv[3]
    cooldownperiod=sys.argv[4]
    Ale nie wiem co to za wartości są podane ?????

  9. Mam pytanie. Skoro przedostania cyfra w cronie odpowiada co ile dmoticz sprawdza urządzenie czy jest online czy nie, to za co odpowiada liczba */10 * * * * która występuje w tym fragmencie polecenia?
    Pozdrawiam

    • Agnieszka Kostrzewa

      Witam. Ta liczba oznacza ze co 10 minut. Tu jest wszystko ladnie wyjasnione http://www.adminschoice.com/crontab-quick-reference

      • To wiem, ale nie mogę jednego pojąć. Jeżeli domoticz sprawdza co określony czas status urządzenia który ustawimy w przedostatniej liczbie, to po co ma się uruchamiać to zadanie w cronie co 10 minut? Czy jedno nie wyklucza drugiego?

        Wiem że zadaje dziwne pytania :D, ale nie zgrywają mi się czasy i przez to sceny włączają się albo za późno albo za wcześnie
        Pozdrawiam

  10. Super wpis ale mam pytanie dlaczego na dwóch urządzeniach z trzech mam ciągłe pingowanie nawet jeśli jednym z nich jest telefon który mam w pracy poza domem?Jeden TV jest ok drugi wciąż pinguje i telefon wciąż pinguje nawet jeśli wyłączony. Gdzie szukać problemu?

    • Agnieszka Kostrzewa

      Tv może pingowac bo sie do końca nie wyłącza. Ja tak miałem z Philips Pos 9002. Tv po wyłączeniu miał wciąż aktywne wifi (może masz tak samo?) Telefonu wytłumaczyć nie potrafie:( Na bank dobry IP wpisałes? Nie mam pomysłu. Pozdrawiam

  11. Mam problem taki jak Łukasz. komenda:
    sudo python check_device_online.py 192.168.1.17 127 45 45
    Sprawia że wykrywa urządzenie i w domoticzu zmienia stan ale po za tym nie działa niestety. Może mała podpowiedz co sprawdzić: W crontab -e
    mam jedynie:
    */10 * * * * sudo python /home/pi/domoticz/scripts/check_device_online.py 192.168.1.17 127 99 45

    • Agnieszka Kostrzewa

      Witam. Nie rozumiem w czym problem skoro wykrywa urządzenie i zmienia stan w Domoticz to co nie działa? Pozdrawiam

  12. Problem że wywołanie komendy z wiersza poleceń wykrywa urządzenie i zmienia stan w domoticzu ale nie działa automatycznie tak jak by crontab nie był wywoływany

    • Agnieszka Kostrzewa

      Ja niestety lub stety używam Domoticza sprzed 2 lat (tak samo jak i raspbiana). Od tego czasu mogło się wiele pozmieniać 🙁 Mi wszystko działa jak powinno i nie wiem czemu może nie działać poprawnie. Pozdrawiam

  13. Od wersji Domoticza 4.9 skrypt nie będzie działał… nie wiem dlaczego… błąd w linii 40 😦
    Jednak jest rozwiązanie:
    https://www.domoticz.com/wiki/System_Alive_Checker_%28Ping%29

    • Agnieszka Kostrzewa

      Hej. Dzięki za info i rozwiązanie. Ja od 2 lat nie aktualizował Domoticza. Między innymi z obawy że niektóre rzeczy działać nie będa. Pozdrawiam

Zostaw Komentarz

*