Domoticz – detekcja urządzenia po jego numerze IP

wpis w: Domoticz | 13

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

13 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. Gdy wywolam skrypt mam : Sudo python check_device_online.py 192.168.1.60 3 45 45
    File „check_device_online.py”, line 6
    SyntaxError: Non-ASCII character ‚\xc2’ in file check_device_online.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    • Łukasz Kostrzewa

      Witam

      Proszę na początku kodu wpisać:

      #!/usr/bin/python
      # -*- coding: -*-

      i zapisać plik.

      Ewentualnie proszę spróbować:
      #!/usr/bin/python
      # -*- coding: latin-1 -*-

      Proszę dać znać czy pomogło

      • Pomoglo.. lecz skrypt czeka w nieskończoność az urzadzenie sie pokaze „192.168.1.3 offline, waiting for it to come back „

  4. 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 $

Zostaw Komentarz

*