Hallo zusammen,
ich habe mir vor ein paar Monaten das Ziel gesetzt meine KWL von der Firma Pluggit über Modbus (TCP) in mein KNX-System einzubinden. Primär war mein Ziel, wenn ich morgens duschen gehe, soll ausgelöst durch das Einschalten der Deckenspots in der Dusche, automatisch eine Stoßlüftungs-Funktion aktiviert werden. Bei der Pluggit AP310 heißt das, man muss diese in den manuellen Modus schalten und die Geschwindigkeit der Lüfter auf die höchste Stufe (4) schalten.
Da es für Modbus bereits Bibliotheken für python gab, war der Rest dann in erster Linie viel probieren. Auf welcher Bibliothek mein Plugin basiert beschreibe ich weiter unten.
Zu Beginn habe ich zum Testen erstmal nur ein standalone Python Skript geschrieben. Nachdem dies dann soweit funktionierte, dass ich Werte von der Anlage lesen und auch in die Anlage schreiben konnte, habe ich im nächsten Schritt ein Smarthome.py Plugin daraus gemacht. Dabei haben mir vorhandene Plugins sehr geholfen um zu verstehen wie man grundsätzlich ein Plugin schreibt und wie das ganze zusammenspielt. An dieser Stelle ein großes Dankeschön an alle Plugin Programmierer und vor allem an Marcus (mknx) für sein geniales Framework Smarthome.py
An die erfahrenen Plugin Programmierer, bitte schaut mal drüber ob ihr grobe Fehler seht, ich bin eigentlich kein Programmierer.
Ich habe schon Vorbereitungen getroffen um das ganze auch auf github in den Plugin Bereich einchecken zu können, deswegen werde ich an dieser Stelle abkürzen und ein copy&paste aus meiner README.md einfügen, ich denke die sollte alles wichtige erklären:
Requirements
This plugin is based on the lib pymodbus (branch python3):
Supported Hardware
It is currently working and tested with:
Configuration
plugin.conf
The plugin can be configured like this:
This plugin retrieves data from the KWL Pluggit AP310 based on the modbus register description from the official pluggit homepage ( http://www.pluggit.com/portal/de/faq...nt-system-9737 )
The data retrieval is done by establishing a modbus tcp network connection via modbus port 502.
You need to configure the host (or IP) address of your pluggit KWL.
The cycle parameter defines the update interval and defaults to 300 seconds.
items.conf
This attribute references the information to retrieve by the plugin.
The following list of information can be specified:
Example
Example configuration which shows the current unit mode, the actual week program, the fan speed, the remaining filter lifetime and the bypass state.
Ich hoffe es kann jemand gebrauchen.
Gruß,
Henning
ich habe mir vor ein paar Monaten das Ziel gesetzt meine KWL von der Firma Pluggit über Modbus (TCP) in mein KNX-System einzubinden. Primär war mein Ziel, wenn ich morgens duschen gehe, soll ausgelöst durch das Einschalten der Deckenspots in der Dusche, automatisch eine Stoßlüftungs-Funktion aktiviert werden. Bei der Pluggit AP310 heißt das, man muss diese in den manuellen Modus schalten und die Geschwindigkeit der Lüfter auf die höchste Stufe (4) schalten.
Da es für Modbus bereits Bibliotheken für python gab, war der Rest dann in erster Linie viel probieren. Auf welcher Bibliothek mein Plugin basiert beschreibe ich weiter unten.
Zu Beginn habe ich zum Testen erstmal nur ein standalone Python Skript geschrieben. Nachdem dies dann soweit funktionierte, dass ich Werte von der Anlage lesen und auch in die Anlage schreiben konnte, habe ich im nächsten Schritt ein Smarthome.py Plugin daraus gemacht. Dabei haben mir vorhandene Plugins sehr geholfen um zu verstehen wie man grundsätzlich ein Plugin schreibt und wie das ganze zusammenspielt. An dieser Stelle ein großes Dankeschön an alle Plugin Programmierer und vor allem an Marcus (mknx) für sein geniales Framework Smarthome.py
An die erfahrenen Plugin Programmierer, bitte schaut mal drüber ob ihr grobe Fehler seht, ich bin eigentlich kein Programmierer.

Ich habe schon Vorbereitungen getroffen um das ganze auch auf github in den Plugin Bereich einchecken zu können, deswegen werde ich an dieser Stelle abkürzen und ein copy&paste aus meiner README.md einfügen, ich denke die sollte alles wichtige erklären:
Requirements
This plugin is based on the lib pymodbus (branch python3):
Supported Hardware
It is currently working and tested with:
- Pluggit AP310
Configuration
plugin.conf
The plugin can be configured like this:
Code:
[pluggit] class_name = Pluggit class_path = plugins.pluggit host = 192.168.0.222 #cycle = 300
The data retrieval is done by establishing a modbus tcp network connection via modbus port 502.
You need to configure the host (or IP) address of your pluggit KWL.
The cycle parameter defines the update interval and defaults to 300 seconds.
items.conf
This attribute references the information to retrieve by the plugin.
The following list of information can be specified:
- prmRamIdxUnitMode: Active Unit mode> 0x0004 Manual Mode; 0x0008 WeekProgram
- prmNumOfWeekProgram: Number of the Active Week Program (for Week Program mode)
- prmRomIdxSpeedLevel: Speed level of Fans in Manual mode; shows a current speed level [4-0]; used for changing of the fan speed level
- prmFilterRemainingTime: Remaining time of the Filter Lifetime (Days)
- prmRamIdxBypassActualState: Bypass state> Closed 0x0000; In process 0x0001; Closing 0x0020; Opening 0x0040; Opened 0x00FF
- activatePowerBoost: bool variable that changes the Unit Mode to manual mode and sets the fan speed level to the highest level (4).
Example
Example configuration which shows the current unit mode, the actual week program, the fan speed, the remaining filter lifetime and the bypass state.
Code:
# items/pluggit.conf [pluggit] type = foo [[unitMode]] type = str visu_acl = ro enforce_updates = true pluggit_listen = prmRamIdxUnitMode [[weekProgram]] type = num visu_acl = ro enforce_updates = true pluggit_listen = prmNumOfWeekProgram [[fanSpeed]] type = num visu_acl = ro enforce_updates = true pluggit_listen = prmRomIdxSpeedLevel [[remainingFilterLifetime]] type = num visu_acl = ro enforce_updates = true pluggit_listen = prmFilterRemainingTime [[bypassState]] type = str visu_acl = ro enforce_updates = true pluggit_listen = prmRamIdxBypassActualState [[activatePowerBoost]] type = bool visu_acl = rw enforce_updates = true pluggit_send = activatePowerBoost
Gruß,
Henning
Kommentar