NEWS
gelöst: Modbus mit TA CMI und digital Input
-
Hallo zusammen
Ich habe seit längerem ein CMI von TA (ta.co.at) bei meiner Heizung im Einsatz. Dieses CMI schreibt mir seine Daten auch via Modbus-Adapter in die Datenpunkte rein, soweit alle gut. Da ich nun einen zusätzlichen Elektroheizstab in meine Wärmepufferspeicher verbaut habe, will ich der Heizkesselregelung die Brennerfreigabe und zusätzlich den Betrieb der Heizkreispumpe sperren.
Dafür sollte ich dem CMI via die digitalen Eingänge ein paar binäre Statusmeldungen mitteilen und genau da entsteht mein Problem. Ich habe in der Modbus-Instanz die Datenpunkte deklariert und im CMI ebenfalls die identischen Adressen und bezeichnungen auf den Modbus-digital-Eingängen angelegt. Es wird immer nur die Adresse "0" übertragen, alle anderen werden einfach ignoriert.
Die analogen Eingänge auf dem Modbus funktionieren einwandfrei, es ist mir schon klar ich könnte es auch damit machen und aus definierten Werten ein false/true generieren. Das würde ich auch machen, wenn ich kompletten Zugriff auf die Heizungssteuerungssoftware hätte, aber der Heizungsinstallateur will mir das nicht geben und will auf dem CAN-Ausgang vom CMI die Status als false/true haben.
Aus den diversen Einträgen hier weiss ich, dass es mit den digitalen Eingängen scheinbar schon mehrfach Probleme gab, aber irgendwie habe ich keine Lösungsansätze gefunden. Vieleicht ist hier jemand der das gleich Problem schon hatte und es gelöst bekommen hat?
Gruss Andi
-
Dieser Datepunkt kommt so im CMI korrekt an:
{ "_id": "modbus.1.discreteInputs.10016_sperrekessel", "type": "state", "common": { "name": "sperrekessel", "role": "state", "type": "boolean", "read": true, "write": true, "def": false }, "native": { "regType": "disInputs", "address": 0, "deviceId": 10 }, "from": "system.adapter.modbus.1", "user": "system.user.admin", "ts": 1766410173278, "acl": { "object": 1638, "state": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.user" } }Dieser Datenpunkt kommt nicht an:
{ "_id": "modbus.1.discreteInputs.10015_versuch", "type": "state", "common": { "name": "versuch", "role": "state", "type": "boolean", "read": true, "write": true, "def": false }, "native": { "regType": "disInputs", "address": 1, "deviceId": 10 }, "from": "system.adapter.modbus.1", "user": "system.user.admin", "ts": 1766410173279, "acl": { "object": 1638, "state": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.user" } }Wenn ich denn Datenpunkt "versuch" aber komplett entferne bekomme ich ein log-Eintrag:
FC2 request outside discrete inputs boundaries: from 0, len 1. Expected max address 0Für mich bedeutet das eigentlich, dass CMI versteht den Inhalt des Datenpunktes nicht, nur habe ich absolut keine Ahnung was ich mit dieser Erkenntnis machen kann?
-
Hallo zusammen
Ich habe seit längerem ein CMI von TA (ta.co.at) bei meiner Heizung im Einsatz. Dieses CMI schreibt mir seine Daten auch via Modbus-Adapter in die Datenpunkte rein, soweit alle gut. Da ich nun einen zusätzlichen Elektroheizstab in meine Wärmepufferspeicher verbaut habe, will ich der Heizkesselregelung die Brennerfreigabe und zusätzlich den Betrieb der Heizkreispumpe sperren.
Dafür sollte ich dem CMI via die digitalen Eingänge ein paar binäre Statusmeldungen mitteilen und genau da entsteht mein Problem. Ich habe in der Modbus-Instanz die Datenpunkte deklariert und im CMI ebenfalls die identischen Adressen und bezeichnungen auf den Modbus-digital-Eingängen angelegt. Es wird immer nur die Adresse "0" übertragen, alle anderen werden einfach ignoriert.
Die analogen Eingänge auf dem Modbus funktionieren einwandfrei, es ist mir schon klar ich könnte es auch damit machen und aus definierten Werten ein false/true generieren. Das würde ich auch machen, wenn ich kompletten Zugriff auf die Heizungssteuerungssoftware hätte, aber der Heizungsinstallateur will mir das nicht geben und will auf dem CAN-Ausgang vom CMI die Status als false/true haben.
Aus den diversen Einträgen hier weiss ich, dass es mit den digitalen Eingängen scheinbar schon mehrfach Probleme gab, aber irgendwie habe ich keine Lösungsansätze gefunden. Vieleicht ist hier jemand der das gleich Problem schon hatte und es gelöst bekommen hat?
Gruss Andi
@andibr sagte in Modbus mit TA CMI und digital Input:
Die analogen Eingänge auf dem Modbus funktionieren einwandfrei, es ist mir schon klar ich könnte es auch damit machen und aus definierten Werten ein false/true generieren. Das würde ich auch machen, wenn ich kompletten Zugriff auf die Heizungssteuerungssoftware hätte, aber der Heizungsinstallateur will mir das nicht geben und will auf dem CAN-Ausgang vom CMI die Status als false/true haben.
hatte da auch lange probiert und das nicht hinbekommen. Letztlich dann über einen analogen Wert (0/1) und eine zusätzliche Logikfunktion im Modus "oder" auf der UVR. Anwendung: die Zirkulationspumpe wahlweise zeitgesteuert oder manuell über die Vis einschalten.

... aber wenn die Macht das nicht zulässt
-
Danke, dann weiss ich jetzt mit grosser Sicherheit, dass es nicht an mir oder meinem Verständnis der ganze Schnittstelle liegt. Hier im Forum gibt es diverse ältere Beiträge die genau das gleiche Problem beschreiben. Was ich bei mir eben extrem merkwürdig finde, die Adresse "0" geht korrekt, braucht einfach teilweise sehr lange bis das false/true im CMI ankommt, aber es kommt durch. Aber leider ist mit einem Wert alleine noch keine Steuerung beeinflusst.
-
Gibt es irgend eine Möglichkeit im Iobroker einen Mitschnitt der Komunikation zwischen dem CMI und dem Adapter zu machen, denn im Loglevel wird auch bei "debug" wohl nicht wirklich alles angezeigt. Ich weiss es gibt da Tools (wireshark, tcpdup, etc.) aber da es sich ja um eine TCP Schnittstelle handelt wird das damit wohl eher sehr schwierig?
Es ist für mich schlicht nicht verständlich das er die Adresse findet (resp. keine Fehlermeldung erzeugt) aber den Inhalt "false/true" oder was auch immer es sein muss nicht lesen kann. Zumal er die Adresse "0" mit "bool" korrekt versteht.
-
Ich habe das Problem jetzt anderweitig gelöst: Ich habe an nicht verwendeten Universaleingängen an der UVR16x2 ein Shelly Pro 3 mit 3 potentialfreien Kontakten angeschlossen. Der Heizungsfachman hat diese Kontakte nun in seiner Konfiguration entsprechend eingebunden, so kann ich "Kesselsperre" auch aktivieren beim Einsatz der Elektroheizung um die produzierte Energie zu verbrauchen.