FHEM - Hausautomations-Systeme > Sonstige Systeme

Velux KLF200 mit Firmware 2.0.0.71 für io-homecontrol

(1/147) > >>

buennerbernd:
Update

Wenn man von vorn anfängt, zu lesen, stößt man auf einige veraltete Informationen.
Das Modul benötigt ein aktuelles FHEM und lässt sich wie folgt abrufen:

--- Code: ---update all https://raw.githubusercontent.com/buennerbernd/fhem/master/KLF200/2.0/controls_KLF200.txt
--- Ende Code ---
Die wichtigsten Informationen stehen dann im commandref.

Im Wiki sammle ich weitere nützliche Hinweise: Velux KLF 200 in FHEM

Update Ende


Die KLF200-Box mit der Firmware Version 1.... wird ja von FHEM schon durch das Modul IOHomecontrol unterstützt.

Mit der neuen Firmware 2.0.0.71 sind weitreichende neue Möglichkeiten hinzugekommen:
Man kann alle angeschlossenen Geräte prozentgenau steuern und man bekommt Feedback.
Es sieht auch so aus, als ob die Box nicht nur 5 Geräte unterstützt, sondern bis zu 200. (Konnte ich nicht testen, ich habe nur 5 Rollläden) Es werden nicht nur Rollläden, sondern alles mögliche mit io-homecontrol unterstützt.

Dafür war allerdings eine komplette Neuentwicklung des Moduls notwendig.
Diese Neuentwicklung habe ich ganz inoffiziel und aus Interesse für mich mal gemacht:

Wer mutig ist:

https://github.com/buennerbernd/fhem/tree/master/KLF200/2.0

Die neue Firmware gibt es hier: https://www.velux.com/api/klf200
Warnung: nach dem Firmwareupdate wird das Modul IOHomecontrol nicht mehr laufen!

Die Benutzung ist einfach:

Die Module herunterladen und nach /opt/fhem/FHEM/ kopieren:

83_KLF200.pm
83_KLF200Node.pm


--- Code: ---define <name> KLF200 <host> <pwfile>

Example:
    define Velux KLF200 192.168.0.66 /opt/fhem/etc/veluxpw.txt

--- Ende Code ---

Die verknüpften Geräte werden per Auto-Create als Instanzen von KLF200Node erzeugt.

Das Modul KLF200 unterstützt das Setzen von Szenen. (Man muss z.Zt. noch die ID wissen)

Die KLF200Node-Geräte unterstützen set on/off/up/down/stop/Prozentangaben

Ob 100% bzw. on oben oder unten bedeutet kann man mit dem Attribute setzen:

--- Code: ---directionOn: up/down
--- Ende Code ---

Das schwierigste war es, das Modul stabil zu bekommen, denn das neue KLF200-API läuft alles andere als stabil. Ich erreiche das dadurch, dass ich die Box bei Verbindungsproblemen automatisch reboote. Nun läuft das Modul, ohne dass man regelmäßig den Stecker ziehen muss.

Ich werde das Modul noch weiter verbessern.

Viel Spaß, wer sich traut :-)
Stefan.

Dr. Boris Neubert:
Hi Stefan,

ein neuer Thread ist gut.

Vielen Dank für das Modul!

Ich brauche ja mein Modul nicht weiterzupflegen, wenn es hier schon eines für das neue API gibt. Lieber schauen wir, dass Dein Modul ins offizielle Repository kommt und ich Beiträge dazu leiste, sofern das überhaupt erforderlich ist. Du hast eine Menge Code geschrieben!

Ich musste eine Queue implementieren, die im Hintergrund abgearbeitet wird, weil das REST-API bei weiteren Befehlen hängt, solange der vorige nicht abgearbeitet ist. Wenn ich das neue API richtig verstanden habe, kann es auch nur einen Befehl gleichzeitig handhaben. Wie gehst Du damit in KLF200.pm um?

Ich komme aus zeitlichen Gründen nicht dazu, mich in den Test einzuklinken. Ich habe auch ein Velux Active, das ich auch dagegen laufen lassen möchte.

Viele Grüße
Boris

buennerbernd:
Hallo Boris,

