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

Hallo Wzut,

danke für deine Zeit.
Ich bekomme hierbei keinerlei Rückgabe.
Auch nach Änderung von User und PW, sowie Änderung auf die Daten vom Powermodul bekomme ich lediglich in FHEM unter STATE ein "active".
Ansonsten keinerlei Erregung.

Allerdings hatte ich bei meinen gestrigen Test schonmal geschafft, eine Ausgabe in Datei zu speichern, wobei das auch nur die Daten waren, die ich gestern gepostet habe.

Ich werde jetzt nochmal versuchen, den Code zu ändern, z.B. mal dein "qx" versuchen, bzw mal belesen was es bewirken soll.

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

Wzut

nimm keine && Kombination und schliesse die URL Übergabe an wget (eben wegen den & ) in Hochkommas ein ( siehe mein Bsp )
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

wundervoll, ich danke dir!!
So funzt es wie ich mir das vorstelle.

für die Nachwelt mal der betreffende Teil aus meiner fhem.cfg für den 3. Anschluss des Powermoduls...

define on_LEDs_Terrasse notify LEDs_Terrasse:on {system("sudo wget -q -O - 'http://192.168.0.151/sw?u=user&p=passwort&o=3&f=on'")}

define off_LEDs_Terrasse notify LEDs_Terrasse:off {system("sudo wget -q -O - 'http://192.168.0.151/sw?u=user&p=passwort&o=3&f=off'")}



Danke an alle Beteiligten!!

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

Wzut

ohh haaa : SCHWÖÖÖÖRE GEBURT :)
freut mich das Beharrlichkeit letztendlich doch noch zum Ziel geführt hat.
Nur eines noch : warum das sudo vor dem wget ? weil sonst der FHEM User die Zieldatei  ( die dir eh egal ist ) nicht schreiben darf ?
wenn ja, dann schick den Output doch gleich ins Linux Nirrwana  : wget  -q -O /dev/null 

Edit : ganz vergessen ... warum zwei notifys ? ich bin der Meinung das geht auch mit einem ;)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

VB90

Um meinen Lernprozess zu vertiefen werde ich mir das morgen nochmal anschauen.  Danke
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

VB90

Feedback

Ohne sudo funzt es nicht. Vermutlich weil dem fhem-User die entsprechenden Rechte fehlen.
Da es mit sudo aber klappt und ich zum anderen dieser Tage auf andere Hardware umsteigen will, werde ich es einstweilen so belassen.
Auf dem neuen System werde ich mich mit den Userrechten nochmal befassen und es dann unter Umständen ändern.

Ein notify würde reichen, wenn ich statt "on/off" auf "toggle" umsteigen würde.
Da dies bei ersten Tests aber nur sehr verzögert reagiert, bleibe ich auch hier lieber bei der aktuellen Lösung.

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

Wzut

Zitat von: VB90 am 04 März 2015, 18:53:44
Ein notify würde reichen, wenn ich statt "on/off" auf "toggle" umsteigen würde.
das hatte ich nicht im Hinterkopf , sondern  eine Auswertung ala name:.*  und weitergeben des on/off verpackt als $EVTPART1 ....
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

So geht es auch:

Zitatdefine InfratecOut1 dummy



define on_Infratec_Out1 notify InfratecOut1:on  {GetHttpFile("192.168.178.36", "/sw?u=admin&p=admin&o=1&f=on");; }
define off_Infratec_Out1 notify InfratecOut1:off  {GetHttpFile("192.168.178.36", "/sw?u=admin&p=admin&o=1&f=off");; }

Wie auslesen geht also schon.
Schalten geht auch.
Jetzt muss mann das noch zusammenbringen.
Und nach dem schalten muss vieleicht HTTPMOD nochmals gemacht werden, sonst dauert es bis die Schaltung auch angezeigt wird.
Das mit $EVTPART1 kenn ich nicht muss ich mal schauen wie das geht.
Und das dass Register von HTTPMOD den Schaltzustand des Dummys anzeigt muss auch noch rein.



Damu

Das Schalten geht mit dem Dummy und dem notify sehr gut.
Wie bring ich die Statusanzeige von HTTPMOD ausgelesen  und beim Sehalten sollte sich HTTPMOD automatisch aktualisieren in den Dummy?

Oder geht alles vieleicht besser mit HTTPMOD?
Zitatattr Infratec set01Name Out1on
attr Infratec set02Name Out1off
attr Infratec set01URL http://192.168.178.36/sw?u=admin&p=admin&o=1&f=on
attr Infratec set02URL http://192.168.178.36/sw?u=admin&p=admin&o=1&f=off
mit
Zitatset Infratec Out1on 1
set Infratec Out1off 1
Läst sich dann die Dose 1 Ein und Aus schalten.

Oder ist das nicht so gedacht?

Damu

Hallo

Ich möchte die Ausgabe von HTTPMOD
In den Readings von 0 und 1 mit off und on ändern.
Ich hab es mit stateFormat versucht.
Irgendwie schaff ich das aber nicht.
Hat mir jemand ein Tip wie ich das mache.

Zitatattr Infratec stateFormat {sprintf("%s", ReadingsVal ($name,"Out 1:",0))} 

Zitatdefine Infratec_Out1onMeldung notify Infratec { if ( Value("Out 1:") eq "1") {fhem("set InfratecOut1 on")} }
define Infratec_Out1offMeldung notify Infratec { if ( Value("Out 1:") eq "0") {fhem("set InfratecOut1 off")} }

so ginge es.
Aber nur für einen Kanal.
Und es braucht so ein Dummy zum schalten und ein Dummy zum anzeigen.
Aber zum Anzeigen ob die Liste überhaupt an ist sollte es gehen.

