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

VB90

ja, tut es.
Manchmal kommt man aber nicht auf die simpelsten Dinge ;)


in der Console bekomme ich folgende Ausabe:
Use of uninitialized value $port in string ne at ./FHEM/98_InfratecPM.pm line 91, <$fh> line 565.

Konnte leider bislang noch keinen Zusammenhang mit einem Event erstellen und kann auch nicht sicher sagen, ob es nicht an meiner (eventuell) fehlerhaften Config auf meinem Testsystem (Odroid C1) liegt.
Werde mal meinen RPi im produktiven Einsatz beobachten.

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Wzut

Zitat von: VB90 am 15 März 2015, 17:39:02
in der Console bekomme ich folgende Ausabe:
ja , Fehler von mir, da ich ja FQDN:81 im define verwenden muss , du aber vermutlich nur die IP benutzt
Workaround : ändere das define auf IP:80 bis zum nächsten Update
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

ist reines Feedback gewesen, keine Funktionseinschränkung bei mir.
wenn du weisst, woraus die Meldung resultiert, ist es doch gut.
wenn es an meiner Config für deine Testumgebung liegt und du hierfür eine Lösung hast, dann immer her damit.
An mir soll es nicht scheitern.

Mir ist auch aufgefallen, das beim erten Verbindungsaufbau von FHEM zum Infratec, die Verbindung gerne in einem Timeout ausläuft.
Ich vermute mal, auch dies hängt mit dem "falschen" Port zusammen

edit: lt. Logfile wird der Verbindungsaufbau auf Port 80 versucht. Also doch kein Zusammenhang

eventuell(!) wäre es ratsam, den Port beim anlegen in FHEM grundsätzlich zwingend mit anlegen zu lassen

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Damu

ZitatInterval hast du auf 30 gesetz

Timeout kann man ändern.

Interval hast du im Program fest auf 30 gesetzt.

Timeout sind Minuten gemeint?

Bei Interval sind es Sekunden?

Ich hab das Powerline über nacht vom Netz getrennt.
Da hab ich dann gesehen das das Modul alle 30 Sekunden den Status abfragen wollte.
Timeout hatte ich auf 5 gesetzt.

VB90

@Wzut

keine Veränderung bei mir
T_InfratecPM: Error -> connect to http://192.168.0.151:80 timed out

irgendwann danach fängt es sich aber und funktioniert einfach.

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Damu

Zitatirgendwann danach fängt es sich aber und funktioniert einfach.

Bei mir absolut keine Probleme.

Ich habe FHEM auf einem NUC mit Ubuntu Server

VB90

hmm, stimmt.
habe grade nochmal mein Testsystem auf dem C1 hochgefahren, dort bekomme ich diese Meldung nicht.
Eigenartig. Sollte es ein RPi Problem sein??

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Wzut

Zitat von: VB90 am 15 März 2015, 19:40:23
keine Veränderung bei mir
T_InfratecPM: Error -> connect to http://192.168.0.151:80 timed out

ähhh, die gestern Abend nachgschobene Version sollte den Perl Fehler beim Start (bzw define) beseitigen wenn man Port 80 benutzt :) , nicht dein anderes Thema Timeout.
Ich kann dich aber in sofern beruhigen, das deine Hardware zu 99% OK sein muss, denn immerhin schalte ich die ganze Zeit dein PM übers Internet und habe mit dem timeout Wert von 2 noch nicht einen Fehler im log. Alle meine Test Fehlermeldungen musste ich quasi "erzwingen" in dem ich entweder einen falschen Port oder URL eingetragen habe. Du kannst zum testen natürlich den timeout Wert auch auf 5 oder gar 10 stellen. Hast du für das PM ein eigenes Log File definiert  ?
( am besten beim PM das Attribut  even-on-change-reading auf .* setzen )   

Edit :
Zitat von: Damu am 15 März 2015, 19:24:26
Interval hast du im Program fest auf 30 gesetzt.
Nein, 30 Sekunden werden benutzt wenn du  "attr <name> interval x"  nicht gesetzt hast !
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

bzgl. des Perl-Fehlers nichts neues, soll heißen, bisher nicht wieder gesehen worden.

Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Wzut

Die Dateien befinden sich nun im svn unter contrib/Infratec
Leider wird das contrib Dir beim update nicht aktualisiert, daher hier der direkte Link :

http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/Infratec/
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

Ich hab für das Infratec kein Log.

Was ist mit Timeout gemeint?
Das Modul frägt doch per HTTP den Status aller Dosen ab.
Da wird doch die Verbindung nach dem erhalt der Meldung gelöst?
Und Interval ist doch der Abstand wann eine neue Abfrage abgesetzt wird?

Ich möchte später mal mit FHEM eine Alarmanlage realisieren.
Da  möchte ich FHEM überall wo es geht entlasten.

Wzut

du brauchst für das Modul auch nicht unbedingt ein eigenes Logfile , Fehler & Meldungen landen je nach verbose Level im allgemeinen fhem Log ( und das hast du )
Timeout : die Zeit die das Modul wartet bis es eine Antwort von der Leiste bekommt bevor der Status auf error geht.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

#57
Heute bin ich endlich mal zu was gekommen.
Habe den Port1 mit einem DOIF kombiniert.

([Anwesend_Terrasse:state] eq "on") (set T_InfratecPM Out1 on) DOELSE (set T_InfratecPM Out1 off)
("Anwesend_Terrasse" ist ein Dummy, der via Bluetooth-Presence gesteuert wird.)

Grundsätzlich funktioniert es auch, also die FHEM-Seite ist stimmig.

Jedoch, bekomme ich beim ausführen der Kommandos jedoch immer einen TimeOut, d.h. keine praktische Umsetzung.

Zitat2015.03.20 17:19:28 3: T_InfratecPM: Error -> connect to http://192.168.0.151:80 timed out

Schalte ich den Port per Hand, gibt es keine Probleme. Auch schnelle Wechsel klappen.

Ich habe den TimeOut für das Powermodul jetzt mal auf 10Sek hoch gesetzt.
Hoffentlich komme ich morgen zum testen.

@Damu
könntest du bei dir mal bitte testen, ob eine ähnliche Konstellation fehlerfrei funktioniert?

Danke.

edit:

Das Problem könnte man eventuell umgehen, indem man das schalten im Zweifel einfach wiederholt.
Muss ich mal stöbern wie das wieder gehen könnte.
Allerdings wäre das keine Ursachenforschung sondern nur rumdocktern an den Symptomen

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Wzut

so gerade mal zwei Varianten durchprobiert :
define PM InfratecPM irgendwo.de 88
attr PM autocreate 1
attr PM event-on-change-reading .*
attr PM interval 300
attr PM password lala
attr PM room PowerModul
attr PM timeout 2
attr PM user heinz


define Out2 InfratecOut PM 2
attr Out2 room PowerModul


define mynot notify Testrollo:.*  {fhem "set PM Out2 $EVENT";;}

oder

define mynot notify Testrollo:.*  {fhem "set Out2 $EVENT";;}


Testrollo hat state on oder off - Ist das Signal einer Fernbedienung. Ich würde aber immer die Variante 1 wählen , denn 2 ist ein Umweg der dann doch über 1 geht.
Mit beiden Versionen schalte ich deine Out2 Dose ohne Fehler,
man beachte : timeout 2 und ich habe noch das Internet zwischen dir und mir.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

dann muss ich mich mal mit notify und "event" befassen.

wobei ich sowas in der Art, in Abhängigkeit vom Presence, schon verbaut habe.
War schon drauf und dran das mit ins DOIF zu packen.

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.