Wpadłem na pomysł (no chyba że coś takiego jest a ja nie wiem

Jak się zapatrujecie na taki pomysł?
Testowalem z Automate opcję lokalizacji i niestety ale nie potrafie obejsc problemu zatrzymywania sie skryptu przy braku odpowiedzi na rzadanie https - problem zdarzal mi się sporadycznie jednak jest to irytujące jako że zatrzymuje cały skrypt. Ponadto jak chcemy często sprawdzac lokalizacje to bateria telefonu mocno to odczuwa. IFTTT bawiłem się chwilę i jakoś mi nie podszedł.wsosniak pisze: ↑śr mar 06, 2019 4:48 pmNa telefonach instalujesz IFTTT , kazdemu domownikowi zakladasz osobny login IFTTT i tworzysz dla kazdego domownika dwa aplety na bazie uslugi lokalizacji . I na bazie tej uslugi tworzysz :
1) pierwszy aplet kiedy dany telefon jest w poblizu domu (usluga LOCATION, powiedzmy +-50m od Twojego domu) , wlacza wirtualny kanal danego domownika ( wywolanie uslugi WEBHOOK i wywolujesz link bezposredni danego kanalu lub jeszcze lepiej : link do sceny fracza ktora wlacza ten kanal + moze wlaczac/ wylaczac, otwierac/zamykac cokolwiek , w zaleznosci od domownika, od pory dnia, ...)
2) drugi aplet , kiedy dany telefon opuszcza lokalizacje dom , to wylacza kanal danego domownika (podobnie jak przy 1) )
Kod: Zaznacz cały
#!/bin/bash
# ********** WARTOŚCI PODANE MANUALNIE *********************************************
remik="xx:xx:xx:xx:xx:xx" #Adres MAC Remika
karolina="xx:xx:xx:xx:xx:xx" #Adres MAC Karoliny
nela="xx:xx:xx:xx:xx:xx" #Adres MAC Neli
max_ilosc_domownikow="3" #Ilość domowników
#**********************************************************************************
clear
echo ""
echo "-------------------------------------"
echo "Adres MAC Remika: $remik" #Wyświetlenie adresu MAC
echo "Adres MAC Karoliny: $karolina" #Wyświetlenie adresu MAC
echo "Adres MAC Neli: $nela" #Wyświetlenie adresu MAC
echo ""
echo "maksymalna ilość użytkowników: $max_ilosc_domownikow"
echo "-------------------------------------"
sleep 4
for (( ; ; ))
do
for (( i=1; $i <= 254; i++ )) #Pętla licząca adresy IP, które będą brane pod uwagę. Musi być ustawiona pod DHCP pool.
do
HOST_IP="192.168.0.$i" #Deklaracja zmiennej prezentującej adres IP
echo "pingowanie hosta $HOST_IP" #Wyświetlenie, jaki adres IP jest sprawdzany w danym momencie
if [ -n "$( ping -c 1 $HOST_IP|grep ttl=64)" ] #Jeżeli sprawdzany host odpowiada, warunek jest spełniony
then
echo "host z adresem $HOST_IP jest osiągalny"
fi
done
echo "-------------------------------------"
if [ -n "$( arp |grep $remik)" ] #Sprawdzenie, czy w tablicach ARP znajduje się rządany adres MAC
then
remik_IP=$(arp |grep $remik |cut -c1-15) #wyciągnięcie adresu IP z tablicy ARP i zapisanie do zmiennej
if [ -n "$( ping -c 1 $remik_IP |grep ttl=64)" ] #Sprawdzenie, czy adres IP jest dostępny w sieci
then
remik_w_domu="1" #Zmienna opisująca obecnośc w domu.
echo "Telefon Remika jest osiągalny i ma adres $remik_IP"
# wget --spider -------LINK DO SUPLI --------- #Link bezpośredni aktywujący kanał w Supli
sleep 1
else
arp -d $remik_IP #czyszczenie tablicy ARP z nieaktualnego wpisu
remik_IP="0" #wyzerowanie adresu IP zmiennej gdy host nie odpowiada
remik_w_domu="0"
echo "Telefon Remika nie jest osiągalny. Wyczyszczoo tablice ARP"
# wget --spider -------LINK DO SUPLI --------- #Link bezpośredni dezaktywujący kanał w Supli
fi
else
remik_w_domu="0"
echo "Telefon Remika nie jest osiągalny"
fi
if [ -n "$( arp |grep $karolina)" ]
then
karolina_IP=$(arp |grep $karolina |cut -c1-15)
if [ -n "$( ping -c 1 $karolina_IP |grep ttl=64)" ]
then
karolina_w_domu="1"
echo "Telefon Karoliny jest osiągalny i ma adres $karolina_IP"
# wget --spider -------LINK DO SUPLI --------- #Link bezpośredni aktywujący kanał w Supli
sleep 1
else
arp -d $karolina_IP
karolina_IP="0"
karolina_w_domu="0"
echo "Telefon Karoliny nie jest osiągalny. Wyczyszczoo tablice ARP"
# wget --spider -------LINK DO SUPLI --------- #Link bezpośredni dezaktywujący kanał w Supli
fi
else
karolina_w_domu="0"
echo "Telefon Karoliny nie jest osiągalny"
fi
if [ -n "$( arp |grep $nela)" ]
then
nela_IP=$(arp |grep $nela |cut -c1-15)
if [ -n "$( ping -c 1 $nela_IP |grep ttl=64)" ]
then
nela_w_domu="1"
echo "Telefon Neli jest osiągalny i ma adres $nela_IP"
# wget --spider -------LINK DO SUPLI --------- #Link bezpośredni aktywujący kanał w Supli
sleep 1
else
arp -d $nela_IP
nela_IP="0"
nela_w_domu="0"
echo "Telefon Neli nie jest osiągalny. Wyczyszczoo tablice ARP"
# wget --spider -------LINK DO SUPLI --------- #Link bezpośredni dezaktywujący kanał w Supli
fi
else
nela_w_domu="0"
echo "Telefon Neli nie jest osiągalny"
fi
liczba_domownikow=$[remik_w_domu + karolina_w_domu + nela_w_domu] #Policzenie, ilu jest domowników w domu
while [ $liczba_domownikow == $max_ilosc_domownikow ]; do #Pętla sprawdzająca, czy maksymalna ilość domowników jest osiągnięta. Gdy nie jest, pętla nie wykonuje sie.
echo "osiągnięto maksymalną liczbę domowników. Następne sprawdzenie za 60 sekund"
sleep 60
if [ -n "$( ping -c 1 $remik_IP |grep ttl=64)" ]; then
remik_w_domu=1
else
remik_w_domu=0
fi
if [ -n "$( ping -c 1 $karolina_IP |grep ttl=64)" ]; then
karolina_w_domu=1
else
karolina_w_domu=0
fi
if [ -n "$( ping -c 1 $nela_IP |grep ttl=64)" ]; then
nela_w_domu=1
else
nela_w_domu=0
fi
liczba_domownikow=$[remik_w_domu + karolina_w_domu + nela_w_domu]
done
echo "W domu nie ma wszystkich domowników. Powrót do skanowania sieci w celu ponownej weryfikacji"
echo "-------------------------------------"
sleep 15
done