NEWS
[gelöst] Victron MP2 MQTT Anbindung
-
@ben1983 sagte in Victron MP2 MQTT Anbindung:
Ich habe gelesen, man soll auf diese Topic was schreiben:
„ R/<your VRM-Portal ID>/keepalive“Für das topic halt eine Folder R, darin Folder mit der Id und dann einen Datenpunkt keepalive, den Du beschreibst.
Victron subscribed automatisch vordefinierte Topics. Topics die Du publishen willst musst du immer selbst anlegen, das macht nie der subscriber, sonst gäbe es Endlosschleifen. ACK-Flags kenn MQTT nicht. -
@ben1983 sagte in Victron MP2 MQTT Anbindung:
einen Multiplus 2 GX
der sollte sich doch so verhalten wie gedes GX Gerät, also auch wie ein Cerbo.
Dort ist es IMHO ein Broker.Greifst du auf das GX oder auf die Cloud via VRM zu?
-
@homoran auf das GX Gerät…. Ist das jetzt ein Client oder Broker… müsste ja eigentlich ein Client sein… wenn bspw. 3 Stück im Netz sind.
Aber ich kann den Adapter immer als Client konfigurieren mit der ip des gewünschten Ziel Clients und brauche dazu keinen Broker, oder?
-
@ben1983 sagte in Victron MP2 MQTT Anbindung:
das GX Gerät…. Ist das jetzt ein Client oder Broker
@homoran sagte in Victron MP2 MQTT Anbindung:
ist es IMHO ein Broker.
-
@ben1983 Nein das hat doch mit der Anzahl nichts zu tun. Kann doch jeder Broker sein.
-
-
@ben1983 Du kannst doch mehrere Geräte im Netz haben, die auf den gleichen Port hören? Du kannst nur nicht auf EINEM Gerät mehrere Programme haben, die auf einen PORT hören. Du brauchst halt im Gegenteil für jede Maschine in Deinem iobroker eine eigene Client Instanz. Jeder Client verbindet sich dann ja über verschiedene IPs mit einem anderen Broker. Es gibt die Möglichkeit, wenn DU mosquitto verwendest - einen Broker zu definieren, der als Brücke dienen kann, aber das ist dann komplexer aufzubauen.
-
@mickym ja, ich dachte ich richte einfach den Adapter als Broker ein und bekomme von allen die Daten… wenn ich den Shelly Adapter deaktiviere und den Adapter Port auf 1882 stelle bekomme ich die ja auch alle.
Naja so ganz habe ich es noch nicht geschnallt warum das bei dem victron nur als Client geht.Egal.
Was mir aber aufgefallen ist:
Auf L3 werden nicht die Werte von L3 ausgegeben, sondern von der Gesamtleistung. -
@ben1983 sagte in Victron MP2 MQTT Anbindung:
also dürfte im Netz mit dem gleichen Port nicht mehr Geräte sein, weil die dann alle auf dem Broker vom gx gerät gehen?
warum??
wenn du verschiedene MQTT Geräte hast, weist du denen einen Broker zu.
Und alle Geräte nutzen denselben Port.nur auf einem Gerät darf derselbe Port nicht für verschiedene Aufgaben genutzt werden.
edit: hat @mickym ja wchon geschrieben.
-
@ben1983 sagte in Victron MP2 MQTT Anbindung:
ich dachte ich richte einfach den Adapter als Broker ein und bekomme von allen die Daten…
ist ja auch so, wenn alle anderen Clients sind und den ioBroker Server als Broker-Adresse nutzen.
Aber der GX ist ein Broker
-
@ben1983 sagte in Victron MP2 MQTT Anbindung:
ja, ich dachte ich richte einfach den Adapter als Broker ein und bekomme von allen die Daten
Na ja dann hast Du noch nicht richtig verstanden wie MQTT funktioniert. Ich hab da aber auch schon so oft was zu geschrieben, dass ich es inzwischen echt müde bin.
Hier mal ein paar Grundlagen; https://forum.iobroker.net/post/701654
Auch dass das Venus OS mit dem Victron (ich selbst hab keins) als Broker fungiert, wurde hier: https://forum.iobroker.net/post/803603
auch bis zum Excess durchgekaut.Vielleicht nimmst Dir einfach mal bissi Zeit und liest um zu verstehen, wie mqtt funktioniert.
-
-
@ben1983 NEIN - Es können beliebig viele Broker im Netz sein, aber nicht auf EINER Maschine. Ich dachte das hätte ich so gesagt. Wenn die, was auch immer GX Geräte sind, eigene IP Adressen haben, können diese auch alle MQTT- Broker sein.
Ich dachte das hätte ich so geschrieben: https://forum.iobroker.net/post/968502
Falls es nur ein GX Gerät (was auch immer das ist) im Netz geben sollte ??? , dann hängt das nicht an MQTT - sondern an anderen Dingen. Jedes Gerät mit einer eigenen IP-Adresse kann ein MQTT-Broker sein!!!
Was einem nur klar sein muss. MQTT-Broker senden nicht von sich aus, sondern nur wenn topics von MQTT-Clients subscribed werden (also abonniert werden). Du kannst Dich halt mit einem MQTT-Client nur mit EINEM Mqtt-Broker verbinden. Deswegen brauchst Du mehrere Instanzen des MQTT-Clients in deinem iobroker, wenn Du verschiedene MQTT-Broker erreichen willst.
-
@mickym ok verstanden…. Allerdings sendet das GX gerät ja Daten…. Liegt es daran, das ich „#“ subscibt habe?
Wenn das so ist, dass er nichts sendet, es sei denn es wäre subscribt, warum dann ein keepalive? -
@mickym ich habe eben gedacht nur ein Broker ist möglich, da er den Port belegt. Deswegen ist der Shelly standardmäßig auf 1882
-
@ben1983 sagte in Victron MP2 MQTT Anbindung:
Liegt es daran, das ich „#“ subscibt habe?
Ja - jeder Broker sendet an alle Clients die ein topic oder mehrere subscribed haben, die Daten die es interessiert. Und wenn Du an allem interessiert bist machst Du ein #.
Ein Broker verwaltet also nur die Kommunikation an die Clients und an diese sendet er auch aktiv.
-
@ben1983 sagte in Victron MP2 MQTT Anbindung:
@mickym ich habe eben gedacht nur ein Broker ist möglich, da er den Port belegt. Deswegen ist der Shelly standardmäßig auf 1882
Das hat der Entwickler einfach mal gemacht, da leider !!! viele Adapter keinen externen Broker erlauben (zigbee2mqtt ist da die erste löbliche Ausnahme) und selbst einen Broker simulieren (shelly, sonoff, mqtt, owntracks). In diesem Fall kommt es aber zu einem Port Konflikt, da alle Adapter ja auf der gleichen Maschine laufen. Wenn also ein Gerät einem Broker auf der IP-Adresse x unter dem Port 1883 sendet, wer soll denn bitte darauf antworten? Sonoff, shelly oder wen hätten sie denn gerne?
Also JA - auf EINEM Gerät mit EINER IP-Adresse kann es nur EINEN Broker geben. In einem NETZ kann es aber beliebig VIELE Broker mit jeweils EIGENER IP-Adresse geben. Es ist also ganz generell in einem TCP/IP Netz so, dass auf der Empfängerseite die Eindeutigkeit durch IP-Adresse und Port durch ein bestimmtes Programm oder Prozess gegeben sein muss!
-
@mickym ah ok. Top erklärt. Danke
-
@mickym eine Frage noch.. es braucht immer einen Broker… Client <=> Client geht nicht, oder?
-
@ben1983 sagte in Victron MP2 MQTT Anbindung:
@mickym eine Frage noch.. es braucht immer einen Broker… Client <=> Client geht nicht, oder?
Richtig. Der Broker koordiniert immer die Kommunikation. Ohne den gehts nicht.
Die Kommunikation eines MQTT-Clients ist immer 1:1 zu einem Broker, der Broker hingegen baut eine 1:n Kommunikation zu allen Clients auf, die sich verbunden haben und topics abonniert haben.
Im Prinzip braucht es immer ein Broker als Koordinator, der sich merkt woher eine Information kommt und wer daran interessiert ist und an wen er die noch schicken muss und gerade auch wenn ein MQTT-Client offline ist. Das ist ja der Vorteil gegenüber einer normalen HTTP oder TCP Kommunikation. Der Client muss sich nicht darum kümmern, wann und wie seine Info beim Empfänger ankommt. Sobald ein Client wieder online ist, sendet der MQTT-Broker die aktuellste Information zu einem topic, so dass dieser wieder auf neuestem Stand ist.
Das ist eben der Riesenvorteil gegenüber einer normalen HTTP oder sonstigen Kommunikation. Wenn da der Empfänger offline ist, dann hat er halt Pech gehabt.
Andererseits gibt so ein MQTT-Adapter im iobroker nie den tatsächlichen Status wieder. Das muss man immer im Hinterkopf haben. Wenn Dein mqtt-Adapter (Retain nachrichten ausgeschlossen, die verarbeitet der MQTT Adapter nach meiner Erfahrung aber eh nicht richtig) eine Nachricht empfangen hat, dann ist diese bei ihm gelöscht. Wenn alle Clients die Nachricht empfangen haben, wird sie komplett gelöscht, im Adapter sind sie aber noch vorhanden.