eine Queue habe ich noch nicht geschrieben. Das habe ich noch vor.
Das neue KLF API verwirft Szenen, die zu dicht nacheinander gesetzt werden. Bei der Einzelsteuerung von Geräten werden mehrere Aufrufe nacheinander akzeptiert.
So eine Queue kann aber auch nützlich sein, wenn Verbindungsprobleme dazwischen kommen.

Sollte das Modul wirklich offiziell werden, wäre es mir recht, wenn es vorher ein zwei Leute testen.

Gruß, Stefan.

Dr. Boris Neubert:
Hallo Stefan,

Danke für Deine Antwort. Bei der Queue kannst Du Dich gerne bei 83_IOHomecontrol bedienen. Ich hatte das einigermaßen generisch ausgeführt. Ich nicht per copy&paste nutzbar aber ggf. inspiriert es.

Ich komme vermutlich nicht vor Dezember zum Testen geschweige denn zum Entwickeln.

Viele Grüße
Boris

pejonp:
Hallo Stefan,

hab mal dein Modul auf die Schnelle ausprobiert. Geht leider noch nicht. Das steht im Log. Verbindung zum KLF200 habe ich aber noch, habe ich mit meinem Modul gleich kontrolliert.


--- Code: ---2018.11.06 18:49:17 5: HttpUtils url=https://192.168.2.160:51200/
2018.11.06 18:49:21 5: KLF200 (Velux) - error while connecting: https://192.168.2.160:51200/: Can't connect(2) to https://192.168.2.160:51200:  SSL wants a read first
2018.11.06 18:49:57 5: KLF200 (Velux) - Set login
2018.11.06 18:49:57 5: KLF200 (Velux) GW_PASSWORD_ENTER_REQ
2018.11.06 18:49:57 5: KLF200 Velux: unwrapped bytes     3000xxxxxxx000000000000000000000000000000000000000000000000
2018.11.06 18:49:57 5: KLF200 Velux: wrapped bytes c000233000xxxxxxxxxxxxxx00000000000000000000000000000000000000000000000013c0
2018.11.06 18:49:57 5: SW: c000233000xxxxxxxxx00000000000000000000000000000000000000000000000013c0
2018.11.06 18:50:21 5: HttpUtils url=https://192.168.2.160:51200/
2018.11.06 18:50:25 5: KLF200 (Velux) - error while connecting: https://192.168.2.160:51200/: Can't connect(2) to https://192.168.2.160:51200:  SSL wants a read first
2018.11.06 18:51:25 5: HttpUtils url=https://192.168.2.160:51200/
2018.11.06 18:51:29 5: KLF200 (Velux) - error while connecting: https://192.168.2.160:51200/: Can't connect(2) to https://192.168.2.160:51200:  SSL wants a read first
2018.11.06 18:52:29 5: HttpUtils url=https://192.168.2.160:51200/
2018.11.06 18:52:33 5: KLF200 (Velux) - error while connecting: https://192.168.2.160:51200/: Can't connect(2) to https://192.168.2.160:51200:  SSL wants a read first

--- Ende Code ---

Mit dem Passwort würde ich noch etwas anders machen. Ich habe es damals bei VBUS so gelöst, das PW ist das mehr oder weniger verschlüsselt in einer Datei, kann aber über die Oberfläche eingegebene werden. Wenn Bedarf besteht kann ich es ja einbauen.


--- Code: ---...
sub VBUSIF_DoInit($)
{
my $hash = shift;
if ($hash->{DeviceType} eq "Net" ) {
my $name = $hash->{NAME};
    my $pwd = VBUSIF_readPassword($hash);
   
    unless (defined $pwd) {
      Log3 $hash, 2, "Error: No password set. Please define it (once) with 'set $name password YourPassword'";
      return undef;
   }

delete $hash->{HANDLE}; # else reregister fails / RELEASE is deadly
my $conn = $hash->{TCPDev};
$conn->autoflush(1);
$conn->getline();
$conn->write("PASS ".$pwd."\n");
$conn->getline();
$conn->write("DATA\n");
$conn->getline();
    Log3 $hash, 4,"$name:  VBUSIF_Define: VBUSIF_DoInit ";
}
return undef;
}
...

--- Ende Code ---

Jörg

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln