Neues Modul: 98_InfratecPM für Infratec PowerModul PM x-IP

Begonnen von VB90, 21 Februar 2015, 12:04:36

Vorheriges Thema - Nächstes Thema

Damu

Hallo

Heute Morgen konnte ich nur Kanal 1 und 2 schalten.
Die Anderen wurden angezeigt aber liesen sich nicht schalten.
Habe das Modul nochmals neu Installiert.
Jetzt geht force plötzlich doch.
Zitatset Infratec Out1 on force
Zitatset Infratec Out1 off force

h1_ffm

Hallo alle miteinander,

mir bei mir ist heute folgendes aufgetreten:

ich wollte Out6 schalten

   set Infratec Out6 on force

bekam da die Fehlermeldung, dass Out6 unbekannt sei.
Nach einem get status wurde  dann auch Out6 wieder akzeptiert.
Eine Überprüfung ergab einen früheren Timeoutfehler.

Abhilfe würde ein generelles get status vor dem Ausführen bringen.

Generell gefragt: gibt es zwischen der Ausführen des Schaltbefehls und der darauf folgenden Staus-Abfrage eine Pause.
Bei meinen Scripten zur Steuerung der Infratecleiste habe ich Erfolge mit einem Sleep von 2 Sekunden zwischen den Schaltvorgängen erzielt.

Damu

Zitatbekam da die Fehlermeldung, dass Out6 unbekannt sei

Genau wie bei mir.
Mit OUT1 und OUT2 ging es aber.
Da ist wohl noch ein  Fehler im Code.

Damu

Die neuse Version mit force macht wohl das Problem
Zitat015.03.27 12:22:26 5: Set: Infratec ?
2015.03.27 12:22:33 5: GetUpdate, Interval : 8
2015.03.27 12:22:33 4: HttpUtils url=http://192.168.178.36:80/sw?s=0
2015.03.27 12:22:34 4: http://192.168.178.36:80/sw?s=0: HTTP response code 200
2015.03.27 12:22:34 4: HttpUtils http://192.168.178.36:80/sw?s=0: Got data, length: 143
2015.03.27 12:22:34 5: Infratec, Message1: <html>
<body>
Status:<br>
<br>
Out 1: 1<br>Out 2: 0<br>Out 3: 0<br>Out 4: 0<br>Out 5: 0<br>Out 6: 0<br>Out 7: 0<br>Out 8: 0<br>
</body>
</html>
2015.03.27 12:22:34 4: Infratec, Message2: Status:-Out1:1-Out2:0-Out3:0-Out4:0-Out5:0-Out6:0-Out7:0-Out8:0-
2015.03.27 12:22:34 5: Infratec , Status 1: 1
2015.03.27 12:22:34 5: Infratec , Status 2: 0
2015.03.27 12:22:34 5: Infratec , Status 3: 0
2015.03.27 12:22:34 5: Infratec , Status 4: 0
2015.03.27 12:22:34 5: Infratec , Status 5: 0
2015.03.27 12:22:34 5: Infratec , Status 6: 0
2015.03.27 12:22:34 5: Infratec , Status 7: 0
2015.03.27 12:22:34 5: Infratec , Status 8: 0
2015.03.27 12:22:34 5: Set: Infratec ?
2015.03.27 12:22:41 5: GetUpdate, Interval : 8
2015.03.27 12:22:41 4: HttpUtils url=http://192.168.178.36:80/sw?s=0
2015.03.27 12:22:42 4: http://192.168.178.36:80/sw?s=0: HTTP response code 200
2015.03.27 12:22:42 4: HttpUtils http://192.168.178.36:80/sw?s=0: Got data, length: 143
2015.03.27 12:22:42 5: Infratec, Message1: <html>
<body>
Status:<br>
<br>
Out 1: 1<br>Out 2: 0<br>Out 3: 0<br>Out 4: 0<br>Out 5: 0<br>Out 6: 0<br>Out 7: 0<br>Out 8: 0<br>
</body>
</html>
2015.03.27 12:22:42 4: Infratec, Message2: Status:-Out1:1-Out2:0-Out3:0-Out4:0-Out5:0-Out6:0-Out7:0-Out8:0-
2015.03.27 12:22:42 5: Infratec , Status 1: 1
2015.03.27 12:22:42 5: Infratec , Status 2: 0
2015.03.27 12:22:42 5: Infratec , Status 3: 0
2015.03.27 12:22:42 5: Infratec , Status 4: 0
2015.03.27 12:22:42 5: Infratec , Status 5: 0
2015.03.27 12:22:42 5: Infratec , Status 6: 0
2015.03.27 12:22:42 5: Infratec , Status 7: 0
2015.03.27 12:22:42 5: Infratec , Status 8: 0
2015.03.27 12:22:42 5: Set: Infratec ?
2015.03.27 12:22:50 5: GetUpdate, Interval : 8

