72 lines
1.8 KiB
Bash
72 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
# Set Parameters
|
|
Name='<Name>'
|
|
domoticzserverip='127.0.0.1:8080'
|
|
IDX='<Dev-IDX>'
|
|
IP='<DevStaticIP>'
|
|
|
|
echo $$ > /var/log/pid/"$Name".pid
|
|
|
|
while [ 1 ]
|
|
do
|
|
# First Network ping attempt
|
|
fping -c5 -b 32 -t1000 $IP > /dev/null 2>&1
|
|
if [ "$?" = 0 ] ; then
|
|
device="On"
|
|
technology="Online, Wifi 1"
|
|
success="yes"
|
|
else
|
|
success="no"
|
|
fi
|
|
|
|
# Waiting 10 seconds to avoid haning the script
|
|
if [[ $success != 'yes' ]]; then
|
|
sleep 10
|
|
fi
|
|
|
|
# Second network ping attempt
|
|
if [[ $success != 'yes' ]]; then
|
|
fping -c5 -b 32 -t1000 $IP > /dev/null 2>&1
|
|
if [ "$?" = 0 ] ; then
|
|
device="On"
|
|
technology="Online, Wifi 2"
|
|
success="yes"
|
|
fi
|
|
fi
|
|
|
|
|
|
# If the device is still offline, declare it for processing
|
|
if [[ $success != 'yes' ]]; then
|
|
technology="Offline"
|
|
device="Off"
|
|
fi
|
|
|
|
# Check Online / Offline state of Domoticz device
|
|
domoticzstatus=$(curl -s "http://"$domoticzserverip"/json.htm?type=devices&rid="$IDX"" | grep '"Data" :' | awk '{ print $3 }' | sed 's/[!@#\$%",^&*()]//g')
|
|
CurTime=$(date '+%d/%m/%Y %H:%M');
|
|
# Compare ping result to Domoticz device status
|
|
if [ "$device" = "$domoticzstatus" ] ; then
|
|
echo "$CurTime | Device: $Name | Domo: Synced | Status: $technology"
|
|
else
|
|
#echo "Status desynchronized, resynchronizing..."
|
|
if [ "$device" = On ] ; then
|
|
echo "$CurTime | Device: $Name | Domo: Desynced | Status: $technology"
|
|
curl -s "http://"$domoticzserverip"/json.htm?type=command¶m=switchlight&idx="$IDX"&switchcmd=On" 2>/dev/null 1>/dev/null
|
|
else
|
|
echo "$CurTime | Device: $Name | Domo: Desynced | Status: $technology"
|
|
curl -s "http://"$domoticzserverip"/json.htm?type=command¶m=switchlight&idx="$IDX"&switchcmd=Off" 2>/dev/null 1>/dev/null
|
|
fi
|
|
fi
|
|
|
|
# Waiting 10 seconds to avoid haning the script
|
|
if [[ $success != 'yes' ]]; then
|
|
sleep 10
|
|
fi
|
|
|
|
#Waiting if Device is online
|
|
if [ "$device" = On ] ; then
|
|
echo "$CurTime | Device: $Name | Status: Online, Waiting"
|
|
sleep 60
|
|
|
|
done |