wie im Teaser zum NRG-Stack (Vorankündigung) angekündigt, stelle ich die Module einzeln vor - hier SamsungEhs, die lokale Anbindung für Samsung-EHS-Wärmepumpen.
Worum geht es?
SamsungEhs liest eine Samsung-EHS-Wärmepumpe direkt über den internen NASA-Bus (RS485, F1/F2-Anschluss) aus - ohne Internet, ohne Herstellerkonto und ohne Samsungs offizielles Modbus-Zubehörmodul MIM-B19N. Ein einfacher RS485-zu-Ethernet-Adapter genügt.
Modul
Weg
Hersteller
WPHub
Cloud
Panasonic, Vaillant
HeishaMon
lokal, MQTT
nur Panasonic (HeishaMon-Platine)
WPModbusHub
lokal, Modbus TCP
NIBE, Stiebel Eltron, LG, Samsung (nur mit MIM-B19N)
SamsungEhs
lokal, NASA-Protokoll (RS485)
Samsung EHS, ohne MIM-B19N
Bewusst ein eigenständiges Modul statt eines Zusatzes in WPModbusHub: NASA ist kein Modbus, nur dieselbe RS485-Verkabelung. Genau wie HeishaMon (ein Hersteller, ein Protokoll) trägt dieses Modul deshalb bewusst kein „Hub“ im Namen.
Funktionsumfang
Anders als Modbus fragt SamsungEhs nichts aktiv ab, sondern hört je Aktualisierungszyklus ein konfigurierbares Zeitfenster (1-10s) lang auf den ohnehin laufenden Bus-Verkehr mit und übernimmt, was in dieser Zeit vorbeikommt.
Ausgelesen werden Außentemperatur, Vorlauf-/Rücklauftemperatur sowie Warmwasser Ist/Soll und Vorlauf-Soll. Vertrag SAMEHS_GetFunctions() kompatibel zu WPHub/WPModbusHub/HeishaMon.
Paketformat und Prüfsumme (CRC-16/XMODEM) sind gegen eine unabhängige, aktiv gepflegte Referenz-Implementierung verifiziert.Die Zuordnung der sechs ausgelesenen Werte stammt aus derselben Quelle, ist aber an keiner echten Anlage nachgemessen. Bewusst nur lesend.
Voraussetzungen
IP-Symcon 9.0 oder neuer
Ein generischer RS485-zu-Ethernet-Adapter am F1/F2-Anschluss - kein Samsung-Originalzubehör nötig
Einrichtung in Kürze
Modulverwaltung → Modul-Store → ggf. erst „Beta-Module anzeigen“ aktivieren → nach „NRG-Stack SamsungEhs“ suchen → hinzufügen.
Instanz „SamsungEhs“ anlegen, IP-Adresse und Port des RS485-Adapters eintragen, übernehmen.
„SamsungEhs aktiv“ einschalten und erneut übernehmen.
Das Modul ist neu und an keiner echten Anlage live getestet. Besonders gesucht: jemand mit einer Samsung-EHS-Anlage und einem RS485-Adapter (ohne MIM-B19N).
die NASA-Funktion wird ja auch bei den moderneren Samsung-Klimaanlagen verwendet - eventuell kannst du das Modul dahingehend noch erweitern
Diskussion dazu findest du hier:
Ich installiere das Modul mal und schau, wie die Wärmepumpe reagiert
aktuell kommen nur diese Werte an:
danke fürs Testen - das ist der erste echte Hardware-Test von SamsungEhs überhaupt, und die Ergebnisse sehen richtig gut aus: Außentemperatur, Vorlauf, Rücklauf und Warmwasser kommen mit plausiblen Werten an. Damit sind Adresse und Skalierung für diese vier Felder bestätigt, nicht mehr nur aus der Community-Quelle übernommen.
Zu den zwei offenen Punkten:
Warmwasser Soll und Vorlauf-Soll bleiben leer
Meine Vermutung: Diese beiden Nachrichten werden auf dem Bus vermutlich seltener gesendet als die ständig aktualisierten Messwerte und fallen ins 3-Sekunden-Hörfenster einfach nicht rein. Ich hab in 0.1.3 eine Diagnose ergänzt: Update() schreibt jetzt über die normale IPS-Debugausgabe (Instanz → Debug anzeigen) alle im Hörfenster tatsächlich gesehenen Nachrichtennummern samt Rohwert - auch die, die das Modul noch nicht auswertet. Magst du das Modul updaten, das Hörfenster testweise mal auf 10s hochsetzen und schauen, ob 0x4235 bzw. 0x4247 überhaupt auftauchen? Wenn ja, weiß ich, dass nur das Zeitfenster zu knapp war. Wenn nie, schau ich mir die beiden Nachrichtennummern nochmal an.
Die Fehlermeldung, die kurz aufblitzt
Das könnte an eurem Waveshare-Adapter liegen: In deinem Screenshot läuft der im Modus „TCP Client“ fest auf euer Home-Assistant-Ziel verdrahtet, Multi-Host ist deaktiviert. Viele dieser RS485-zu-Ethernet-Adapter erlauben nur eine aktive TCP-Verbindung gleichzeitig - SamsungEhs und eure bestehende HA-Anbindung würden sich dann um denselben Socket streiten, was genau so ein Flackern zwischen „OK“ und „nicht erreichbar“ erklären würde. Kein SamsungEhs-Bug, sondern eine Frage der Adapter-Konfiguration. Zwei Ideen, falls das zutrifft:
Falls der Adapter einen Modus mit mehreren gleichzeitigen Verbindungen unterstützt (z. B. TCP Server mit mehreren Clients statt TCP Client) - das würde beiden Anwendungen eine eigene Verbindung erlauben.
Sonst auf der Home-Assistant-Seite ein einfaches TCP-Fan-out vor den Adapter setzen (z. B. mit socat), das den eingehenden Adapter-Stream an mehrere Ports spiegelt - SamsungEhs würde dann gegen den Spiegel-Port statt direkt gegen den Adapter verbinden.
Falls du magst, würde mich interessieren, was da rauskommt - hilft nicht nur dir, sondern auch allen anderen mit einer parallelen NASA-Anbindung neben SamsungEhs.
das geht leider nicht.
Das Problem dabei: Wenn du das umstellst, fängt der Adapter an, die rohen Bytes auf der RS485-Leitung als Modbus-RTU-Rahmen zu interpretieren und umzuwandeln. Das Samsung-NASA-Protokoll (auf dem sowohl EHS Sentinel/HA als auch dein Symcon-Modul basieren) ist aber kein Modbus – es ist ein proprietäres Polling-Protokoll mit eigenem Framing. Würdest du „Modbus TCP to RTU“ aktivieren, würde der Adapter die NASA-Bus-Pakete falsch parsen bzw. verwerfen, und sowohl HA als auch Symcon würden die Verbindung verlieren.
Ich versuche mal, ob ich die zweite Lösung über Home-Assistant hinbekomme
das Modul an sich würde ich gerne dahingehend angepasst wissen:
danke fürs Durchtesten - schade, dass der Multi-Host-Weg nicht klappt, aber gut zu wissen: Macht Sinn, dass der Adapter bei einem anderen Protokoll-Modus die rohen NASA-Bytes als Modbus-RTU-Rahmen interpretiert und falsch parst bzw. verwirft - NASA ist eben kein Modbus, nur dieselbe Leitung. Kein SamsungEhs-Problem, sondern eine Grenze deines Adapters. Drück dir die Daumen für die Fan-out-Route über Home Assistant, bin gespannt, ob das klappt.
Dein Wunsch nach einem längeren Hörfenster ist drin: 0.1.4 ist raus, ListenSeconds geht jetzt bis 60s statt bisher 10s (Formular + Verarbeitung). Zwei Dinge dazu, damit es keine Überraschung gibt:
Ab ca. 30s kann es bei manchen IP-Symcon-Installationen an der eigenen Skript-Ausführungszeit scheitern (Kernel-Einstellungen, je nach Konfiguration). Betrifft dann nur den einzelnen Zyklus, nicht die Instanz insgesamt - einfach den nächsten Durchlauf abwarten.
Ein Hörfenster nahe am Aktualisierungsintervall verlängert den tatsächlichen Zyklus entsprechend - das Modul wartet die Aufnahme immer zu Ende ab, auch wenn der Timer eigentlich schon wieder fällig wäre.
Als kleinen Bonus hab ich in 0.1.3 schon die Debugausgabe ergänzt (Instanz → Debug anzeigen zeigt jetzt alle im Hörfenster gesehenen NASA-Nachrichtennummern samt Rohwert, auch die noch nicht ausgewerteten) - könnte parallel hilfreich sein, um zu sehen, ob 0x4235/0x4247 (Warmwasser-Soll/Vorlauf-Soll) bei 30-60s überhaupt auftauchen.
Meld dich, wie es mit der Fan-out-Lösung und dem längeren Fenster läuft!
alle sechs Werte, sehr schön! Damit ist die komplette Registerkarte an deiner echten Anlage bestätigt - Adresse und Faktor 10 stimmen für alle sechs Felder. Die beiden vorher fehlenden (Warmwasser Soll, Vorlauf-Soll) waren also wirklich nur ein zu kurzes Hörfenster, keine falschen Nachrichtennummern. Danke, dass du das mit 60s nochmal durchgetestet hast.
Den Dump hab ich mir angeschaut - richtig ergiebig. Ein Fund, der dich vielleicht interessiert: Ich hatte parallel für ein anderes Projekt recherchiert, ob und wie Samsung-EHS-Anlagen eine Heizkurve (Wasserkurve) übers NASA-Protokoll hergeben. In deinem Dump tauchen tatsächlich die dafür vermuteten Nachrichtennummern live auf (0x4277/0x4278 fürs Kühlen, 0x4279/0x427A fürs Heizen, je zwei Stützpunkte). Ist noch keine echte Bestätigung - ich weiß weder sicher, ob die Bedeutung stimmt, noch ob sie sich schreiben lassen -, aber ein guter Hinweis, dass da mehr geht als die sechs bisherigen Werte. Falls du magst: Weißt du zufällig, was in deiner Samsung-App/am Regler als „Wasserkurve“ oder „Water Law“ eingestellt ist? Wenn du da mal bewusst einen Wert änderst und schaust, ob sich 0x4277-0x427A im Debuglog mitändern, wäre das die erste echte Verifikation.
Kein Zeitdruck damit - falls es dich interessiert, super, falls nicht, ist die Modul-Basis mit den sechs Werten jetzt erstmal rund.
echt cool was du da geschaffen hast, hat auf anhieb funktioniert. Hatte bereits bei der Installation der WP einen Waveshare Adapter an F1/F2 gehängt und brauchte nur noch Software zur Auswertung. Bin leider selber nicht dazu gekommen, daher umso schöner das du eine solche Lösung implementiert hast.
Würdest du ggf. noch einen weiteren Wert herausfiltern können? Ich habe zwei Heizkreise und der zweite fehlt halt.
schön, dass es auf Anhieb lief, und danke für den Hinweis samt Dump - genau die richtige Unterlage.
0x42D4/0x42D6 waren tatsächlich die richtige Spur: In deinem Dump steht 0x42D4 (Heizzone 2 Ist) in jedem der drei Zyklen mit einem plausiblen Wert (~22,8 °C), 0x42D6 (Heizzone 2 Soll) nur in zwei von dreien (~21,0 °C) - genau das Muster, das ein Sollwert zeigt, der seltener über den Bus geht als der laufend aktualisierte Istwert. Beide sind jetzt drin (Version 0.3.0), als „Heizzone 2 Isttemperatur“ und „Heizzone 2 Solltemperatur“.
Magst du updaten und kurz gegenprüfen, ob die beiden Werte bei dir mit der Anzeige an der Anlage übereinstimmen? Dann ist das bestätigt.
ja die Werte sehen sehr gut aus, bis auf die Werte
Heizzone 1 Solltemperatur (Vorlauf-Soll) und
Heizzone 2 Solltemperatur (Vorlauf-Soll)
Ich vermute das sind intern errechnete Werte, weil ich die Anlage im Automatik Heizkurven Modus laufen lasse. Die sehe ich nämlich so nicht auf meinen Bedienteilen. Aber umso interessanter sind sie!
Die würde ich dann noch mal im Betrieb (Die Heizfunktion ist derzeit noch aus) vergleichen.
Daher erstmal vielen Dank Dietmar! Und vielleicht darf ich ja später nochmal darauf zurückkommen!?
danke für die genaue Rückmeldung, freut mich, dass der Großteil passt! Deine Vermutung zu Zone1/Zone2 Soll finde ich plausibel: Die beiden NASA-Nachrichten sind laut meiner Quelle der jeweils aktuell wirksame Vorlauf-Sollwert des Systems - im Automatik-Heizkurven-Betrieb rechnet die Anlage den ja laufend selbst aus der Außentemperatur, statt ihn fest vom Bedienteil zu übernehmen. Würde also erklären, warum du am Bedienteil etwas anderes siehst.
Sehr gerne, komm gerne zurück, sobald du im echten Heizbetrieb vergleichen konntest - das wäre die eigentliche Bestätigung.