Hier sehe ich immer wieder ein Set: Infratec ?

ZitatDone.<br>
<br>
Out 1: 1<br>Out 2: 0<br>Out 3: 0<br>Out 4: 0<br>Out 5: 0<br>Out 6: 0<br>Out 7: 0<br>Out 8: 0<br>
</body>
</html>
2015.03.27 12:25:01 4: Infratec, Message2: Done.-Out1:1-Out2:0-Out3:0-Out4:0-Out5:0-Out6:0-Out7:0-Out8:0-
2015.03.27 12:25:01 5: Infratec , Status 1: 1
2015.03.27 12:25:01 5: Infratec , Status 2: 0
2015.03.27 12:25:01 5: Infratec , Status 3: 0
2015.03.27 12:25:01 5: Infratec , Status 4: 0
2015.03.27 12:25:01 5: Infratec , Status 5: 0
2015.03.27 12:25:01 5: Infratec , Status 6: 0
2015.03.27 12:25:01 5: Infratec , Status 7: 0
2015.03.27 12:25:01 5: Infratec , Status 8: 0
2015.03.27 12:25:05 4: HttpUtils url=http://192.168.178.36:80/sw?u=admin&p=admin&o=5&f=on
2015.03.27 12:25:05 4: http://192.168.178.36:80/sw?u=admin&p=admin&o=5&f=on: HTTP response code 200
2015.03.27 12:25:05 4: HttpUtils http://192.168.178.36:80/sw?u=admin&p=admin&o=5&f=on: Got data, length: 141
2015.03.27 12:25:05 5: Infratec, Message1: <html>
<body>
Done.<br>
<br>
Out 1: 1<br>Out 2: 0<br>Out 3: 0<br>Out 4: 0<br>Out 5: 1<br>Out 6: 0<br>Out 7: 0<br>Out 8: 0<br>
</body>
</html>
2015.03.27 12:25:05 4: Infratec, Message2: Done.-Out1:1-Out2:0-Out3:0-Out4:0-Out5:1-Out6:0-Out7:0-Out8:0-
2015.03.27 12:25:05 5: Infratec , Status 1: 1
2015.03.27 12:25:05 5: Infratec , Status 2: 0
2015.03.27 12:25:05 5: Infratec , Status 3: 0
2015.03.27 12:25:05 5: Infratec , Status 4: 0
2015.03.27 12:25:05 5: Infratec , Status 5: 1
2015.03.27 12:25:05 5: Infratec , Status 6: 0
2015.03.27 12:25:05 5: Infratec , Status 7: 0
2015.03.27 12:25:05 5: Infratec , Status 8: 0
2015.03.27 12:25:08 5: GetUpdate, Interval : 8
2015.03.27 12:25:08 4: HttpUtils url=http://192.168.178.36:80/sw?s=0
2015.03.27 12:25:08 4: http://192.168.178.36:80/sw?s=0: HTTP response code 200
2015.03.27 12:25:08 4: HttpUtils http://192.168.178.36:80/sw?s=0: Got data, length: 143
2015.03.27 12:25:08 5: Infratec, Message1: <html>
<body>
Status:<br>
<br>
Out 1: 1<br>Out 2: 0<br>Out 3: 0<br>Out 4: 0<br>Out 5: 1<br>Out 6: 0<br>Out 7: 0<br>Out 8: 0<br>
</body>
</html>
2015.03.27 12:25:08 4: Infratec, Message2: Status:-Out1:1-Out2:0-Out3:0-Out4:0-Out5:1-Out6:0-Out7:0-Out8:0-
2015.03.27 12:25:08 5: Infratec , Status 1: 1
2015.03.27 12:25:08 5: Infratec , Status 2: 0
2015.03.27 12:25:08 5: Infratec , Status 3: 0
2015.03.27 12:25:08 5: Infratec , Status 4: 0
2015.03.27 12:25:08 5: Infratec , Status 5: 1
2015.03.27 12:25:08 5: Infratec , Status 6: 0
2015.03.27 12:25:08 5: Infratec , Status 7: 0
2015.03.27 12:25:08 5: Infratec , Status 8: 0

