Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MQTT: Publizierung von Geräte-/Kanal-/Parametereigenschaften #90

Open
mdzio opened this issue Apr 25, 2022 · 9 comments
Open

MQTT: Publizierung von Geräte-/Kanal-/Parametereigenschaften #90

mdzio opened this issue Apr 25, 2022 · 9 comments
Labels
enhancement New feature or request

Comments

@mdzio
Copy link
Owner

mdzio commented Apr 25, 2022

Bisher werden nur Wertaktualisierungen von Datenpunkten über MQTT publiziert. Geräte-/Kanal-/Parametereigenschaften sollten zusätzlich über separate Topics publiziert werden.

Erste Überlegungen dazu sind in #73 zu finden.

@mdzio mdzio added the enhancement New feature or request label Apr 25, 2022
@Elix-g
Copy link

Elix-g commented Jul 28, 2023

Sehr sexy fände ich das Publizieren von Topics, worüber Homeassistant die Geräte der Zentrale erkennen und einbinden kann. Die Homematic-Integration in HA ist nicht sonderlich gut und funktioniert z.B. nicht wenn SSL auf der Zentrale aktiviert ist.

HA MQTT Discovery

@mdzio
Copy link
Owner Author

mdzio commented Jul 29, 2023

Sehr sexy fände ich das Publizieren von Topics, worüber Homeassistant die Geräte der Zentrale erkennen und einbinden kann. Die Homematic-Integration in HA ist nicht sonderlich gut und funktioniert z.B. nicht wenn SSL auf der Zentrale aktiviert ist.

HA MQTT Discovery

Da gab es bisher auch schon Anfragen (siehe auch Eintrag #7) . Leider ist dies sehr aufwändig und ist daher nicht in Planung.

@kaistraube
Copy link

kaistraube commented Jul 30, 2023

Servus, ich bin nun nach zig Jahren von ioBroker auf HomeAssistant umgestiegen. Ich denke das Projekt erfreut sich deutlich größerer Beliebtheit und Aktivität. In diesem Sinne wäre nun die HASS Discovery tatsächlich eine richtig gute Sache, um CCU (bei mir Docker Raspberrymatic) anzubinden. Per Bridge die CCU Daten ein meinem EMQX senden wäre easy (die dann von HASS aufgrund der Discovery Daten so abgeholt werden können), fehlen nun tatsächlich aber die Metadaten. Erstens überlege ich einen Python Translater zu bauen, oder zweitens ein XMLAPI query, die dann das HASS Discovery per MQTT bereitstellt. Ich wüsste eben nicht wie ich anders leicht an die Daten der CCU käme.
Also: CCU-Jack mit HASS Discovery wäre schon geil und ein richtiger Mehrwert, weshalb ich denke, dass das rauf-priorisiert anstatt herabgesetzt werden sollte. :-) Der Vorteil wäre auch, dass man sich eben für die in der Überschrift genannten Dinge keine Gedanken machen muss, weil eben die Spezifizierung durch HASS Discovery bereits existiert.

@kaistraube
Copy link

Gesagt, getan, ich habe einen ersten Wurf hochgeladen: https://github.com/kaistraube/ccujack_homeassistant
Mit dem Script "hass_discovery_ccu.py" werden per CCU-Jack Rest API alle benötigten Daten ermittelt und an den MQTT Broker gesendet. Ich kann nun HomeMatic per MQTT verwenden. :-)

  • Es werden die HomeAssistant MQTT auto-discovery topics erstellt.
  • Es können alle Daten (Channels/States) zum MQTT Broker gesendet werden (sonst nur bei state Aktualisierung)
  • Es werden zusätzlich "metadata" (Name, Firmware) zum CCU device parallel zum Channel an den MQTT Broker gesendet.

@mdzio
Copy link
Owner Author

mdzio commented Aug 13, 2023

Schönes Projekt. Ich nehme an, dass Du nichts dagegen hast, wenn ich von der CCU-Jack-Dokumentation auf dieses Projekt verweise. Um noch mehr Anwender zu erreichen und Rückmeldungen zu erhalten, kannst Du Dein Projekt auch im CCU-Jack Forum bekannt machen.

@kaistraube
Copy link

Ja, sehr gern. Ich schau mal ins Forum...

@mpietruschka
Copy link

mpietruschka commented Dec 4, 2023

Was ist denn aus der Idee geworden das in CCU-Jack zu implementieren? in #73 (comment)

@mpietruschka
Copy link

Als Lösungsidee...

