Danke auf jeden Fall für deine Hilfe, aber ich habe da jetzt eine Lösung gefunden, die ganz gut funktoiniert.
Mit folgendem Shellskript im Verzeichnis /usr/local/etc/DoorPi/scripts/ rufe ich nun zwei Pythonskripte zum Starten des Blinkens und zum Ausschalten der LED auf.
Bash
#!/bin/bash
CCU_IP=192.168.0.20 # IP-Adresse der CCU
scriptsDir=/usr/local/etc/DoorPi/scripts/
# HomeMatic CCU ISE_IDs
HMiseid1=4038 # "EG Haustür SV Tagesriegel"
# CCU-Systemvariable "EG Haustür SV Tagesriegel" auslesen
lock=$(curl -s -k "http://${CCU_IP}:8181/rega.exe?x=dom.GetObject(${HMiseid1}).Value()")
lock=${lock##*<x>}
lock=${lock%%</x>*}
# echo $lock
# Tagesriegel-Status-LED aktivieren
if [ "$lock" = 1 ]
then
# Tagesriegel-Status-LED über DoorPi aktivieren
python ${scriptsDir}TagesriegelLedFlash.py &
else
killall -9 python ${scriptsDir}TagesriegelLedFlash.py
python ${scriptsDir}TagesriegelLedOff.py
fi
exit 0
Alles anzeigen
Das Skript fragt zunächst den Status einer Systemvariablen "EG Haustür SV Tagesriegel" meiner CCU ab. Ist der Status 1, dann wird das Pythonskript "TagesriegelLedFlash.py"
Python
# Pin 2 des PiFace-Moduls blinken lassen
from time import sleep
import pifacedigitalio as pfio
pfio.init()
while(True):
pfio.digital_write(2,1) #LED an Pin 2 einschalten
sleep(1)
pfio.digital_write(2,0) #LED an Pin 2 ausschalten
sleep(1)
im Hintergrund aufgerufen. Ist der Status 0, dann wird das Pythonskript wieder beendet, falls es noch laufen sollte, und das Pythonskript "TagesriegelLedOff.py"
Code
# Pin 2 des PiFace-Moduls ausschalten
import pifacedigitalio as pfio
pfio.init()
pfio.digital_write(2,0) #LED ausschalten
ausgeführt.
Hier noch der Vollständigkeit halber das auf der CCU laufende Skript zum Starten des obigen Shellskripts:
Code
! DoorPi Tagesriegel-LED ansteuern
! Version 1.0, Autor: dtp
! +++++ Einwahldaten des DoorPi +++++
string login = "pi@192.168.0.21";
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Tagesriegel-LED per Shellskript ansteuern +++++
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("ssh "#login#" 'bash /usr/local/etc/DoorPi/scripts/TagesriegelStatus.sh'");
Alles anzeigen