system() liefert immer -1 zurück

Begonnen von Owel, 19 Dezember 2013, 12:11:26

Vorheriges Thema - Nächstes Thema

Owel

Hallo Leute,

ich bin etwas am verzweifeln. Ich hoffe ihr könnt mir helfen.

fhem.cfg:
define test dummy
attr test room TEST
attr test setList on off
define foo notify test  { system("echo \"Hallo\" ");; }


Wenn ich nun den Dummy schalte, erscheint folgendes im Log: foo return value: -1

Habe auch schon mit den ';' gespielt, aber immer das gleiche Ergebnis, dabei dachte ich, dass 'echo' ist noch eine einfache Übung.
Wollte ich doch eigentlich 'system("sudo /usr/sbin/i2cset -y 1 0x23 0x01")' absetzen...

hoffe ihr könnte mir helfen

Grüße
Owel

wkarl

Hallo Owel,

system() liefert nicht den exit code zurück. Siehe hier http://www.perlhowto.com/executing_external_commands

Du solltest backtics verwenden. Hab mich vor einiger Zeit auch damit rumgeschlagen.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Owel

#2
Ah ok, danke dir,
jedenfalls funktioniert das system("sudo /usr/sbin/i2cset -y 1 0x23 0x01") aber trotzdem nicht.
kann ich das irgendwie debuggen?

Wenn ich das  system("sudo /usr/sbin/i2cset -y 1 0x23 0x01") aber in ein "normales" perl skript einbaue, dann funktioniert das. Also wird wohl in der fhem syntax n Fehler sein.  ???

justme1968

läuft dein 'normales' perl script als gleicher benutzer mit den gleichen rechten wie fhem?

du kannst die ausgabe des sudo in ein file umleiten und da nachschauen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

http://forum.fhem.de/index.php/topic,11957.msg71086.html#msg71086

Ich habs ja auch geschafft den I2C über FHEM abzufragen  ;)

Ich les mir jetzt aber nicht den gesamten Beitrag durch - ich kann nur sagen:
Bei mir klappt es einwandfrei

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Owel

Puschel, dein Beitrag hilft mir natürlich weiter.

Meinen nicht lesen, und dann einfach deinen Verlinken. Hab mir aber die Mühe gemacht den zu lesen, leider hat der mal gar nichts mit meinem Problem zu tun...

naja ich bin mal am weiter Probieren...

Puschel74

Hallo,

ZitatMeinen nicht lesen, und dann einfach deinen Verlinken.
Ich meinte eigentlich das ich "meinen" Beitrag nicht ganz durchgelesen habe.
Tut mir leid wenn du das falsch verstanden hast.
Ich hätt "meinen" aber besser mal durchgelesen.

Nachdem ich das in "deinem" Beitrag gesehen hatte
ZitatWollte ich doch eigentlich 'system("sudo /usr/sbin/i2cset -y 1 0x23 0x01")' absetzen...
bin ich davon ausgegangen das du einem I2C-Device über den RasPi-I2C etwas mitteilen möchtest.

Zitatleider hat der mal gar nichts mit meinem Problem zu tun...

Der "falsche" verlinkte Beitrag nicht aber der vielleicht
http://forum.fhem.de/index.php/topic,12328.msg80950.html#msg80950

Es kann aber sein das ich wieder falsch liege - tut mir leid ich will dich nicht ärgern.

Zitatnaja ich bin mal am weiter Probieren...
Na dann.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Owel

Hey kein Problem,

nur manchmal geht es in diesem Fourm doch etwas harsch zu. Da war ich nun ebenso :)

also ein 'sudo -u fhem perl foo.pl' funktioniert.
In foo.pl steht:
system("echo \"Hallo\" ");
system("sudo /usr/sbin/i2cset -y 1 0x23 0x01");


also glaube ich nicht dass es am user oder sudo rechte liegt.

Was kann es noch sein?

Grüße
Owel

Owel

ES TUT!

ich hab mal fhem zu sudoers hinzugefügt, und meine cfg sieht jetzt so aus
define test dummy
attr test room TEST
attr test setList on off
define foo notify test {`sudo i2cset -y 1 0x23 0x01`}


keine Ahnung was da jetzt anders ist, aber es tut. Klasse!