NEWS
Weitergabe von bestimmten Daten an zweiten separaten ioBroker möglich?
-
@thewhobox Danke. Das werde ich mal ausprobieren und mich bei Bedarf melden.
-
Ich stehe auf dem Schlauch. Wie bekomme ich die angezeigten Werte in ein neues Objekt (siehe unten), welches ich später freigeben kann.
Ich möchte diese Werte freigeben und an einen separaten ioBroker weitergeben, ohne Zugriff auf mein System zu erlauben. -
@MrThomas Mit aktivierter Simple-Api im Adapter ioBroker.web des Schwiegervaters muss nichts freigegeben werden, sondern die Daten werden an einen dafür erstellten Datenpunkt (z.B. javascript.0.Wind) per request gesendet. Dazu kann man die Daten in einem Objekt zusammenfassen und als JSON-String senden, der beim Empfänger per Skript wieder in einzelne Datenpunkte aufgeteilt werden kann.
-
@paul53 Hallo paul53, ich bin scheinbar ein totaler Anfänger, denn ich verstehe zwar, was Du schreibst, schaffe es aber nicht umzusetzen. Muss ich das alles in einen Script programmieren oder kann ich das im iobroker über die Web-Oberfläche? Einen Datenpunkt bekomme ich erstellt, aber wie kommen die Werte dortrein? Bzw. wie fasse ich Dateien in ein Objekt zusammen?
Ich habe so langsam das Gefühl das ich mir da zu viel vorgenommen habe. Bin total frustriert, weil nicht mal so etwas Einfaches klappt. -
@MrThomas
Vorausgesetzt, der Datenpunkt "javascript.0.Wind" wurde mit dem Typ "Zeichenkette" (string) auf dem Empfänger-ioBroker erstellt, könnte das Sende-Skript etwa so aussehenconst idWind = 'netatmo.0.Müschede.Windmesser.'; // Quelle const urlDst = 'http://192.168.xxx.yyy:8082/set/javascript.0.Wind?value='; // IP-Adresse des Empfängers eintragen ! on(idWind + 'LastUpdate', function(dp) { var wind = {}; wind.LastUpdate = dp.state.val; setTimeOut(function() { wind.GustAngle = getState(idWind + 'Wind.GustAngle').val; wind.GustStrength = getState(idWind + 'Wind.GustStrength').val; wind.WindAngle = getState(idWind + 'Wind.WindAngle').val; wind.WindStrength = getState(idWind + 'Wind.WindStrength').val; wind.BatteryStatus = = getState(idWind + 'BatteryStatus').val; request(urlDst + JSON.stringify(wind)); }, 100); // Verzögerung, falls LastUpdate nicht der letzte Wert eines Telegramms ist });
Auf der Empfängerseite muss der JSON-Datenpunkt dann in mehrere Datenpunkte gewandelt werden.
const idWind = 'javascript.0.Wind'; // DP enthält JSON-String vom Sender on(idWind, function(dp) { var wind = JSON.parse(dp.state.val); setState(idWind + '.Windgeschwindigkeit', wind.WindStrength, true); ...usw. für die anderen Werte });
-
Ich kann selbiges ebenfalls sehr gut gebrauchen.
Da ich alles mit Blockly mache, wäre die Frage: Lässt sich das ganze auch in Blockly darstellen?Und darüber hinaus, gibt es eine Möglichkeit wenn sich die Iobrokers zwar im selben Gebäude mit demselben Netzwerk befinden, aber in unterschiedlichen VLANs? Letztendlich müsste wohl eine Übertragung über die Cloud erfolgen? iobroker.pro ist bei beiden lizensiert. Geht das?
-
@paul53 Hallo Paul53, vielen Dank für Deine Hilfe. Ich werde es am Wochenende gleich ausprobieren.
Ich dachte bei dem Projekt ioBroker zuerst das man alles mit Blockly lösen kann. Dem scheint nicht so zu sein und in Java bin ich absoluter Anfänger. Da reichen meine BASIC und Pascal-Kenntnisse einfach nicht aus. -
Hast du hier schon eine Lösung bezüglich der Cloud Verbindung zwischen zwei iobrokern?
-
@MrThomas Alternative: Daten des Gerätes "Windmesser" einzeln übertragen. Werden die Werte gleichzeitig aktualisiert, entsteht dann allerdings kurzzeitg starker Netzwerkverkehr. Um unnötiges Senden von Daten zu vermeiden, sollte auf Wertänderung getriggert werden.
on(trigger, function(dp) { // triggert auf Wertänderung der Datenpunkte
-
@MrThomas
Hi,
Wie tauscht ihr denn normal Daten aus?
Gemeinsames Netz habe ich gelesen, aber sobald du das per API machst ist einer von beiden „offen“.Entweder machst du etwas über ein Share, oder ein Skript auf dem Webserver.
Oder hast du schonmal an MQTT gedacht?
Oder per ssh?
Bei all den Möglichkeiten kannst du den Zugriff entsprechend einschränken.Kann man bei deiner Wetterstation nicht auch andere User einladen? Dann geht es Vlt. Sogar darüber?
Dann kannst du da die Werte abfragen. -
Hier passt es gut. Kann mir hier jemand dabei helfen?
@dan11hh said in Mit zwei ioBroker Installationen auf ein Geräte zugreifen:Also es geht darum, dass mein Bruder und ich beide gerne unsere Poolsteuerung die per MQTT ansteuerbar ist, in unsere jeweiligen ioBroker Installationen einbauen wollen. Unsere Häuser sind per Kabel mit unterschiedlichen Subnetzen verbunden. Die Steuerung hängt in meinem WLAN per ESP8266. Wir fummeln schon gerade rum, aber bekommen es nicht hin, dass per MQTT an beiden ioBroker Installationen gemeldet wird. Genau genommen, taucht die Steuerung in keiner der beiden Installlationen auf. Ping auf die Steuerung geht aber aus beiden Netzen. Das ist seltsam. Hab ihr noch andere Ideen, wie wir beide die Steuerung in unsere Installation einbinden können? Kann ich die Werte vielleicht auch weiterreichen?
-
@MrThomas Mit dem MQTT Adapter verbinden? Dort kannst du genau einstellen, welche Topics freigegeben werden sollen, dort gibst du dann nur die Sensoren im Außenbereich frei.
-
@hallo-amt DANK! Ich mach mal hier weiter:
@hallo-amt said in Mit zwei ioBroker Installationen auf ein Geräte zugreifen:MQTT klingt schon sinnvoll für so einen Anwendungsfall. Die Frage ist, ob der ESP ein MQTT Broker oder Client ist? Als Client wird er sich mit ziemlicher Sicherheit nur zu einem Broker verbinden. Wenn er ein Broker ist, könnte es gehen, daß sich beide ioBroker zum ESP verbinden können.
@dan11hh Mit dem anderen Thread warst du auf der richtigen Spur. Gibt es für den ESP einen MQTT Broker? Wenn nicht, können die beiden ioBroker sich im Netz sehen? Dann kann sich einer per MQTT zum anderen verbinden und so den Pool steuern. Du brauchst dann auch nicht alle Funktionen freigeben, sondern nur die, die gemeinsam genutzt werden. Das können dann auch mehr sein, wie die Beleuchtung für eine gemeinsam genutzte Grillgelegenheit oder so.
Kurze Nachfrage, ob ich auf der richtigen Spur bin:
Die Idee die Poolsteuerung an zwei ioBroker weiterzugeben, würde ich jetzt wie folgt lösen wollen. Die Poolsteuerung sendet an den mqqt-Adapter (broker), gleichzeitig läuft eine zweite mqqt Instanz als Client, der die Daten der Poolsteuerung an eine zweite ioBroker Installation mit mqqt Adapter im Broker Modus weiterreicht. Passt das soweit? Wie kann ich denn einstellen, welche Werte der Poolsteuererung weitergegeben werden sollen. Ich hatte irgendwo gelesen, dass unter Objekte und dann der Schraubenschlüssel am Datenpunkt die entsprechenden Einstellungen ermöglicht (so wie bei history), aber irgendwie ist da kein Reiter für mqqt?1000 DANK!!!!
-
@dan11hh said in Weitergabe von bestimmten Daten an zweiten separaten ioBroker möglich?:
Die Poolsteuerung sendet an den mqqt-Adapter (broker)
Ja
gleichzeitig läuft eine zweite mqqt Instanz als Client, der die Daten der Poolsteuerung an eine zweite ioBroker Installation mit mqqt Adapter im Broker Modus weiterreicht. Passt das soweit?
Fast, einfacher ist es, auf dem zweiten ioBroker auch einen MQTT Adapter laufen zu lassen, der sich dann als Client zum ersten ioBroker mit MQTT Broker verbindet.
Also so
Pool -----> MQTT-Broker auf ioBroker1 <---- MQTT-client auf ioBroker2
dann der Schraubenschlüssel am Datenpunkt die entsprechenden Einstellungen ermöglicht (so wie bei history), aber irgendwie ist da kein Reiter für mqqt?
Beim MQTT Boker geht das in den Adaptereinstellungen. Dort gibst du die Adresse des Ordners oder Objekts an, das freigegeben werden soll. im Schreenshot oben sind das alle Objekte under
deconz.0
undnode-red.0
. -
@hallo-amt said in Weitergabe von bestimmten Daten an zweiten separaten ioBroker möglich?:
Fast, einfacher ist es, auf dem zweiten ioBroker auch einen MQTT Adapter laufen zu lassen, der sich dann als Client zum ersten ioBroker mit MQTT Broker verbindet.
Super. Danke Dir. Das ist wirklich einfacher. Nachdem wir uns dann noch etwas mit unserer Netzwerktopologie und der NAT/Firewall in der zweiten Fritzbox beschäftigt haben, hat das super funktioniert. Danke!!!