LED von CCU auf RaspberryMatic nachbilden

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

onkel_peter
Beiträge: 90
Registriert: 08.12.2014, 22:16
Wohnort: Erfurt

Re: LED von CCU auf RaspberryMatic nachbilden

Beitrag von onkel_peter » 04.05.2017, 15:09

Hallo Frank,
das hört sich doch schon mal gut an mit der "Info" LED.
Habe auf jeden Fall Interesse an dem "Code/Skript" für die Ansteurung.

Vielen Dank noch mal für Deine Bemühungen.

hetty
Beiträge: 19
Registriert: 08.12.2016, 08:22
Danksagung erhalten: 1 Mal

Re: LED von CCU auf RaspberryMatic nachbilden

Beitrag von hetty » 04.05.2017, 19:30

Hallo,
hier mal meine ersten Gehversuche mit der Info-LED!

Zuerst habe ich mir einen Ordner "led" in "/usr/local/addons" angelegt.
In diesem Ordner habe ich folgende Scripte erstellt:

info-led-toggle.sh

Code: Alles auswählen

#!/bin/bash
INSTANZ="Info-LED Homematic-Raspi"
Pidfile=/var/run/info-led.pid
BPDIR=/usr/local/addons/led
COMMAND=./info-led.sh

val=$2

if [ -f $Pidfile ]
then
	Pid=`cat $Pidfile`
fi

case "$1" in
'start')
		if [ -f $Pidfile ] ; then
				if test `ps -o pid | grep -c $Pid` = 1; then
						echo "Not starting $INSTANZ - instance already running with PID: $Pid"
				else
						echo "Starting $INSTANZ"
						cd $BPDIR
						nohup $COMMAND $val &> /dev/null &
						echo $! > $Pidfile
				fi
		else
				echo "Starting $INSTANZ"
				cd $BPDIR
				nohup $COMMAND $val &> /dev/null &
				echo $! > $Pidfile
		fi
		;;

'stop')
		if [ -f $Pidfile ] ; then
				echo "stopping $INSTANZ"
				kill -15 $Pid
				rm $Pidfile
		else
				echo "Cannot stop $INSTANZ - no Pidfile found!"
		fi
		;;

'restart')
		$0 stop
		sleep 5
		$0 start
		;;

'status')
		if [ -f $Pidfile ] ; then
				if test `ps -o pid | grep -c $Pid` = 0; then
						echo "$INSTANZ not running"
				else
						echo "$INSTANZ running with PID: [$Pid]"
				fi
		else
				echo "$Pidfile does not exist! Cannot process $INSTANZ status!"
				exit 1
		fi
		;;

*)
		echo "usage: $0 { start | stop | restart | status }"
		;;

esac
exit 0
info-led.sh

Code: Alles auswählen

#!/bin/sh

#Konfiguration

#LED GPIO Port
LED=6
pause=$1

toggle()
{
  # Zustand des Pins einlesen
  LedVal=$(cat /sys/class/gpio/gpio$1/value)
  # LED toggeln
  if [ $LedVal -eq "0" ]; then
    LedVal="1"
  else
    LedVal="0"
  fi
  # Pin auf 0 oder 1 setzen
  echo $LedVal > /sys/class/gpio/gpio$1/value
}

while :
do
  # Die LED blinken lassen!
  for Port in $LED
  do
    if [ $pause = "" ]; then
	  echo "1" > /sys/class/gpio/gpio$1/value
    else
	  toggle $Port
	fi
  done
  if [ $pause = "slow" ]; then
  # led slow
  sleep 1
  fi
  if [ $pause = "fast" ]; then
  # led fast
  sleep 0.2
  fi
  # Schaltet die LED beim beenden immer aus!
  trap 'echo "0" > /sys/class/gpio/gpio"$LED"/value ; exit' 0 1 2 3 15
done
Den beiden Dateien die Rechte 755 gegeben.

Damit ist es möglich die Info-LED zu steuern.
Testen kann man es einfach so:
Über Putty mit RasPi verbinden, und in der Konsole folgendes eingeben:
Schnelles Blinken

Code: Alles auswählen

sh /usr/local/addons/led/info-led-toggle.sh start fast
LED aus

Code: Alles auswählen

sh /usr/local/addons/led/info-led-toggle.sh stop
Langasmes Blinken

Code: Alles auswählen

sh /usr/local/addons/led/info-led-toggle.sh start slow
LED dauerhaft an

Code: Alles auswählen

sh /usr/local/addons/led/info-led-toggle.sh start
Jetzt zum Homematic Script!
Ich habe mir zwei System-Variablen angelegt:
1. Info-LED Alarm
2. Info-LED Service
SystemVariablen.jpg
Ein Programm erstellt:
Prog_Info-LED.jpg
Das Programm wird über Cuxd Timer alle 60 sec. aufgerufen.
Der zurzeit von mir verwendete Test-Sript im Programm sieht folgendermaßen aus:

Code: Alles auswählen

