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";;
Sowas wäre ne Idee
{system ("<dein aufruf>")}
Gruß Otto
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);
}
}
}
#############################################################
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
Hallo Otto123,
Danke für den Tipp mit den Code Tags. (Kannte das gar nicht)
Liest sich jetzt wirklich viel besser.
:D
Mann kann auch "einem" User Rechte auf (Teile) der Hardware geben.
Dein Programm ist quasy eine Zwischenschicht dafür.