Bluetooth Anwesenheitssteuerung
Moderator: Co-Administratoren
Re: Bluetooth Anwesenheitssteuerung
Könnte es sein, ich hab ja keine Ahnung vom Programmieren, kann nur logisch denken, dass der curl Aufruf klemmt? Vielleicht, weil er schon irgendwo ausgeführt wird und kein zweiter Aufruf geht?
Kann ich den curl ins terminal kopieren und dort testen?
Kann ich den curl ins terminal kopieren und dort testen?
Re: Bluetooth Anwesenheitssteuerung
Ja, ging. Im Terminal klappt der curl Aufruf, nur aus dem Script heraus nicht.
-
- Beiträge: 1343
- Registriert: 27.06.2015, 22:17
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 32 Mal
Re: Bluetooth Anwesenheitssteuerung
Klar, warum nicht? du musst halt die Variablen in dem Aufruf entsprechend mit Werten ersetzen.emmpee hat geschrieben:Könnte es sein, ich hab ja keine Ahnung vom Programmieren, kann nur logisch denken, dass der curl Aufruf klemmt? Vielleicht, weil er schon irgendwo ausgeführt wird und kein zweiter Aufruf geht?
Kann ich den curl ins terminal kopieren und dort testen?
-
- Beiträge: 1343
- Registriert: 27.06.2015, 22:17
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 32 Mal
Re: Bluetooth Anwesenheitssteuerung
Poste mal bitte das Script hier in einem Code Tag! Oder als Textdatei hochladen...emmpee hat geschrieben:Ja, ging. Im Terminal klappt der curl Aufruf, nur aus dem Script heraus nicht.
Re: Bluetooth Anwesenheitssteuerung
Es ist Dein Script von Seite 1
Code: Alles auswählen
#
#
# Anwesenheitsscript auf Basis eines Scripts des Users "realwheel" aus dem Domoticz Forum. Das Script wurde erweitert und für Homematic angepasst.
# Zur erfolgreichen Nutzung ist die "XMLAPI" auf der CCU nötig, um per HTTP Aktionen auszulösen. Ohne diese API kann dieses Script nicht funktionieren.
#
# Version 1.2
#
# ***Changelog***
#
# 1.1 Kommentare ergänzt und ins deutsche übersetzt. Fehler bei der Erkennung des bereits gesetztes Status behoben. Dies verursachte unnötige Aktivität auf der XMLAPI.
# 1.2 Kommentare verbessert / Statusausgaben vereinheitlicht / 4. Parameter für den Gerätenamen hinzugefügt für die bessere Kontrolle bei mehreren Gleichzeitig laufenden Scripts.
#
#
#
#!/bin/bash
if [ -z "$4" ] ; then
echo
echo "Syntaxfehler!"
echo "Syntax: anwesenheit.sh BTMAC WiFiMAC ise_id Gerätename"
echo "Beispiel: anwesenheit.sh AA:BB:CC:16:09:51 aa:bb:cc:b4:a5:21 1234 Michaels_iPhone"
echo
exit
fi
# Einstellungen
HomematicIP=„192.168.178.25“ # Die IP Adresse der Homematic CCU.
LongSleep=120 # Zeit zwischen den Überprüfungen wenn das Gerät in Reichweite ist.
ShortSleep=6 # Zweit zwischen den Überprüfungen wenn das Gerät nicht in Reichweite ist. l2ping und arp-ping brauchen ca. 10 Sekunden. Daher diese Zeit nicht zu lang wählen.
DownStateRecheckTime=5 # Zeit zwischen den Überprüfungen wenn das Gerät aus der Reichweite verschwindet.
DownStateRecheckCount=10 # Überprüfungen bevor das Gerät wirklich als "außer Reichweite" gilt. (Zeit = DownStateRecheckTime * DownStateRecheckCount)
### Ab hier sind keine Änderungen notwendig! ###
MACAddressBT=$1 # Variable mit Bluetooth Mac Adresse beschreiben. (Parameter 1 beim Aufruf)
MACAddressWIFI=$2 # Variable mit Wifi MAC Adresse beschrieben. (Parameter 2 beim Aufruf)
ise_id=$3 # ise-id der CCU Variable in Script Variable schreiben. (Parameter 3). Die ise_id kann in der XMLAPI nachgesehen werden (Homematic Webinterface).
device_name=$4 # Gerätenamen in Variable Schreiben (Parameter 4)
# Großbuchstaben der Wifi MAC in Kleinbuchstaben ändern. Wird für arp-ping benötigt.
MACAddressWIFI=`echo $MACAddressWIFI | tr '[:upper:]' '[:lower:]'`
#Startup delay
#sleep 60 # Warten bis Raspberry (oder andere Hardware) komplett hochgefahren ist.
#Main loop
while [ 1 ]
do
# Bluetooth Ping Test
echo "`date` - $device_name wird per Bluetooth angepingt!"
sudo l2ping -c1 $MACAddressBT > /dev/null 2>&1
Result=$? # Store the return code in BTResult (will be 0 if mac is found).
if [ $Result -eq 0 ] ; then
echo "`date` - $device_name ist per Bluetooth erreichbar! Ping erfolgreich!"
else
echo "`date` - $device_name ist per Bluetooth nicht erreichbar! Wifi Scan wird durchgeführt!"
sudo arp-scan -l | grep $MACAddressWIFI > /dev/null 2>&1
Result=$? # Store the return code in WIFIResult (will be 0 if the mac is found).
if [ $Result -eq 0 ] ; then
echo "`date` - $device_name erreichbar! Wifi Scan erfolgreich!"
else
echo "`date` - $device_name ist nicht erreichbar!"
fi
fi
if [ $Result -eq 0 ] ; then
#Device in range
LoopSleep=$LongSleep
curl -s "http://$HomematicIP/config/xmlapi/sysvar.cgi?ise_id=$ise_id" | grep value | grep false > /dev/null
if [ $? -eq 1 ] ; then
# Do nothing device presence did not change
echo "`date` - $device_name status nicht verändert! Keine Aktion durchgeführt! $LoopSleep Sekunden warten..."
else
#Device is status changed to: in range / detected
echo -e "`date` - $device_name status geändert! Variable mit ID $ise_id wird aktiviert. $LoopSleep Sekunden warten..."
`curl -s "http://$HomematicIP/config/xmlapi/statechange.cgi?ise_id=$ise_id&new_value=true" > /dev/null`
fi
else
#Device out of range
LoopSleep=$ShortSleep
curl -s "http://$HomematicIP/config/xmlapi/sysvar.cgi?ise_id=$ise_id" | grep value | grep false > /dev/null
if [ $? -eq 0 ] ; then
# Do nothing device presence did not change
echo "`date` - $device_name status nicht verändert! Warte $LoopSleep Sekunden..."
else
x=0
while [ $x -le $DownStateRecheckCount ]
do
x=$(( $x + 1 ))
if [ $x -eq $DownStateRecheckCount ] ; then
# Device status changed to : not in range / not detected
echo -e "`date` - $device_name status geändert! Variable mit ID $ise_id wird deaktiviert!"
`curl -s "http://$HomematicIP/config/xmlapi/statechange.cgi?ise_id=$ise_id&new_value=false" > /dev/null`
break
fi
echo "`date` - $device_name nicht erreichbar! Warte $DownStateRecheckTime Sekunden bis erneut getestet wird..."
#Ping test
sudo l2ping -c1 $MACAddressBT > /dev/null 2>&1
Result=$? # Store the return code in BTResult (will be 0 if mac is found).
if [ $Result -eq 0 ] ; then
echo "`date` - $device_name ist per Bluetooth erreichbar! Ping erfolgreich!"
else
echo "`date` - $device_name ist per Bluetooth nicht erreichbar! Wifi Scan wird durchgeführt!"
sudo arp-scan -l | grep $MACAddressWIFI > /dev/null 2>&1
Result=$? # Store the return code in WIFIResult (will be 0 if the mac is found).
if [ $Result -eq 0 ] ; then
echo "`date` - Wifi Scan erfolgreich! $device_name erreichbar!"
else
echo "`date` - $device_name ist nicht erreichbar!"
fi
fi
if [ $Result -eq 0 ] ; then
echo "`date` - $device_name war nicht erreichbar, aber wurde wiedergefunden. Keine Aktion durchführen und $LoopSleep Sekunden warten..."
break
fi
sleep $DownStateRecheckTime
done
fi
fi
# Wait before running loop again
sleep $LoopSleep
done
-
- Beiträge: 1343
- Registriert: 27.06.2015, 22:17
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 32 Mal
Re: Bluetooth Anwesenheitssteuerung
Nein, ist es nicht!emmpee hat geschrieben:Es ist Dein Script von Seite 1
Code: Alles auswählen
HomematicIP=„192.168.178.25“ # Die IP Adresse der Homematic CCU.
-
- Beiträge: 1343
- Registriert: 27.06.2015, 22:17
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 32 Mal
Re: Bluetooth Anwesenheitssteuerung
Und ich erstemmpee hat geschrieben:Na jetzt bin ich mal gespannt
Re: Bluetooth Anwesenheitssteuerung
Fast der gleiche Effekt.
Fr 30. Jun 18:16:42 CEST 2017 - Emms_iPhone ist nicht erreichbar!
-e Fr 30. Jun 18:16:47 CEST 2017 - Emms_iPhone status geändert! Variable mit ID 3879 wird deaktiviert!
Ich habe mittlerweile eine Testvariable angelegt, weil ich dachte, das die 950 vielleicht einen Knacks hat. Aber auch die Variable bleibt wie sie ist.
Mit welchen Status muss ich denn starten, wahr oder nicht wahr?
Fr 30. Jun 18:16:42 CEST 2017 - Emms_iPhone ist nicht erreichbar!
-e Fr 30. Jun 18:16:47 CEST 2017 - Emms_iPhone status geändert! Variable mit ID 3879 wird deaktiviert!
Ich habe mittlerweile eine Testvariable angelegt, weil ich dachte, das die 950 vielleicht einen Knacks hat. Aber auch die Variable bleibt wie sie ist.
Mit welchen Status muss ich denn starten, wahr oder nicht wahr?
-
- Beiträge: 1343
- Registriert: 27.06.2015, 22:17
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 32 Mal
Re: Bluetooth Anwesenheitssteuerung
Das Gerät ist ja auch nicht erreichbar! Oder irre ich mich?emmpee hat geschrieben:Fast der gleiche Effekt.
Fr 30. Jun 18:16:42 CEST 2017 - Emms_iPhone ist nicht erreichbar!
-e Fr 30. Jun 18:16:47 CEST 2017 - Emms_iPhone status geändert! Variable mit ID 3879 wird deaktiviert!
Ich habe mittlerweile eine Testvariable angelegt, weil ich dachte, das die 950 vielleicht einen Knacks hat. Aber auch die Variable bleibt wie sie ist.
Mit welchen Status muss ich denn starten, wahr oder nicht wahr?