Bei der Version ohne force hab ich das nie.

h1_ffm

Nein, ein Fehler im Code ist das eigentlich nicht.

Wenn ich  z.B. set Infratec Out5 on zusammen klicken möchte, stelle ich fest, dass z. B. in der Pulldownliste nur Out1 und Out2 vorhanden sind.

Aus meiner Sicht ist das die Folge einer fehlgeschlagenen Statusabfrage.

Nach einem erfolgreichen  get infratec status ist die Pulldownliste auch wieder Korrekt.


Das würde bedeuten nach fehlerhaften Abfragen darf man die Ergebnisse dieser nicht verwenden. Status-Änderungen dürfen nur nach erfolgreichen Abfragen übernommen werden. Etwas weniger Dynamik :-)

Wzut

Zitat von: Damu am 27 März 2015, 12:33:29
Hier sehe ich immer wieder ein Set: Infratec ?
Bei der Version ohne force hab ich das nie.

das Set <name> ? macht das Webfrontend immer und bei jedem Modul um basierend auf der Antwort die Anzeige für den User zusammenzubauen  - sehen tust es jetzt nur weil du den verbose Level auf 5 gesetzt hast :)

ZitatAus meiner Sicht ist das die Folge einer fehlgeschlagenen Statusabfrage
nein eigentlich nicht.
Das Modul wird am Anfang mit Out1 & Out2 gestartet weil das die kleineste mögliche Variante ist.
Nach der ersten positiven Antwort wird aus dem Inhalt die weiteren tatsächlichen Ports generiert ( bsp 3 -8)
Treten danach Fehler auf sollte diese Tabelle sich eigentlich nicht mehr verändern - es sei dann es gibt Antworten des Webservers die ich nicht als direkten Fehler erkennen kann, die aber von ihrem Inhalt her nichts über die tatsächlich vorhanden Ports verraten.  D.h. ich müsste da wohl noch zusätzlich den HTTP Returncode im Auge behalten ob dieser ungleich 200 ist.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

#96
Zitatdas Set <name> ? macht das Webfrontend immer und bei jedem Modul um basierend auf der Antwort die Anzeige für den User zusammenzubauen  - sehen tust es jetzt nur weil du den verbose Level auf 5 gesetzt hast :)

Hab es bei der Version ohne force auch mit Vebose 5 nie.
Das Modul ohne force ist bei mir auch noch nie abgestürzt.
Das Neuste aber eben schon.
An der Dose scheint es bei mir nicht zu liegen.

h1_ffm

@WZUT,

bei meinen Shell-Scripten zum Steuer der Infratecleisten trat öfter der Fehler auf das ich  Antworten ohne Inhalt erhalten habe.

Wie bereits geschrieben musste ich auch delays zwischen den einzelnen Abfragen/Steuerbefehlen einbauen.

Bei exzessiven Abfragen passiert es auch, dass die Dosen nicht einmal mehr auf einen Ping antwortet. Hier hilft dann nur ein Reset der Leiste.
Öfter ist aber nur Port 80 (Webserver) nicht erreichbar. Da muss man manchmal nur warten. Vielleicht hängt das mit dem Parameter ,,Auto logout time (s)" im Netzwerkmenu der Leiste zusammen.

