Maico KWL WS 320 KBET

Ganz vielen Dank für deine Rückmeldung. Schon mal gut zu wissen, dass das ein verbreitetes Problem ist. Das hatte ich auch vermutet… Die Abfrage über „Datenblöcke“ hatte ich bereits so eingestellt, allerdings mit 10 ms Verzögerung…

Ich habe jetzt allerdings ein viel grundlegenderes Problem:

Ich habe auch auf die Firmenware 3.0 aktualisiert. Die Lüftung läuft noch vor sich hin, aber jegliche Kommunikation, über die Ethernet-Schnittstelle und USB funktioniert nicht mehr und ist tot. Weder über die „KWL Inbetriebnahme“ Software per USB noch per Modus TCP.

Daher die Frage: Gibt es da eigentlich sowas wie einen Reset für die HW? Wenn ich die Anlage aus- und wieder einschalte oder die Sicherung rausnehme, hat das bisher nicht dazu geführt, dass ich wieder über die Schnittstelle auf das Gerät zugreifen kann.

Dann hab ich wohl Glück gehabt :slight_smile:
Ich habe aber zwar eine WS470, sollte aber keinen Unterschied machen, da die Platinen ja gleich sind.
Nach dem Update bei mir auv v3.0:

  • USB geht
  • Modbus geht
  • Web Interface streikt komplett

Ich schalte das Gerät über den ein/aus Schalter aus. Dann nehme ich noch die Sicherung für ca. 10s raus. Mache ich immer, wenn der Modbus wg. Schreibzugriffen gestreikt hat. Danach ging es dann immer wieder. Nur ein/aus hat bei mir nicht immer geholfen. Evtl., aber auch, weil ich zu schnell wieder eingeschaltet habe.
Die reine Lüftungssteuerung ging immer bei mir. Ich hatte auch große Angst vor dem Update auf v3.0. Den habe ich auch nur gemacht, weil Maico da explizit drauf hingewiesen hatte per Mail.
Security technisch ist das wahrscheinlich eh eine ganze Katastrophe. Die reinen Lüftungsfunktionen sind aber halt klasse.

Noch eine Ergänzung. Beim Schreiben in die Maico setzte ich nach jedem RequestAction ein IPS_Sleep(15);
Das hat sich positiv auf die Stabilität der Maico Modbus Implementation ausgewirkt.

Schreib Maico mal auf die Whatsapp Support Nummer
+49 160 101 3605

Montag – Donnerstag: 07:30 – 16:30 Uhr
Freitag: 07:30 – 15:30 Uhr

Es gibt Gute Nachrichten: Zugriff über TCP klappt jetzt wieder. Und jetzt klappt auch die Abfrage über Modus dank Deiner vorgegebenen Datenblöcke. Vielen Dank! Vielen Dank! Vielen Dank! :slight_smile:

Was mich ehrlich gesagt noch etwas wundert ist, dass der Zugriff / Schreiben klappt, obwohl in der Definition 06-Write Single Register für ModBus RTU definiert ist, ich aber über ModBus TCP zugreife…

Das einzige, was aktuell immer noch nicht funktioniert, ist der Zugriff über USB mit der Windows SW (die hängt sich auf, sobald ich die Verbindung herstellen will) und ich kann die Betriebsrat über IPS nicht ändern… Die steht auf „Auto-Zeit“ und springt sofort nach einer Änderung auch wieder auf diesen Wert zurück… Ich muss also notgedrungen wohl den Support kontaktieren…

In diesem Zusammenhang noch eine MAICO-spezifische Frage: Was würde denn „Auto-Sensor“ als Betriebsart bedeuten? Welcher Sensor ist dann maßgeblich für die Entlüftung? Der Feuchte-Sensor?

Ansonsten ist das ein tolles Maschinen und macht richtig Spaß… Die Luft im Haus ist jetzt konstant viel besser… :slight_smile:

Im Betrieb genommen habe ich die „Kiste“ seit Freitag gegen Mittag…


Und die Installation ist so ein bißchen, wie LEGO für große Jungs… :wink:

Das freut mich.
Der Function Code 06 ist auch für Modbus TCP definiert. Wenn du meine Modbus Vorlage verwendet hast, kannst du den Modus über Grundeinstellung.RW.Betriebsart verstellen. Winter Sommer geht bei mir. einwandfrei. Gib mir etwas Zeit, evtl. ist da ja ein Fehler. Kann ich bei mir nachstellen. Das wird evtl. heute Abend.

