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

Das ging ja fix. Danke dir.
Habe es bei mir eingebaut, was ich auf die schnelle sehe, funktioniert es bei mir.

vb

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

Wzut

Kleines Update :
die Glühbirnen sind nun nicht mehr fix sondern können mit dem Attribut devStateIcon ausgetauscht werden.
Wer das noch nicht kennt, hier mal zwei Beispiele :

on:control_plus@green off:control_minus@red
on:Shutdown off:Restart


Edit : Attribut Interval geht nun auch
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

endlich komme ich dazu dein Update einzuspielen.

scheint auch soweit zu funktionieren.
Wenn ich jedoch zu schnell nacheinander schalte, bekomme ich einen Error.

Ich werde mal den Eingangpost editieren, damit dein Modul schneller gefunden wird.

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

Wzut

Zitat von: VB90 am 13 März 2015, 15:27:34
Wenn ich jedoch zu schnell nacheinander schalte, bekomme ich einen Error.
habe ich mich nicht getraut :) ... aber das kann ich mir vorstellen da dann die Kommandos schneller raus gehen als die Rückantwort verarbeitet wird - kann man bestimmt mit einem internen Timer abfangen.
Bzw das ganze Thema Errorhandling ist bei weitem noch nicht ausgeschöpft, wichtig war mir jetzt das ein/aus geht und die Rückmeldung richtig verarbeitet wird.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

Das funktioniert soweit alles.
Sogar externe Änderungen (schalten über das normale UI) werden ja nun angezeigt. Gefällt mir.


für mich zum Verständnis...
Das Modul fragt den Zustand der Ports alle 30sek ab.
Hierzu loggt es sich ein, d.h. es wird jeweils eine neue SessionID generiert.

Hieraus resultiert wahrscheinlich der erwähnte Fehler.
Im normalen UI gibt es den auch, dort wird es mit einem "try again later" quittiert.

Wenn ich jetzt einen Port "automatisch" schalten will, muss ich hierzu einen Dummy, notify, whatever anlegen!?

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

Wzut

Zitat von: VB90 am 13 März 2015, 15:43:46
Das Modul fragt den Zustand der Ports alle 30sek ab.
jein, die Abfragezeit legst du mit dem Attribut interval selbst fest , bei 0 wird nie abgefragt
Zitat
Hierzu loggt es sich ein, d.h. es wird jeweils eine neue SessionID generiert.
nein , ein Login ist für einfaches Status abfragen nicht nötig , siehe Beitrag #8 von Damu

Zitat
Wenn ich jetzt einen Port "automatisch" schalten will, muss ich hierzu einen Dummy, notify, whatever anlegen!?
Wenn es um einfache zeitgesteuerte Schaltungen geht reicht ein simples at Zeit set <name> Outx on/off
wenn du aber in Abhängikeit von anderen Dingen etwas schalten willst dann brauchst du natürlich ein notify als Brücke zwischen dem Ereigniss und deinem Power Modul Port
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

Hallo Wzut
Danke
Genial funktioniert,  einfach genial.
Ist es möglich, das für jeden zu schaltenden Kanal ein Switch angelegt wird, zu erweitern?
Damit mann jedem Kanal einen Namen geben kann.
So wie es beim Energenie Modul gemacht wurde.
Zitat70_EGPM.pm
17_EGPM2LAN.pm


Wzut

Ich kenne zwar die beiden Module nicht, was ich aber durch lesen der command.ref jetzt glaube zu verstehen ist :
das EGPM2LAN entspricht dem was wir jetzt haben , das EGPM stellt dann nochmal jeden Port als eigenes Device zur Verfügung ?
und die Devicenamen bilden sich aus den Namen die man in Webinterface des Power Moduls festlegt, also statt dem default Namen Out x ?
wenn ja , die Namen hätten wir schon jetzt als readings - was das anlegen und verwalten der Subdevices betrifft muss ich mir die beiden Module mal anschauen und prüfen wie viel Code man sofort  "klauen" kann , getreu dem alten Motto :
Zitatgute Programmierer schreiben guten Code , geniale Programmierer  "borgen" sich guten Code
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

Ja genau so ist es.

EGPM2LAN sieht so aus:

ZitatEnergenie
Energenie
Internals
DEF    
192.168.178.24 reelbox
DEVICENAME
   
Switch
IP
   
192.168.178.24
NAME
   
Energenie
NR
   
117
XXXXXXX
   
reelbox
STATE
   
1: off 2: off 3: off 4: off
TYPE
   
EGPM2LAN
Readings
1_Socket_1
   
off
   
2015-03-13 21:10:08
2_Socket_2
   
off
   
2015-03-13 21:10:08
3_Socket_3
   
off
   
2015-03-13 21:10:08
4_Socket_4
   
off
   
2015-03-13 21:10:08
lastcommand
   
off 4
   
2015-03-07 00:33:20
state
   
1: off 2: off 3: off 4: off
   
2015-03-13 21:10:08

EGPM

für jeden Kanal ein Switch.