Wzut

Antwort ohne Inhalt :
den Fall habe ich z.Z. - sehr schön, wobei so ganz ohne Inhalt ist er doch nicht -> error 503 ,  Please try again

Wartezeiten zwischen den Abfragen :
1. wie mehrfach geschrieben liegt das in der Hand des Users wie klein er den Intervall wählt.
2. kommt nun das Thema force dazu , hier ist der entscheidende Parameter Timeout.
Diese Zeit muss zuerst abgelaufen sein bevor wiederholt wird
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

Ich denke h1_ffm meinte das es bei ihm Probleme gibt:
Wenn die Statusabfrage zufäligerweise mit einem Schaltbefehl zusammenkommt.
Da kann es sicherlich schon vorkommen das die Dose den Status Meldet und halt denn neuen Befehl auch noch gesendet wird.

Er schreibt das wenn die 2 Sekunden Regel nicht eingehalten wird, die Dose oft nicht mehr erreichbar ist.

Sowas umzusetzen ist extrem kompliziert.

Das hab ich bei mir aber so nie bemerkt.
Musste meine Dose noch nie Neustarten oder gar Reseten, das darf auch gerne so bleiben.

VB90

habe meinen TimeOut Fehler wahrscheinlich eingegrenzt.
Durch Abfrage der Infratec durch zwei FHEM Instanzen kommt das Ding wohl an seine Grenzen.

Ne Frage noch...
set on for Timer gibt mir nen Fehler zurück, das es das Kommando nicht geben würde.
Sehe ich ein.
Fällt euch auf die schnelle ne andere Lösung ein??

vb

([Tageslicht:twilight_weather]<150 and [HM_2771DB:state] eq "open")(set T_InfratecPM Out2 on) DOELSE (set T_InfratecPM Out2 off)
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Wzut

#101
d.h. du selbst hast zwei FHEMs am Start und ich mit meinem Testport hänge dann noch als Dritter dran ?
set Out2 on-for-timer 10 , lief bei mir gerade ohne Fehler ab , wo ist das Problem ? 

Werde heute noch eine neue Version ins svn stellen :
Fix : Ich habe den Fehler gefunden der u.A. bei reload des Moduls die Liste der Ports auf 2 zurück fallen lässt.
In der neuen Version gibt es direkt nach dem Start KEIN set Kommando mehr. Die set Liste wird nun nur einmalig aufgebaut nachdem das erste get status Kommando erfolgreich durchgelaufen ist. D.h solange das Internal PORTS den Wert 0 hat ist kein set verfügbar.

Update:
- Da verhindert werden muss das Abfragen zu schnell hintereinander gesendet werden muss das attr timeout min den Wert 2 haben, kleinere Werte werden auf 2 hochgesetzt.
- Um Antworten die weder den Inhalt Done. noch Status haben besser finden zu können habe ich das Logging bei verbose 5 etwas erweitert.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

Ja,  das heisst es.
Im wesentlichen funkt es aber,  ich weiß ja das ich nicht allein bin.
Bin auch gerade dabei,  den Zugriff des rpi zu begrenzen.
Ich würde es gern gegen Null fahren,  habe aber noch ein Verständnisproblem.  Is aber andere Baustelle.
Werde morgen nochmal den Timer testen.
Deine neue Version nehme ich dann auch gleich auf meinem c1 online und kann hoffentlich mit sachdienlichem Feedback dienen
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Wzut

Durch das etwas geänderte Logging sehe ich nun für heute Nacht :
2015.03.29 01:28:38 2: PM2 , Return : Pleasetryagain
2015.03.29 01:38:40 3: PM2: Error [503] -> connect to http:/blablub timed out
2015.03.29 01:48:39 2: PM2 , Return : Pleasetryagain
2015.03.29 01:58:40 3: PM2: Error [503] -> connect to http://blablub timed out
2015.03.29 03:08:40 3: PM2: Error [503] -> connect to http://blablub timed out