PS: Zur Installation: Bei mir habe ich nachträglich mein zweites Haus mit angeschlossen. War vorher eine Proxon Anlage. Frag nicht mit historisch gewachsenen Sachen :slight_smile: Meine Leitungsführung zur KWL sieht an der Zuführung nicht gut aus. Sieht bei dir top aus. Im nächsten Leben…

Wir haben seit Einzug 2001 in Haus 1 eine KWL. Nie mehr möchte ich das missen. Gute Entscheidung

Gefunden, da sind Fehler bei den Adressen :scream: Ich korrigiere das gleich.
Betrifft die 550er. Lesen sind alle korrekt, Schreibadressen hab ich durch paste and copy versaubeutelt.

Hier das Update

Super! Vielleicht kannst Du mir konkret sagen, was Du geändert hast. Ich würde ungern die Objekte wieder neu vom WebFront und zur Mobile App verlinken… dann könnte ich das von Hand nachtragen… :slight_smile:

Gucke kurz in den Link. Es sind die Adressen 550 - 554 betroffen. Da ist als Schreibadresse fast überall als 552 gesetzt (paste and copy Fehler in Excel).

Ein Beispiel hier stand die 552 drin statt der 550.

Lange Rede kurzer Sinn, da wo eine Schreibadresse vergeben ist, muss die gleich der Leseadresse sein.

Bei mir ist nur der interne Feuchtesensor der Abluft aktiv. Regelung geht dann darüber. Habe ich aktiviert, funktioniert sehr sauber, ich kann auch das automatische Umschalten der Lüftungsstufen im Symcon Archiv sehen.
Wenn auch externe Sensoren vorhanden sind (z. B. VOC) werden diese mit herangezogen.