integer a_msgcount = dom.GetObject(40).Value();
integer i_msgcount = dom.GetObject(41).Value();
string stdout;
string stderr;

object x = dom.GetObject("Info-LED Alarm");
object y = dom.GetObject("Info-LED Service");

if ((a_msgcount > 0) && (i_msgcount == 0)) {
 if (x.Value() == false) {
  system.Exec("sh /usr/local/addons/led/info-led-toggle.sh start fast", &stdout, &stderr);
  x.State(true);
 }
}

if (a_msgcount == 0) {
 if (x.Value() == true) {
  system.Exec("sh /usr/local/addons/led/info-led-toggle.sh stop", &stdout, &stderr);
  x.State(false);
 }
}

if ((i_msgcount > 0) && (a_msgcount == 0)) {
 if (y.Value() == false) {
  system.Exec("sh /usr/local/addons/led/info-led-toggle.sh start slow", &stdout, &stderr);
  y.State(true);
 }
}

if (i_msgcount == 0) {
 if (y.Value() == true) {
  system.Exec("sh /usr/local/addons/led/info-led-toggle.sh stop", &stdout, &stderr);
  y.State(false);
 }
}
Dieser Script ist alles andere als genial, aber ich test damit einfach nur die Zuverlässigkeit meiner sh Sripte.

So, der Anfang ist gemacht, jetzt bitte ich um Unterstützung!

Achtung!
Wenn das System bei blinkender Info-LED neu gestartet wir rennt mein Homematic-Script in eine Sackgasse, da das info-led.sh Script nicht ausgeführt wird, aber die SystemVariable ("Info-LED Alarm" oder "Info-LED Service") immer noch auf "true" steht.


Gruß
Frank
RaspberryMatic - RPI3 mit 80 Aktoren/Sensoren
1x Raspi3 1x RTC DS3231 3x Lan-Gateway
Gesteuert werden:
Heizkörper, Heizung (Biostar 23), Beleuchtung, Multimedia, Pool, Teich

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: LED von CCU auf RaspberryMatic nachbilden

Beitrag von Gluehwurm » 04.05.2017, 19:38

hetty hat geschrieben:... SystemVariable ("Info-LED Alarm" oder "Info-LED Service") immer noch auf "true" steht ...
Die können ja per einfachem Programm ohne WENN auf false gestellt werden, oder sehe ich das falsch?

Gruß
Bruno

fraenkyboy
Beiträge: 1
Registriert: 28.05.2017, 15:44

Re: LED von CCU auf RaspberryMatic nachbilden

Beitrag von fraenkyboy » 08.06.2017, 05:57

Hallo ich bin neu hier! und das mit der LED Ansteuerung für die Info finde ich auch gut! dann muss man nicht jeden Tag nachschauen ob irgendwas los ist, leider bin ich auf diesem Gebiet noch ziemlich unerfahren! wie schreibt man in den Ordner etc/init.de?
Habe die Datei S0lnitLED erstmal in einen anderen Ordner drinne, und starte sie per Hand.

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: LED von CCU auf RaspberryMatic nachbilden

Beitrag von dtp » 18.09.2017, 13:44

Warum nehmt ihr nicht Alchys Allinclusive-Skript, um damit die LED-Systemvariablen anzusteuern?

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

onkel_peter
Beiträge: 90
Registriert: 08.12.2014, 22:16
Wohnort: Erfurt

Re: LED von CCU auf RaspberryMatic nachbilden

Beitrag von onkel_peter » 18.09.2017, 21:56

Das ist natürlich naheliegend !
Für die Alarmmeldungen gibt es ebenfalls eine Lösung von alchy, soweit ich mich erinnere.

Gruß Peter

Benutzeravatar
Obihamster
Beiträge: 407
Registriert: 29.07.2015, 11:31

Re: LED von CCU auf RaspberryMatic nachbilden

Beitrag von Obihamster » 23.09.2017, 10:40

Nur als Hinweis nebenbei falls es nicht jeder schon weiß: (Ich weiß es erst seit 2 Tagen :D )

Man kann auch mit nem ganz einfachen WebUI Programm die Servicemeldungen anzeigen lassen ;)
Ich habe z.B. bei mir an der Haustür innen eine 16 LED Statusanzeige die über den Bewegungsmelder im Flur aktiv wird und habe dann mit 2 einfachen Programme das Problem gelöst.

1. Wenn Systemvariable Servicemeldung ist gleich oder größer 1 dann Statusdisplay LED 1 Orange.

2. Wenn Systemvariable Servicemeldung ist kleiner als 1 dann Statusdisplay LED 1 Grün.

Funktioniert bei mir bisher einwandfrei.

Soll nur als Tipp dienen falls jemand (wie ich) das noch nicht wußte das man es auch darüber lösen kann, natürlich kann man dann auch andere Aktoren (Gongs ect.) damit ansprechen.

Grüße Markus
Alles elektrisch und total überlastet.

Antworten

Zurück zu „RaspberryMatic“