Hi!
Hat jemand Ahnung oder eine Idee ob oder wie man per Fhem Befehl einen Mediaplayer Vero4K+ herunterfahren lassen kann?
Wäre richtig klasse wenn das irgendwie gehen würde!
Vielen Dank!
Hi,
ZitatOSMC is based on Debian which allows us to deliver a very powerful and expansive system.
Vero4k ist OSMC - Richtig?
also kannst Du per ssh von FHEM den Befehl schicken.
Gruß Otto
Ja genau! Ich habe auch schon im OSMC Forum nachgefragt was ich denn senden müsste damit es aus geht. Habe auch eine Antwort bekommen und stehe da wie ein Depp ;D denn ich habe keine Ahnung wie ich das in ein DOIF einbinden soll...
Hier der Code vom OSMC Forum:
Zitatcurl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://ip_of_your_osmc_device:port_of_your_www_interface_in_kodi]/jsonrpc
Mein Gedanke:
DOIF:
([LGTv:state] eq "off") (set VERO off CODE)
attr: do always
Könnte mir jemand helfen wie ich den Code in das DOIF einbinden muss... :D
Vielen Dank!
In etwa so
Ein Dummy,
defmod OSMC dummy
attr OSMC setList state:shutdown
attr OSMC webCmd state
der ein Notify aufruft,
defmod OSMC_Setup notify OSMC:shutdown {system("curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://ip_of_your_osmc_device:port_of_your_www_interface_in_kodi]/jsonrpc")}
Vielen Dank! Aber geht das nicht mit DOIF? Habe alles mit DOIF realisiert und würde gerne dabei bleiben..
Zitat von: misux am 01 November 2018, 20:42:58
Vielen Dank! Aber geht das nicht mit DOIF? Habe alles mit DOIF realisiert und würde gerne dabei bleiben..
genauso:
DOIF (<deine Bedingung>) {system("curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://ip_of_your_osmc_device:port_of_your_www_interface_in_kodi]/jsonrpc")}
Versuch es erstmal in der FHEM Kommndozeile:
Schreib dies hier in ein Script
curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://ip_of_your_osmc_device:port_of_your_www_interface_in_kodi]/jsonrpc
Dann rufe folgendes auf:
"Dein Script"
Edit: ich schreib es trotzdem
:D
Krass! Werde es morgen testen... muss ins Bett, frühschicht ist furchtbar.... ;D
HI!
Sorry habe es jetzt erst testen können und leider mit einem Error im DOIF. Leider weiß ich nicht was da falsch sein könnte... Kann sich das vielleicht bitte jemand anschauen?
Mein DOIF:
([TVTime:state] eq "off" or [KINOTime:state] eq "off") {system("curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://192.168.1.40:80/jsonrpc")}
Die Fehlermeldung im Reading:
Zitat{system("curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://192.168.1.40:80/jsonrpc")}: syntax error at (eval 165367) line 1, near ""curl --data-binary '{"jsonrpc"
Habe auch schon im OSMC Forum nachgefragt, und der Kollege von dem ich den Code habe hat leider auch keide Idee...
ZitatJust a stabb in the dark, but since the command curl in needs " in the system call, like {system("
then in the curl command there is an other set of ", which might break the system string?
Don't know how fhem works, if you can escape those other "?
@ Damian
Hast du eine Idee was da das Problem sein könnte? :-\
Zitat von: misux am 07 November 2018, 21:50:58
@ Damian
Hast du eine Idee was da das Problem sein könnte? :-\
Mein System läuft unter Windows, daher kann ich es bei mir nicht testen.
Oha... :-\
Okay... Dann versuche ich es mit Otto123 Variante... Muss aber erstmal schauen wie ich einen Script erstelle... Denke das wird erst zum Wochenende was... Danke erstmal...
Das Problem sind mit Sicherheit die geschachtelten Anführungszeichen: ...("curl --data-binary '{"...
Daher dürfte das Auslagern helfen.
Hallo Otto123 ;D
So ich versuche mich an deimer Lösung... und hänge etwas...
Zitat von: Otto123 am 01 November 2018, 20:49:54
Versuch es erstmal in der FHEM Kommndozeile:
Schreib dies hier in ein Script
curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://ip_of_your_osmc_device:port_of_your_www_interface_in_kodi]/jsonrpc
Dann rufe folgendes auf:
"Dein Script"
Edit: ich schreib es trotzdem
Ich habe nun ein Notify erstellt:
Internals:
CFGFN
DEF curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://192.168.1.40:80/jsonrpc
NAME MediaplayerPower
NR 98188
NTFY_ORDER 50-MediaplayerPower
REGEXP curl
STATE active
TYPE notify
READINGS:
2018-11-10 17:22:20 state active
Attributes:
Nun hänge ich etwas wie ich mein script aufrufen soll... :-\
Kannst mir etwas auf die Sprünge helfen?
Du sollst Deinen Text curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://192.168.1.40:80/jsonrpc
in eine Script Datei schreiben.
Also von mir aus in die Datei /opt/fhem/MeinScript.sh
Dann rufst Du im notify den Befehl "bash /opt/fhem/MeinScript.sh"
auf.
Den gleichen Befehl kannst Du auch einfach in der FHEM Kommandozeile aufrufen.
Du kannst Dein jetziges notify so ändern (Ob der Trigger/Event so stimmt weiß ich nicht!):
defmod MediaplayerPower notify LGTv:off "bash /opt/fhem/MeinScript.sh"
Gruß Otto
achso... ::) jetzt kapiert..
Aber es harpert schon in der Kommandozeile...
das eingetragen und ab die Post mit dem Ergebnis..
curl --data-binary '{"jsonrpc":"2.0","method":"System.Shutdown","id":1}' -H 'content-type: application/json;' http://192.168.1.40:80/jsonrpc
Zitat
Unknown command curl, try help.
Unknown command ', try help.
Du hast jetzt den curl Befehl in der FHEm Kommandozeile? Wir reden komplett aneinander vorbei :'(
:o Oh mann ich doof... okay..
1. script.sh erstellen
2. Befehl zum starten des scrypten in die Kommandozeile eingeben! ::)
OKAY! Muss meinen Sohnemann abholen und daaaaaann heute Abend klappt das bestimmt!!!
Vielen Dank! ;)
JUHU! es hat geklappt! Jedenfalls mit den Kommandozeile und dem Skript!
HAbe versucht das ganze in ein DOIF zu packen... leider klappt das nicht.
([TVTime:state] eq "off" or [KINOTime:state] eq "off") ("bash /opt/fhem/Mediaplayer.sh")
auch das probiert...
([TVTime:state] eq "off" or [KINOTime:state] eq "off") ({system(" /opt/fhem/Mediaplayer.sh")})
wie müsste denn der richtige Code für das DOIF lauten?
Dazu kann man so nix sagen, die zweite Variante kann so funktionieren muss aber nicht. Die erste Variante ist eher richtig, dazu bräuchte man aber ein list um zu sehen was nicht geht. Ich bin nicht sicher
Versuch das DOIF doch erstmal einfacher, eine Bedingung und vor allem eine Alternative. So kann es sein, dass es im Status hängt und do always nötig wird.
Mit notify wäre es einfacher, etwa so: (nicht getestet)
(TVTime|KINOTime):off "bash /opt/fhem/Mediaplayer.sh"
Falls beide einen entsprechenden Event liefern, kannst Du im Event Monitor sehen.
Gruß Otto
HI!
Mit dem Notify klappt das, ja... Aber ich möchte soweit wie möglich mit DOIFS arbeiten (damit kann ich am besten umgehen auch wenn es eher schlecht als recht ist)
Die Bedingungen machen mir keine Probleme oder Sorgen sondern der ausführungsteil im DOIF!
Ich wein nicht wie der Ausführungsteil im doif aussehen soll damit das DOIF mit die Bash Datei "startet/ausführt"...
:-\
Hah! Ich habs aber mit einem kleinen Problem...
([TVTime:state] eq "off" and [KINOTime:state] eq "off") ("bash /opt/fhem/Mediaplayer.sh") (set Mediaplayer off)
DOELSEIF
([LGTv:input] eq "AVR" or [TVTime:state] eq "on" or [KINOTime:state] eq "on") (set Mediaplayer on)
attr. wait 0:60:0
attr. do Always
Das funktioniert soweit, allerdings ignoriert er das Wait für (set Mediaplayer off)...
Hab ich das iegrndwie falsch gesetzt?
Er soll sofort die Bash Datei ausführen, 60sek. später (set Mediaplayer off) setzen... (Mediaplayer ist ein Relais das den Madiaplayer vom Netz trennt nachdem er mit der bash Datei runtergefahren wurde...)
ZitatNun kann mit dem wait-Attribut nicht nur für den Beginn der Sequenz, sondern für jeden Klammerblock eine Verzögerung, getrennt mit Komma, definieren werden,
:-X
Ja... ist mir auch aufgefallen... ;D
Nun funktioniert es! VIELEN Dank an euch!!!
([TVTime:state] eq "off" and [KINOTime:state] eq "off") ("bash /opt/fhem/Mediaplayer.sh") (set Mediaplayer off)
DOELSEIF
([TVTime:state] eq "on" or [KINOTime:state] eq "on") (set Mediaplayer on)
attr: 0,60:0
attr: do always
DAmit wird der Mediaplayer heruntergefahren sobald meine Dummys TVTime und KINOTime "off" sind und 60 Sek später wird der Player vom Netz getrennt.
Ist TVTime oder KinoTime "on" wird der Player wieder ans Stromnetz geschlossen und bootet sauber hoch.
TOP! 8)
Moin,
ich glaube nicht, dass Du für Deine Funktion wirklich do always benötigst. Das muss auch ohne funktionieren.
Ich wäre mir sogar nicht ganz sicher ob es kontraproduktiv ist:
Falls TVTime und KINOTime weitere Events liefern wird jedesmal das DOIF getriggert und damit werden unnötige off bzw. on Befehle gesendet die ins Leere laufen, da der Zustand eigentlich schon erreicht ist.
okay... Teste ich mal aus...