[• Betriebsart AutoSensor Seite 6 (https://www.maico-ventilatoren.com/cms-live/media/AnleitungenHTML5/WS%20320-Bedienung/Resources/pdf/259142667.pdf)

PS: ich glaube die Doku zu den Adressen 750 - 754 ist nicht korrekt. Ich glaube, dass dort kein Faktor drin ist. Das ändere ich noch einmal ab.

TRANSMIT | 03 02 EE 00 0D
TXT: 24.09.2024, 15:52:57 |              WAITING | <ETX><SOH>j<NUL><SOH>
HEX: 24.09.2024, 15:52:57 |              WAITING | 03 01 6A 00 01 
TXT: 24.09.2024, 15:52:57 |            BUFFER IN | <NUL><NAK><NUL><NUL><NUL><GS><GS><ETX><SUB><NUL>7<NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL>
HEX: 24.09.2024, 15:52:57 |            BUFFER IN | 00 15 00 00 00 1D 1D 03 1A 00 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

Durch den Blockread werden über Adresse 750 (hex 00 EE) 13 x UINT16 (0D) gelesen.
In der letzten Zeile kommt hinter dem Header 00 37. Bei mir habe ich gerade 55% → hex 37. Also ist da kein Faktor drin.
Ich gehe davon aus, dass dann alle Feuchtewerte nicht mal 10 sind und ich korrigiere das mal.

PS: ich habe gerade Antwort von MAICO wg. Webserver bekommen. Die Cloud Variante maico@home bekommt mehr Funktionen. Der Webserver war schon länger nicht mehr supportet. Mit v3.0 ist er ersatzlos gestrichen.
Was bin ich über Modbus und IPSymcon froh…

Und ich habe gerade folgende Rückmeldung von Meiko bekommen:

Bei der ModBus Adressierung haben Sie Recht, diese muss noch geändert werden. Mit freundlichen Grüßen, Vertrieb/ Kundendienst

1 „Gefällt mir“

Danke für die Info. Änderung hab ich schon übernommen in die Modbus Vorlage. Die könnten da echt mal ein kleines Changelog beipacken. Nicht das irgendwann mal der Modbus Server weg ist…

Ich will jetzt die Steuerung meiner Lüftungsanlage in Kombination mit dem AirQ Luftgütesensor noch etwas weiterentwickeln und habe dafür folgendes Script implementiert:

<?php

    // Variablen-IDs
    $ventilationLevelID = 45681; // Lüftungsstufe
    $healthIndexID = 24807; // Gesundheitsindex
    $performanceIndexID = 47683; // Leistungsindex
    $vacationModeID = 51698; // Urlaubsmodus
    $fireAlarmID = 23193; // Feueralarm
    $systemPowerID = 25256; // Systemstatus (0 = aus)

    // Werte der Eingangsvariablen auslesen
    $healthIndex = GetValueFloat($healthIndexID);
    $performanceIndex = GetValueFloat($performanceIndexID);
    $vacationMode = GetValueBoolean($vacationModeID);
    $fireAlarm = GetValueBoolean($fireAlarmID);

    // Uhrzeit prüfen: zwischen 21:00 und 8:00 Uhr
    $currentHour = (int)date("H");
    $isNightTime = $currentHour >= 21 || $currentHour < 8;

    // Prüfen auf Feueralarm
    if ($fireAlarm) {
        // Feueralarm hat Priorität: Lüftung ausschalten
        SetValue($systemPowerID, 0); // Anlage ausschalten
        SetValue($ventilationLevelID, 0); // Keine Lüftungsstufe aktiv
        return; // Skript beenden
    }

    // Berechnung der Lüftungsstufe
    if ($vacationMode) {
        $ventilationLevel = 1; // Feuchteschutz
    } else {
        if ($healthIndex < 850 || $performanceIndex < 750) {
            $ventilationLevel = 4; // Intensiv
        } elseif ($healthIndex < 900 || $performanceIndex < 800) {
            $ventilationLevel = 3; // Nenn
        } else {
            $ventilationLevel = 2; // Reduziert
        }

        // Nachtzeitregelung: Maximal Reduziert (2)
        if ($isNightTime && $ventilationLevel > 2) {
            $ventilationLevel = 2;
        }
    }

    // Lüftungsstufe setzen
    ModBus_WriteRegister($ventilationLevelID, $ventilationLevel);

    // Sicherstellen, dass die Anlage eingeschaltet ist
    ModBus_WriteRegister($systemPowerID, 1); // Anlage manuell steuern / einschalten

?>

Dabei stoße ich auf folgendes Problem: Mit „SetValueInteger“ kann ich logischerweise nicht auf das Modus-Register schreiben. Aber die Code-Zeile „ModBus_WriteRegister“ führt auch zu einem Fehler. Wie kann ich denn auf das Register 550 vom Modus Gerät schreiben?

1 „Gefällt mir“

Hat hier niemand einen Tip für mich, wie ich die Parameter von einem ModBus Device ändere? Über die Oberfläche / WebFront funktioniert das ja tadellos, aber wie geht das per Script? Die Doku https://www.symcon.de/en/service/documentation/module-reference/modbus-rtu-tcp/ ist da ja leider nicht sehr aussagekräftig…

Und sind jetzt eigentlich die ganzen ModBus_WriteRegisterXXX noch verwendbar, weil die in der Doku stehen oder sind die alle deferred?

Jetzt habe ich einen Weg gefunden. Scheint mir zwar irgendwie ein „Workaround“ zu sein, aber die letzte Code-Zeile tut es…

<?php

$result = SetValueInteger (25256, 3);
// ERGEBNIS Warning: Variable is marked as read-only and cannot be changed in C:\ProgramData\Symcon\scripts\18067.ips.php on line 3

$result = ModBus_WriteRegisterInteger (25256, 3);
// ERGEBNIS Notice: ModBus_WriteRegisterInteger is deprecated. Please use ModBus_WriteRegister or RequestAction in C:\Program Files\Symcon\scripts\__deprecated.inc.php on line 52
// Warning: Instanz #25256 existiert nicht in C:\Program Files\Symcon\scripts\__deprecated.inc.php on line 53

$result = ModBus_WriteRegister (25256, 3);
// ERGEBNIS Warning: Instanz #25256 existiert nicht in C:\ProgramData\Symcon\scripts\18067.ips.php on line 10

$result = RequestAction (25256, 3);

?>

Die letzte Zeile ist korrekt und gilt für alle Variablen welche bedienbar sind. Egal welches System.
Der Rest ist so oder so falsch, weil 1) SetValue hat noch nie eine Aktion Richtung Hardware ausgelöst und 2 und 3 funktioniert nicht mit Variablen, sondern nur mit Instanzen.
Michael

Was heißt denn das konkret für meinen Anwendungsfall? Ich kann immer nur alle Register eines Modusgerätes zusammen lesen und wieder schreiben? Irgendwie wäre mal ein entsprechendes Programmierbeispiel, gerne auch in der Dokumentation, hilfreich.

So wie du es in der letzten Zeile gemacht hast.
RequestAction nutzen und gut ist.