ZitatLAN_Switsch
LAN_Switsch
Internals
DEF    
Energenie 1
IODEV
   
Energenie
NAME
   
LAN_Switsch
NR
   
118
SOCKETNR
   
1
STATE
   
off
TYPE
   
EGPM
Readings
state
   
off
   
2015-03-07 00:33:18

Wzut

Update :
98_InfratecPM hat nun einen Client bekommen mit Namen 98_InfratecOut
beide Dateien in fhem Modul Dir kopieren und fhem neu starten.
Wenn global autocreate an ist wird beim ersten erfolgreichem Zugriff auf das Gerät für jedes Reading ein neues Gerät erzeugt.
Der Name ist gleich dem jeweiligen Reading im Hauptgerät - passt also auf das ihr die Namen nicht schon für andere Devices vergeben habt.

Todo : muss nun mal schauen wie das Infratec toggle Kommando ausschaut und das Hauptmodul noch fit für die Set Extensions machen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

"läuft" sagt man wohl heute. Danke!!
kopiert, neu gestartet, autocreate braucht ein paar Sekunden, alles gut.
Speichern nicht vergessen...

Mal schauen wie ich das nun alles neu einrichte.

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

Damu

Geht super.

Da kann ich dann mal im Bürozimmer mein Energenie und ein Fritz Powerline 546 durch das Infratec ersetzen.

toggle geht, aber hat sehr viel Verzögerung bis zum Auslösen.

Interval hast du auf 30 gesetzt.
Ich denke mal das ist die Abfrage aller Ports?
Ich hab es bei mir mal auf 300 geändert.
Ich weis nicht was hier sinn macht.
Geht das Infratec mal offline, egal wie.
Fragt das Modul den Wert trotzdem alle 30 Sekunden ab.
Oder nach 10 erfolgslosen Versuch wird auf eine andere Zeit umgestellt, bis die Dose wieder Online ist.
Dies ist nur eine Anregung.

Ich finde das Modul so super. Vielen Dank.




Wzut

Zitat von: Damu am 14 März 2015, 20:28:32
Interval hast du auf 30 gesetzt.
wie ich bereits geschrieben habe entscheidet der User (du) selbst welchen Wert er für seine Anwendung für sinnvoll hält

Hier nochmal ein kleines Update
98_InfratecPM
neu : Attribut autocreate , legt fest ob für jeden Port (Reading) automatisch ein Sub Device erzeugt werden soll
Ein Subdevice sind nicht zwingend erforderlich, die Infratec internen Kommandos on,off, toggle können direkt ausgeführt werden.
Die erweiterten Kommandos (SetExtensions) allerdings wie z.B. on-for-timer, off-till usw. können nur über das Subdevice benutzt werden.   
   
98_InfratecOut
neu : alle SetExtensions Kommandos werden unterstützt
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

soweit ich das bishierhin beurteilen kann, funktioniert es.

Verständnisfrage:

on/off-till arbeitet mit Angaben in Sekunden oder mit relativen Zeiten, also on bis 23:30Uhr z.B.??

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

Wzut

Antwort laut command.ref (das Ding kann eine Unmenge an Fragen beantworten ... )
ZitatManche Module unterstützen die sog. set extensions, und in der entsprechenden Dokumentation ist ein Link auf diesem Text zu finden. Falls im Modul selber einer der unten aufgeführten Befehle implementiert ist, dann wird die Modul-Implementation verwendet.

    on-for-timer <sekunden>
    Das Gerät wird per "on" eingeschaltet, und ein interner Zeitgeber wird erstellt, um nach <sekunden> ein "off" Kommando auszuführen. Um diesen Zeitgeber zu entfernen sollte man das Kommando mit dem Argument 0 erneut aufrufen. Achtung: dieser Zeitgeber wird bei einem restart nicht gespeichert.
    off-for-timer <sekunden>
    siehe on-for-timer.
    on-till <timedet>
    Das Gerät wird per "on" eingeschaltet, und ein at Instanz wird definiert, um es um <timedet> (Format: HH:MM[:SS]) per off auszuschalten. Diese at Instanz ist sichtbar unter dem Namen geräteName+"_till". Um das Ausschalten zu deaktivieren löscht man diese at Definition.
    off-till <timedet>
    siehe on-till.
    blink <anzahl> <blink-periode>
    Das Gerät wird mit "on" für die <blink-periode> eingeschaltet, und das wird nach <blink-periode> wiederholt. Um das Blinken vorzeitig zu stoppen spezifiziert man "0 0" als Argument.
    intervals <from1>-<till1> <from2>-<till2>...
    Das Gerät wird für die spezifizierten Intervalle eingeschaltet. Die einzelnen Intervalle sind Leerzeichen getrennt, und ein Intervall besteht aus zwei Zeitspezifikationen, die mit einem "-" getrennt sind.

Beispiele:

    set switch on-for-timer 12.5
    set switch on-till {sunset()}
    set switch blink 3 1
    set switch intervals 08:00-12:00 13:00-18:00
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher