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&');;}
Es ist nur der Rückgabewert des {} Ausdrucks der im error-Reading gespeichert wird, kein Fehler
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
Du könntest versuchen das Shell-Script mit exit 0
zu beenden.
Danke für den Tip,
ändert aber nichts.
Bis denn
SouzA
Dann ({system('sudo /home/pi/D_GtagBatterie.sh&');;return 0}) im DEF-Editor eingeben sonst ;;;;
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
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 ;;
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.
Wenn DU das DOIF im DEF-Editor in der Geräteübersicht editierst, dann ;;return 0
Hast Du es so gemacht?
Ja, gibt es noch andere Möglichkeiten?
Versuche den Shell-Befehl so aufzurufen, wie hier (http://fhem.de/commandref_DE.html#command) beschrieben.
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.
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
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
Hi,
ja, das Reading wird gesetzt. Das ist ja das Eigenartige... :o
Bis denn
SouzA
verwendest Du die interne Bluetooth-Funktion vom Raspi 3 oder über gehst Du über einen USB Dongle?
Die interne Bluetooth Funktion.
Hi,
ich hatte exakt das gleiche Problem. Falls es noch jemanden interessiert...
Ich verwende 1 notify für 1 script welches den Batteriestatus von 2 G-TAGs ausliest, d.h. das shell-script verwendet 2x gatttool
Das
connect error: Software caused connection abort (103)
kommt vom 2ten gatttool. Ich weiß nicht genau warum, aber es passiert weil es zeitlich direkt hinter dem 1ten gatttool läuft.
Das
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.
kommt dann von fhem zurück, weil das 2te gatttool nicht gelaufen ist und ergo die Variable keinen brauchbaren Wert hat.
Ein "sleep 1" zwischen den beiden gatttools löst das Problem (in meinem Fall).
kroman