also Warnung , Timeout , Warnung , Ende und das bei einem Intervall von 600 und event-on-change-reading .*
( der Meldung "Please try again" fehlen die Blanks da ich die am Anfang entferne )
Ich habe nun leider keine Ahnung wie ich diesem Verhalten mit Software entgegen wirken kann, das scheint wirklich ein dicker Bug in der Infratec Firmware zu sein.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

Hallo

Hab die Neue Version mal getestet.

Sieht sehr gut aus:
Zitat2015.03.29 11:47:09 5: Set: Infratec Out1 off force
2015.03.29 11:47:09 4: HttpUtils url=http://192.168.178.36:80/sw?u=admin&p=admin&o=1&f=off
2015.03.29 11:47:09 4: http://192.168.178.36:80/sw?u=admin&p=admin&o=1&f=off: HTTP response code 200
2015.03.29 11:47:09 4: HttpUtils http://192.168.178.36:80/sw?u=admin&p=admin&o=1&f=off: Got data, length: 141
2015.03.29 11:47:09 5: Infratec, [200] Message1: <html>
<body>
Done.<br>
<br>
Out 1: 0<br>Out 2: 0<br>Out 3: 0<br>Out 4: 0<br>Out 5: 0<br>Out 6: 0<br>Out 7: 0<br>Out 8: 1<br>
</body>
</html>
2015.03.29 11:47:09 4: Infratec, Message2: Done.-Out1:0-Out2:0-Out3:0-Out4:0-Out5:0-Out6:0-Out7:0-Out8:1-
2015.03.29 11:47:09 5: Infratec , ret -> Done.
2015.03.29 11:47:09 5: Unforce : 1 off
2015.03.29 11:47:09 5: Infratec , ret -> Out1:0
2015.03.29 11:47:09 5: Infratec , ret -> Out2:0
2015.03.29 11:47:09 5: Infratec , ret -> Out3:0
2015.03.29 11:47:09 5: Infratec , ret -> Out4:0
2015.03.29 11:47:09 5: Infratec , ret -> Out5:0
2015.03.29 11:47:09 5: Infratec , ret -> Out6:0
2015.03.29 11:47:09 5: Infratec , ret -> Out7:0
2015.03.29 11:47:09 5: Infratec , ret -> Out8:1
2015.03.29 11:49:07 5: Set: Infratec Out1 on force
2015.03.29 11:49:07 4: HttpUtils url=http://192.168.178.36:80/sw?u=admin&p=admin&o=1&f=on
2015.03.29 11:49:07 4: http://192.168.178.36:80/sw?u=admin&p=admin&o=1&f=on: HTTP response code 200
2015.03.29 11:49:07 4: HttpUtils http://192.168.178.36:80/sw?u=admin&p=admin&o=1&f=on: Got data, length: 141
2015.03.29 11:49:07 5: Infratec, [200] Message1: <html>
<body>
Done.<br>
<br>
Out 1: 1<br>Out 2: 0<br>Out 3: 0<br>Out 4: 0<br>Out 5: 0<br>Out 6: 0<br>Out 7: 0<br>Out 8: 1<br>
</body>
</html>
2015.03.29 11:49:07 4: Infratec, Message2: Done.-Out1:1-Out2:0-Out3:0-Out4:0-Out5:0-Out6:0-Out7:0-Out8:1-
2015.03.29 11:49:07 5: Infratec , ret -> Done.
2015.03.29 11:49:07 5: Unforce : 1 on
2015.03.29 11:49:07 5: Infratec , ret -> Out1:1
2015.03.29 11:49:07 5: Infratec , ret -> Out2:0
2015.03.29 11:49:07 5: Infratec , ret -> Out3:0
2015.03.29 11:49:07 5: Infratec , ret -> Out4:0
2015.03.29 11:49:07 5: Infratec , ret -> Out5:0
2015.03.29 11:49:07 5: Infratec , ret -> Out6:0
2015.03.29 11:49:07 5: Infratec , ret -> Out7:0
2015.03.29 11:49:07 5: Infratec , ret -> Out8:1