Maico WS 320 - Home Assistant Implementierung - Seite 9
23.10.2022
-6.7.2026
177 Antworten
23 Autoren
9 Empfehlungen
|
|
||
|
Ja, würde mich freuen wenn du mir da was zur Verfügung stellen könntest. Die Entitäten anpassen kriege ich dann schon noch hin :) |
||
|
||
|
Ah wusste nicht, dass das geht, dann semper ich schon nicht mehr. |
||
|
||
|
Im ipsymcom-forum hat jemand folgendes herrausgefunden: https://community.symcon.de/t/modbus-vorlage-maico-kwl-320-470-und-andere/138436/2 Sollte sich also mit den Fehler- und Hinweiscodes vom KNX Dokument decken: https://www.maico-ventilatoren.com/fileadmin/media/service/Downloads/Software/18-12-03-Dokumentation_KNX_Interface_KWL-Steuerung__ab_FW-Version_V1.2.0.pdf Man muss halt nur Bitweise abfragen. |
||
|
||
|
Also ich habe meine Anlage per Modbus TCP in HA eingebunden und der Hinweis-Code für den "Bypass offen" ist dort 16 und im verlinkten KNX Dokument ist er 5. Passt also nicht ganz zusammen. |
||
|
||
|
Nun das passt sehr gut zusammen. In den beiden Halb-Worten des Modbus Registers, sind die Fehler und Hinweise bitcodiert. Bit5 = Dezimal 16 |
||
|
||
|
Guten Morgen, ich hab meine Variante mal hochgeladen https://github.com/markusrektor-hub/MaicoWS300_HomeAssistant_Steuerung Bitte gerne Kommentieren und auf Fehler hinweisen. |
||
|
||
|
Again what learned. 😄 |
||
|
||
|
Vielen Dank, ich werde es probieren. |
||
|
||
|
Hallo @mampfgnom Danke für die Bereitstellung deines Codes. Ich hätte aber noch einige Anmerkrungen: 1. Die Stelle ist etwas unsauber, da 707 kein Read Register ist und nur beschrieben werden kann. Liefert die Maico denn einen sauberen Wert zurück oder steht da auch mal nach einem Neustart "unknown" o.ä. drauf? Du nimmst diesen Wert ja und schreibst ihn zyklisch zurück. Ich würde den gewünschten T-Raum-Bus-Wert in HA selbst speichern und einen input_number-Helper verwenden. --------------------------- 2. Ist nicht sauber, da ungünstig geklammert. Richtig wäre: {{ ((states('sensor.kwl_t_raumbus') | float(21.0)) * 10) | int }}Der relevante Fallback ist ja schon float(21.0) und nicht int(210) --------------------------- 3. Der Öffner läuft jede Stunde. Schließen hast du aber alle 5 Minuten. Das ist asymetrisch, wenn die Innenfeuchte steigt und außen gerade trocken ist, kann es bis zu einer Stunde dauern, bis der Bypass öffnet. Oder ist das eine gezielte Zeithysterese? --------------------------- 4. In deiner Erklärung sagst du: und weiter auch: Im Code hast du das aber Oder verknüpft: D.h. sobald die Temperaturen passen, wird die relative Feuchtigkeit nicht berücksichtigt. Weiterhin noch eine Frage. Du beschreibst ja 707. Wird da kwl_t_ab auf diesen Wert gesetzt? Dann verstehe ich die condition von oben nicht, denn diese besagt ja: kwl_t_ab > kwl_t_raum_max Das ist nur erfüllbar, wenn kwl_t_raum_max kleiner ist als kwl_t_raum_soll --------------------------- 5. Bei der relativen Feuchte hast du eine Hysterese von 5%. Bei den absoluten Feuchtewerten jedoch nicht. |
||
|
||
|
Wie bekommst du denn die Rest API zum Laufen? Ich habe in dem node "Konfiguration speichern" den Long-living Access Token" hinterlegt und die haURL auf dem "Standard Wert" http://homeassistant.local:8123" belassen, weil bei mir NodeRed als Add-on auf dem HA läuft. Muss ich sonst noch was tun? Ich kriege leider keine Antwort von dem Server / Port |
||
|
||
|
Der NodeRed Container kann .local /mDNS nicht auflösen. Probier mal die direkte IP Adresse oder besser auf ://supervisor/core setzten. |
||
|
||
|
Hi Valen, bin noch nicht ganz durch und glaube auch, dass es noch nicht 100 % bei mir funktioniert aber 2 Dinge sind mir bisher aufgefallen: 1. In der "maico.yaml" (in der du den Modbus initialisierst) hast du in der Variable "Maico T-Raum max." einen "min. value" und einen max value" definiert. min_value: 180 max_value: 300 Das ist grundsätzlich kein Problem ABER wenn du mit scale= 0.1 dann versuchst die Werte in Celsius umzurechnen (aus 180 wird dann z. B. 18 Grad Celsius) dann bist du AUSSERHALB des min_value und max_value. Somit akzeptiert das Home Assistant nicht und es führt dazu, dass der sensor.maico_t_raum_max immer mindestens 180 anzeigt - das natürlich ein völlig falsche Wert ist. D. h. du musst das min_value und max_value heraus nehmen. Darüber hinaus empfehle ich dir noch das Statement precision: 1 zu setzen, ansonsten kriegst du halt nur ganzzahlige Temperaturwert (24 statt 24.2 Grad bei einem Wert von 242 z. B.) was ja auch falsch ist. 2. In deinem Node-Red Flow ist der "STEP 1c: Register 707 — Raumtemperatur" mit keinem Ausgang verbunden. Der sensor.maico_t_raum_bus wird also nie geschrieben. Ich habe dahinter jetzt eine eigene Strecke mit HA RestAPI und REst API Status gehängt. Ich denke so hast du es auch ursprünglich mal geplant (wie man deinem Kommentar entnehmen kann: // Verkabelung: Step 1 (Sensordaten) → Step 1c → eigener HTTP Request Node 3. Wie hast du die "Forecasts" in Home Assistant implementiert? Bei mir kommen da aktuell logischerweise keine Daten an. Du liest in deinem Flow ja nur folgendes aus: var shadingStatus = global.get('shading_status') || {}; var dwdForecast = shadingStatus.forecastTemp || null; var forecastDetails = flow.get('dwd_forecast_details') || {}; data.forecast = { maxTemp: dwdForecast, condition: forecastDetails.condition || null, precipitation: forecastDetails.precipitation || 0, cloudCover: shadingStatus.cloudCover || null, source: dwdForecast ? 'shading_global' : 'none' }; Ich habe da bei mir jetzt einen Subflow die KI schreiben lassen, die es sich aus der DWD Wetterenität aus /api/services/weather/get_forecasts holt. Unter anderem habe ich den Flow bei mir auch so umgeschrieben, dass er alle Räume einbezieht und für die Berechnung der absolute Feuchte und des Taupunkts immer den "schlechtesten" Raum als Referenz nimmt und nicht das Kinderzimmer. Wenn du möchtest, kann ich dir die flows.json auch mal hochladen. |
||
|
||
|
Hi Torsten2k6, zu1.) ja danke für den Hinweis die Datei hatte ich so übernomme, ich meine die wäre glaub auch hier mal verlinkt worden. Aber deine Anmerkungen nehme ich gerne auf und passe das auch bei mir an. zu2.) ja das hatte aus NodeRed bei mir nicht so gut funktioniert daher läuft das aktuell über eine HA-Automation. Damit ich mir das nochmal ansehe hatte ich das als Merker drin gelassen. zu3.) ich hab einen weiteren Flow für ein Rolladen Verschattungssystem, dort werden die Variablen schon gebildet und hier einfach mitbenutzt. Letztendlich liest er den DWD Forecast aus HA ein zieht aus dem String die Werte rein.
// DWD Daily Forecast (WICHTIG für Tagesprognose!) let forecastSource = 'Fallback (aktuelle Temp)'; if (msg.dailyForecast && msg.dailyForecast['weather.viersen']) { const dailyForecasts = msg.dailyForecast['weather.viersen'].forecast; const today = new Date().toISOString().split('T')[0]; const todayForecast = dailyForecasts.find(f => f.datetime && f.datetime.startsWith(today)); if (todayForecast && todayForecast.temperature) { forecastMaxTemp = parseFloat(todayForecast.temperature); forecastSource = 'DWD Daily Forecast'; node.log(`📈 ✅ DWD Tagesprognose: Max ${forecastMaxTemp}°C`); const forecastMinTemp = parseFloat(todayForecast.templow) || 0; const forecastCondition = todayForecast.condition || 'unknown'; const forecastPrecipitation = parseFloat(todayForecast.precipitation) || 0; node.log(`📈 Weitere Prognose: Min ${forecastMinTemp}°C, ${forecastCondition}, Regen ${forecastPrecipitation}mm`); flow.set('dwd_forecast_details', { maxTemp: forecastMaxTemp, minTemp: forecastMinTemp, condition: forecastCondition, precipitation: forecastPrecipitation, timestamp: new Date().toISOString() }); } else { node.warn('❌ Keine heutige DWD Daily Forecast gefunden'); } } else { node.warn('❌ Keine DWD Daily Forecast Daten vom Service erhalten'); } |
||
|
||
|
Hallo zusammen, nur falls es jemand braucht oder interessiert. ich habe das ganze mal in ein Modul gepackt. Primär für mich, gebt mir aber sehr gerne Feedback. 😉 https://github.com/theoldphilip/homeassistant-maico-kwl Gruss Philip |
||
|
||
Ein paar Fragen:
Edit, ein paar Sachen dürfte ich jetzt gesehen haben:
|
||
|
||
|
Die Sachen beantworte ich jetzt selbst. Zum persistenten Speichern: 1. die Einstellung (web-UI) bleiben erhalten (logisch) 2. die Lüftungsstufe bleibt erhalten, auch der eingestellte Volumenstrom (r155) Der Volumenstrom wird angepasst, wenn man r155 schreibt (war zu erwarten) Die Bypassklappe ist kein Wunderwerk der Technik, sie schließt zwar den Überstromkanal von Ab- auf Fortluft vernünftig (bypass zu), aber schließt den Kanal über den WT nicht vollständig. Da dieser Pfad aber deutlich mehr Widerstand aufweist wird das nur einen geringen Effekt haben. Die Klappenkonstruktion ist halt dämlich, eine rotierende Klappe bei der die Auflage nicht radial angeordnet ist, ist halt Krampf. Eventuell klebe ich noch eine (schräge) Gegendichtung ein. Der Endpunkt wird ja beim Starten ermittelt (Klappe auf und zu). Die Temperaturfühler in den 4 ports sind ziemlich ungenau, bei externer Regelung könnte man im uneingebauten Zustand (offene Leitungen) eine 'Kalibrierung' durchführen, also entweder zumindest alle auf gleiche Temperatur setzen oder wirklich mit einem eigenen Messgerät zusätzlich messen. Bei mir gegenüber einer Referenz (ca. +/-0.1K), Taußen +0.1K, Tzuluft -0.7K, Tabluft +0.6K, Tfortluft +0.3K. Aus meiner Sicht ist daher nicht ganz klar ob man über r155 fein regeln sollte, das Register wird persistent gehalten, es heißt noch nicht, dass das wirklich ein Problem ist, aber es gibt solche Fälle. Das Umstellen der Lüfterstufe wird zwar auch gesichert, aber dort ändern sich die Werte seltener. Antwortet Maico auf Fragen? Oder braucht man da einen Spezialdraht (@leitwolf)? |
||
|
||
|
Lieber Philip, vielen Dank für deine großartige Pioniersarbeit hier! Ich habe mich erstmal durch Docker Updates, HomeAssistant Updates, HACS usw. gequält aber jetzt scheint es installiert. Ich werden mich bei Rückfragen, Feedback oder issues über github melden. Vielen Dank erneut, Martin |
Beitrag schreiben / Werbung ausblenden?
Einloggen
Kostenlos registrieren [Mehr Infos]