Wenn ich das richtig sehe, werden mehrere CCU-Interfaces abgefragt:

  "BidCosRF",
  "HmIPRF",
  "VirtualDevices",
  "BidCosWired",
  "CUxD"

Dabei kann jeder Dienst nicht bzw. noch nicht verfügbar sein.

Würde man nun RegHass als Interface aufnehmen, dann könnte der seine Topics ab seiner Verfügbarkeit ebenfalls im MQTT publizieren. Beispielsweise in den vorhandenen Channel-Topics. #73 (comment)

Mit Veap müsste das auch nicht im Wiedersprich stehen. Dort könnten die Informationen aus RegHass auch erst nach Aktivierung des Interfaces verfügbar werden.

(Edit)
Wenn es im CCU-Jack auch noch eine vom Interface abhängige Konfiguration (ähnlich der VirtualDevices) geben würde, dann wäre sogar das veröffentlichen als HA Discovery möglich. Prinzipiell, steht das HA Discovery zu den restlichen Topics auch nicht in Konkurrenz.


  "RegHass": {
     "EnableHAMQTTDiscovery": true
  }

  "VirtualDevices": {
    "Enable": false,
    "NextSerialNo": 0,
    "Devices": {}
  }

Mir persönlich würden Read-Only Werte ausreichen.

Für mich kann NodeRed mehrere Topics zu einem JSON-Objekte zusammenfassen:
image

image

[
    {
        "id": "52d3c6d54b39ee66",
        "type": "mqtt in",
        "z": "a079c2c6d85e8f14",
        "name": "raspberrymatic/device/status/OEQ1234567/1/TEMPERATURE",
        "topic": "raspberrymatic/device/status/OEQ1234567/1/TEMPERATURE",
        "qos": "2",
        "datatype": "json",
        "broker": "80511ebb.0e3c18",
        "nl": false,
        "rap": false,
        "rh": "0",
        "inputs": 0,
        "x": 340,
        "y": 160,
        "wires": [
            [
                "91cf7844d9e92f21"
            ]
        ]
    },
    {
        "id": "838a824d56ffd735",
        "type": "mqtt in",
        "z": "a079c2c6d85e8f14",
        "name": "raspberrymatic/device/status/OEQ1234567/1/HUMIDITY",
        "topic": "raspberrymatic/device/status/OEQ1234567/1/HUMIDITY",
        "qos": "2",
        "datatype": "json",
        "broker": "80511ebb.0e3c18",
        "nl": false,
        "rap": false,
        "rh": "0",
        "inputs": 0,
        "x": 350,
        "y": 240,
        "wires": [
            [
                "91cf7844d9e92f21"
            ]
        ]
    },
    {
        "id": "91cf7844d9e92f21",
        "type": "change",
        "z": "a079c2c6d85e8f14",
        "name": "Entfernen Topic Prefix & verschieben \"v\" nach Payload",
        "rules": [
            {
                "t": "change",
                "p": "topic",
                "pt": "msg",
                "from": ".*/",
                "fromt": "re",
                "to": "",
                "tot": "str"
            },
            {
                "t": "move",
                "p": "payload.v",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 800,
        "y": 200,
        "wires": [
            [
                "3627f9e774896fb9"
            ]
        ]
    },
    {
        "id": "3627f9e774896fb9",
        "type": "join",
        "z": "a079c2c6d85e8f14",
        "name": "",
        "mode": "custom",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": false,
        "timeout": "",
        "count": "2",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 1070,
        "y": 200,
        "wires": [
            [
                "de861f737a331563"
            ]
        ]
    },
    {
        "id": "de861f737a331563",
        "type": "debug",
        "z": "a079c2c6d85e8f14",
        "name": "debug 3",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1200,
        "y": 200,
        "wires": []
    },
    {
        "id": "80511ebb.0e3c18",
        "type": "mqtt-broker",
        "name": "mqtt",
        "broker": "mqtt",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "compatmode": false,
        "protocolVersion": "5",
        "keepalive": "60",
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthRetain": "false",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closeRetain": "false",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willRetain": "false",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

@Elix-g
Copy link

Elix-g commented Dec 15, 2023

Ich bin auch endlich mal aktiv geworden und dabei heraus gekommen ist ein kleines Python-Tool, welches für die vorhandenen Homematic-Geräte, Systemvariablen und Programme MQTT Auto Discovery Einträge für Home Assistant erstellt und veröffentlicht. Alternativ die Ausgabe als HA yaml-Konfiguration.

Jacking2HA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants