Hallo,
ich versuche gerade meinen Receiver (Dreambox) in FHEM einzubinden.
Auf die Idee bin ich durch diesen Post im FHEM Forum (http://forum.fhem.de/index.php?topic=10793.0) gekommen.
Da ich nun leider blutiger Anfänger bin, kämpfe ich doch sehr mit den Grundlagen (aus diesem Grund habe ich auch hier gepostet).
Meine erste Frage:Kann ich aus FHEM (native auf FritzBox) direkt Linux Befehle (z.B. wget) ausführen?
In dem o.g. Thread wird ja ein shell Script dazu verwendet.
Wenn es nur per shell script (Sinnvoll) zu lösen ist, gleich ...
meine zweite Frage:
wo lege ich am besten das Script ab?
Danke schon mal für eure Hilfe
Predictor
Moin,
was konkret möchtest Du tun?
Was ich machen will? Ich will meinen Receiver per FHEM steuern.
Die erste Frage die ich mir stellte war ob es auch ohne shell script geht -> ja tut es => GetHttpFile ist das Stichwort.
Im Prinzip kann man alles steuern, was das Webinterface der Box zulässt - aktuell will ich nur ein-/ausschalten und Messages anzeigen.
Wie gesagt, ich bin schon ein Stück weiter, hänge aber nun an einem ganz simplen Syntax Problem.
Da ich es nicht mag wenn irgendwo IP´s fest eingetragen werden müssen, will ich mein selbst definiertes attr verwenden.
Ich habe ein Dummy Device angelegt und per userattr IPadress hinzugefügt.
gesetzt wird es mittels:
attr wz_Dreambox IPadress 192.168.22.121
Mein Aufruf zu meinem Receiver funktioniert auch bereits:
define DreamboxNotify notify wz_Dreambox {if(ReadingsVal('wz_Dreambox', 'state', 0) eq "on") { GetHttpFile("192.168.123.123:80", "/web/message?text=DreamboxON%&type=1&timeout=4")} elsif(ReadingsVal('wz_Dreambox', 'state', 0) eq "off") { GetHttpFile("192.168.123.123:80", "/web/message?text=DreamboxOFF%&type=1&timeout=4")} }
Nun die ganz simple Frage:
wie kann ich die (aktuell ja fest hinterlegte) IPadresse durch den Eintrag in den Attributen ersetzen?
{GetHttpFile((ReadingsVal('wz_Dreambox', 'IPadress', 0), "/web/message?text=DreamboxOFF%&type=1&timeout=4")}
funktioniert leider nicht.
Ich komme gerade einfach nicht auf die Syntax :-(
Danke schon mal.
Grüße
Predictor
Nimm AttrVal statt ReadingsVal
Zitat von: brmpfl schrieb am Sa, 02 März 2013 17:38Nimm AttrVal statt ReadingsVal
PERFEKT
großes DANKE an brmpfl
Ich bin jetzt meinem Zeil schon ein großes Stück näher, aber leider hänge ich bereits wieder am nächsten Problem.
Mein funktionierender notify sieht so aus:
define DreamboxNotify notify wz_Dreambox {if(ReadingsVal('wz_Dreambox', 'state', 0) eq "on") { GetHttpFile(AttrVal('wz_Dreambox', 'IPadress', 0), "/web/powerstate?newstate=4")} elsif(ReadingsVal('wz_Dreambox', 'state', 0) eq "off") { GetHttpFile(AttrVal('wz_Dreambox', 'IPadress', 0), "/web/powerstate?newstate=5")} }
Doch leider wird nun vom GetHttpFile mein Log zugespamt:
2013.03.02 18:12:52 3: DreamboxNotify return value: <?xml version="1.0" encoding="UTF-8"?>
<e2powerstate>
<e2instandby>true
</e2instandby>
</e2powerstate>
Im Vorfeld hatte ich zusammen mit einem Kollegen an einer bash basierenden Version gearbeitet, dabei ist u.a. folgende Codezeile mit funktionierender RegEx entstanden:
wget -q -O- http://192.168.22.121/web/powerstate -O- | sed -r -n 's/<e2instandby>(.*).*/\1/gp'| sed 's/\W//'
Nun stehe ich vor dem Problem, die RegEx in meinen Notify zu integrieren, doch leider ist mir das 5 nummern zu hoch :-(
Kann mir evtl. ein Profi dabei helfen wie die Regular Expression in mein bestehendes notify integriert werden kann?
Ich werde wenn es funktioniert die ganzen Infos in einen wiki Artikel übertragen, somit wäre eure ganze arbeit auch für andere zugänglich.
RIESEN DANK schon mal
Grüße
Predictor
Versuch doch mal
attr DreamboxNotify loglevel 6
Zitat von: brmpfl schrieb am Mo, 04 März 2013 20:36Versuch doch mal
attr DreamboxNotify loglevel 6
Hallo,
das is leider nicht ganz das was ich wollte.
Es funktioniert in so weit, dass nun keine Events mehr gelogt werden - ich hätte schon gerne den Rückgabewert im Log.
Ich finde leider immer noch keinen Ansatz um hier eine RegEx einzubinden