externe Programme aus fhem starten

Begonnen von spieler, 28 April 2015, 19:27:39

Vorheriges Thema - Nächstes Thema

spieler

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";;

Otto123

Sowas wäre ne Idee
{system ("<dein aufruf>")}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

spieler

#2
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);
}
}
}
#############################################################

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

spieler

Hallo Otto123,
Danke für den Tipp mit den Code Tags. (Kannte das gar nicht)
Liest sich jetzt wirklich viel besser.


Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Mann kann auch "einem" User Rechte auf (Teile) der Hardware geben.

Dein Programm ist quasy eine Zwischenschicht dafür.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html