FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: spieler am 28 April 2015, 19:27:39

Titel: externe Programme aus fhem starten
Beitrag von: spieler am 28 April 2015, 19:27:39
Hallo, ich habe ein externes Programm dass je nach zugesantem Wert Aktionen startet. (Ich hoffe somit Fhem keine root-rechte vergeben zu müssen.)
Die Werte sollen in die Datei "geschickterText" geschrieben werden.
Leider tut sich Fhem und ich hier schwer. Ich danke für Hilfe :)

define led dummy
attr led room Wohnzimmer
attr led webCmd an:aus
define MyNotify10 notify led : an   "echo "1234" > /home/pi/geschickterText";;
define MyNotify11 notify led : aus "echo "1234" >/home/pi/geschickterText";;
Titel: Antw:externe Programme aus fhem starten
Beitrag von: Otto123 am 28 April 2015, 21:50:55
Sowas wäre ne Idee
{system ("<dein aufruf>")}

Gruß Otto
Titel: Antw:externe Programme aus fhem starten
Beitrag von: spieler am 29 April 2015, 12:29:57
So ich habs jetzt gelöst.
der Fehler lag im Detail. So funktioniert es jetzt.


################################################################################
#raspberry Led schalten
################################################################################
define led dummy
attr led room Wohnzimmer
attr led webCmd an:aus
define MyNotify10 notify led:an "(echo "1234" >/home/pi/geschickterText)";;
define MyNotify11 notify led:aus "(echo "1235" >/home/pi/geschickterText)";;
################################################################################


Für alle die nach einer ähnlichen Möglichkeit suchen aus fhem ohne rootrechte externe Programme zu starten, hier ein kleines C-Programm zur Auswertung.
Das Programm muss mit dem Zusatzt für wiringPi compiliert werden.
und schaltet so, GPIO17, wiringPi 0.

Für Verbesserungsvorschläge bin ich aufgeschlossen :))


#################################################################################
#abfrage-Programm unter /home/pi/abfrage
#################################################################################
include <stdio.h>
#include <string.h>
#include <wiringPi.h>

void main (void)
{
if(wiringPiSetup() == -1)
return 1;

while(1)
{
FILE *fp;
int i[10];
//int i;
int temp;
int z=0;
char buffer[80];
fp = fopen("/home/pi/geschickterText", "r");
if(fp == NULL) {
        printf("Datei konnte nicht geoeffnet werden.\n");
}else {
        // komplette Datei zeichenweise ausgeben
        while((temp = fgetc(fp))!=EOF) {
printf("%c ",temp);
i[z]= temp;
//printf("%c",i[z]);
z++;
}
if (i[0]=='1'){
if (i[1]=='2'){
if(i[2]=='3'){

if(i[3]=='4'){
pinMode(0, OUTPUT);
digitalWrite(0,1);

}
else{
if(i[3]=='5'){
pinMode(1, OUTPUT);
digitalWrite(0,0);
}}}}}
sleep (4);
        fclose(fp);
}
}
}
#############################################################
Titel: Antw:externe Programme aus fhem starten
Beitrag von: Otto123 am 29 April 2015, 21:27:20
Zitat von: spieler am 29 April 2015, 12:29:57
So funktioniert es jetzt.
Unter der Voraussetzung, dass Du dem user fhem für /home/pi schreibrechte erteilt hast. Sonst geht nix.

Zitatohne rootrechte externe Programme

Man kann ohne weiteres externe Programme ohne Rootrechte aufrufen, falls das Programm keine Rootrechte braucht.

Und dann solltest Du noch die Sache mit den code tags lernen - der Knopf mit der Raute über den smilies. Da liest es sich besser.

Gruß Otto
Titel: Antw:externe Programme aus fhem starten
Beitrag von: spieler am 30 April 2015, 08:10:45
Hallo Otto123,
Danke für den Tipp mit den Code Tags. (Kannte das gar nicht)
Liest sich jetzt wirklich viel besser.

Titel: Antw:externe Programme aus fhem starten
Beitrag von: Otto123 am 30 April 2015, 09:19:59
 :D
Titel: Antw:externe Programme aus fhem starten
Beitrag von: Wernieman am 30 April 2015, 09:35:19
Mann kann auch "einem" User Rechte auf (Teile) der Hardware geben.

Dein Programm ist quasy eine Zwischenschicht dafür.