Domoticz – detekcja urządzenia po jego numerze IP

wpis w: Domoticz | 21

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

21 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

Zostaw Komentarz

*