Shell-Script Ausführen mit DOIF und {system(...)}

Begonnen von SouzA, 09 Oktober 2016, 12:02:16

Vorheriges Thema - Nächstes Thema

SouzA

Hallo Gemeinde,

ich frage den Batteriestatus meiner G-tags über das Shell-Script aus der Wiki ab.
Jetzt habe ich den System-Befehl dazu in einem DOIF verpackt.
Allerdings bekomme ich da Fehlermeldungen, obwohl die Scripte ausgeführt werden und das Reading aktualisiert wird... Also gehe ich davon aus, dass die Anweisung in den Scripten stimmt.

Die Minute ist gerade nur für Testzwecke eingestellt.

define di_Aktualisierung_Batterie_Gtags DOIF ([+00:01])\
({system('sudo /home/pi/D_GtagBatterie.sh&');;;;})\
({system('sudo /home/pi/Auto_GtagBatterie.sh&');;;;})\
({system('sudo /home/pi/A_GtagBatterie.sh&');;;;})\
DOELSE
attr di_Aktualisierung_Batterie_Gtags do always
attr di_Aktualisierung_Batterie_Gtags room Residents


error
{system('sudo /home/pi/A_GtagBatterie.sh&');;}: -1


Habe auch verschiedenste Schreibweisen ausprobiert.. u.a. mit und ohne sudo, mit und ohne Semikolon, mit Anführungsstrichen oder diesen einfachen Strichen... z.B.:
([+00:01])
({system("/home/pi/D_GtagBatterie.sh &")})
({system("/home/pi/A_GtagBatterie.sh &")})
({system("/home/pi/Auto_GtagBatterie.sh &")})
DOELSE


chmod 777 ist verteilt... hatte ich im Netz auch schon irgendwo gelesen.

Der error kommt auch, wenn ich nur eine Anweisung im DOIF habe.
Ist da jetzt was in der Anweisung falsch?

Vielen Dank
SouzA

EDIT:
im übrigen bekomme ich keinen error, wenn ich folgendes direkt in Kommandozeile eingebe:
{system('sudo /home/pi/D_GtagBatterie.sh&');;}
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Es ist nur der Rückgabewert des {} Ausdrucks der im error-Reading gespeichert wird, kein Fehler

SouzA

Danke für deine Antwort!

Achso?!
Na dann ist das jetzt halt so?
Weil im Log-File wird es auch immer als Error deklariert...

Danke.

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Du könntest versuchen das Shell-Script mit exit 0 zu beenden.

SouzA

Danke für den Tip,

ändert aber nichts.

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Dann ({system('sudo /home/pi/D_GtagBatterie.sh&');;return 0}) im DEF-Editor eingeben sonst ;;;;

SouzA

Hi,

hab das mal ausprobiert. Bei return 0 kommt im Logfile:
connect error: Software caused connection abort (103)
Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.


Bei ;;;; kommt im EventMonitor:
2016-10-11 18:24:36 DOIF di_Aktualisierung_Batterie_Gtags error: {system('sudo /home/pi/Auto_GtagBatterie.sh&');;;;}: -1
2016-10-11 18:24:36 DOIF di_Aktualisierung_Batterie_Gtags cmd_1_2
2016-10-11 18:24:36 DOIF di_Aktualisierung_Batterie_Gtags wait_timer: 11.10.2016 18:24:46 cmd_1_3 timer_1
2016-10-11 18:24:40 readingsGroup rg_Gtags_Batterie Auto_Gtag.Batterie: 94 %
2016-10-11 18:24:40 PRESENCE Auto_Gtag Batterie: 94


Soll das so sein?

Ich teste gerade noch weiter...

cya
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Zitat2016-10-11 18:24:36 DOIF di_Aktualisierung_Batterie_Gtags error: {system('sudo /home/pi/Auto_GtagBatterie.sh&');;;;}: -1

Wo hast Du return 0 eingetragen, jedenfalls nicht nach dem Sytemaufruf,

Zitatsonst ;;;;
damit meinte ich sonst ;;;;, statt ;;

SouzA

#8
Ja genau,

ich hab das so eingetragen, wie du es oben geschrieben hast:


([+00:01])
({system('sudo /home/pi/Auto_GtagBatterie.sh&');;return 0})


und alternativ hatte ich getestet:

([+00:01])
({system('sudo /home/pi/Auto_GtagBatterie.sh&');;;;})


Dabei kamen die oben geposteten Ergebnisse bei heraus.

Vielen Dank für Deine Geduld!

bis denn
SouzA


EDIT:
Das interessante daran ist, dass ich keinerlei Einträge bekomme, wenn man die Anweisung in der Kommandozeile ausführt... Nur im DOIF generiert es Fehler.
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Wenn DU das DOIF im DEF-Editor in der Geräteübersicht editierst, dann ;;return 0

Hast Du es so gemacht?

SouzA

Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Versuche den Shell-Befehl so aufzurufen, wie hier beschrieben.

Ellert

Zitatconnect error: Software caused connection abort (103)
Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.
Das deutet eher auf einen Fehler im Shell.Script hin, beim Aufruf, der das Batteriereading setzen soll.

SouzA

Mag sein, obwohl es copy & paste aus dem Wiki ist.
Ich check das aber noch einmal....
Aber wenn das so wäre, dann müsste ich doch auch eine Meldung bekommen, wenn ich den Befehl in der Fhem-Kommandozeile eingebe, oder?

Vielen Dank und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

stoxx

Hallo SouzA,

Zitat
EDIT:
im übrigen bekomme ich keinen error, wenn ich folgendes direkt in Kommandozeile eingebe
Wird denn dann auch das Skript richtig ausgeführt , sprich wird ein reading gesetzt mit dem Batterie-Level?
Wenn das so ist, ist ja mit dem Skript alles in Ordnung...

gruesse
stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..