VB90

@Damu

nach allem Testen meinerseits und deinen Ergebnissen hier, komme ich zu dem Schluss, das es kaum oder nur schwer möglich ist, mit einem Dummy, notify oder was auch immer, alle Ports der Leiste zu schalten.

Deswegen habe ich pro Port eine Lösung umgesetzt, wie oben geschrieben.
Nachdem ich nun Netzwerkprobleme aus der Welt geschafft habe, funktioniert das schalten auch.
Ja, mit der Einschränkung, das ich keine Rückmeldung von der Leiste habe, sondern mich darauf verlassen muss, das die in FHEM angezeigten Zustände der Realität entsprechen.
Das lässt sich bei mir jedoch verschmerzen, da ich zum einen keine Lebensnotwendigen Dinge darüber schalte und zum anderen dies in aller Regel nur bei eigener Anwesenheit geschieht, so das ich direkt bemerke, wenn etwas schief läuft.

Nichts desto trotz wäre es natürlich cool, wenn FHEM den "echten" rückgemeldeten Zustand der Ports anzeigen würde.
Meines Erachtens muss man dafür jedoch einen/zwei Dummys pro Port zum schalten und ein/zwei weitere zum auslesen des Zustandes nutzen.

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

Damu

Das mit der echten Rückmelde sollte gehen.
Ist bei mir gegangen, aber auf den Status.
Das solte auch auf die Readings von HTTPMOD gehen.
Sollte gleich gehen wie bei einem Bewegungsmelder der ein Aktor schaltet.
Die Lampe geht dann halt dann nicht bei Motion ein
Das Problem das ich noch habe ist mit dem Status ob die Dose Online ist.
Das geht auch mit HTTPMOD aber da muss das Reading immer vor dem neuen einlesen zurückgesetzt werden.
Ich binn leider kein Programierer.
Das Infratec läuft aber stabiler als meine Energenie Steckdosenleisten.
Und zudem geht das Infratec nach einem Stromausfall wieder in den Zustand der vorher war zurück.
Das geht sonst nur mit den Schaltern von AVM.
Nach einem Stromausfall sind die Steckerleisten von Energenie meist nicht mehr Online.
Das Infratec hat Schaltrelais eingebaut, andere haben meist Tastrelais.
Das heist das Relais springt bei denen Stromausfall auf aus.
Wenn ich das Infratec vom Strom nehme bleiben alle Relais so wie sie sind.

Mit ReadingsVal sollte man die Readings von HTTPMOD von OUT 1 bis OUT 8 einzeln in einem oder zwei Notify pro Kanal auswerten und den Dummy in den richtigen Zustand setzen.





VB90

Die Verlässlichkeit der Leiste finde ich um Längen besser als jede Funklösung oder dergleichen.
Diese Dinger sind für den Einsatz in Serverracks konzipiert, kosten neu eine Unmenge Geld und sind dieses hunderprozentig auch wert.
Einzig die Randbedingungen wie Netzwerk und Verkabelung müssen stimmen, dann kann man fast nichts besseres haben.
Vor allem mit einer Max. Last von 3500Watt. Die günstigen Funkschaltdosen sind zwar mit 1000W angegeben, aber ob die das unter Dauerlast aushalten, möchte ich nicht testen.

Gut, optisch muss man Industrie-Look mögen, oder sie halbwegs verstecken können...

Ich will nicht zuviel verraten oder zu hohe Erwartungen wecken.
Aber wenn du mit deiner derzeitigen Lösung leben kannst, tu es erstmal.
Wzut ist vorhin mit einem Anliegen an mich herangetreten, mit ein bischen Glück ist da in absehbarer Zeit was in der Pipeline.
Wäre ja Schade wenn ihr euch doppelt Mühe macht und den Kopf zerbrecht.
Wobei ich den Eindruck habe, Wzut geht das gut von der Hand ;)

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

Damu

Es sind die PM 4-IP und die PM-8-IP.
Dazu kommt noch eine Infratec MP211, das ist eine einfachere 2 Steckdose mit IP.
Diese drei sind gleich Ansprechbar.
Wobei 2er 4er und 8er Dosenleiste.

Wzut

Ich möchte euch mal meine erste Betaversion des Moduls zum spielen geben.
1. Modul 98_InfratecPM.pm ins fhem Modulverzeichniss kopieren
2. fhem neu starten
3. Device anlegen mit
define  <name> ip-der-Steckdosenleiste
bzw. falls die nicht auf Port 80 hört mit
define  <name> ip-der-Steckdosenleiste:Port


danach die Attribute user und password anpassen

10 Sekunden nach dem das define durchgelaufen ist versucht das Modul den Status der Leiste zu lesen ( dabei wird auch festgestellt wie viele Ports sie hat  ( 2.4 oder 8 )
Sollte das bei Euch im ersten Versuch fehlschlagen ( weil ihr die Attribute noch nicht gespeichert habt ) , einfach im Webinterface mit get <name> status erneut versuchen. Konnte der Status ermittelt werden so legt das Modul Readings mit dem Namen und Status eurer Ports an.
In der Raumansicht wird für jeden erkannten Port eine Glühbirne angezeigt , diese kann man anklicken um den Port umzuschalten.

ToDo :
die Glühbirnen sind z.Z. noch hardcodet, schöner wäre es das Attribut devStateIcon auszuwerten
ein Status auto Update ( da hänge ich z.Z. etwas da die Routine einen Bug hat den ich noch nicht gefunden habe )

Edit : neue Version des Moduls auf der nächsten Seite
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher