NEWS
Auf Daten des ioBrokers von "Außen" zugreifen.
-
@homoran sagte in Auf Daten des ioBrokers von "Außen" zugreifen.:
Also ganz hab ich dein "Problem" nicht verstanden
Die Frage war wie ich an die Daten komme die im ioBroker gesammelt werden. Es hilft ja nichts wenn ich mir alles in der Weboberfläche vom ioBroker ansehen kann. Diese Frage ist ja nun beantwortet, Rest-Api und Mqtt-Client.
-
@oliverio sagte in Auf Daten des ioBrokers von "Außen" zugreifen.:
ich habe es auch noch nicht so genau verstanden was du mit "draussen" meinst.
Außerhalb des ioBrokers. So wie man von einem Javascript mit getState auf einen Datenpunkt zugreift möchte ich von einem anderem Programm aus auf den Datenpunkt lesend und eventuell auch schreibend zugreifen.
-
@mcm1957
Du hast es auf den Punkt gebracht.Skriptsprachen haben ihre Berechtigung für kleinere Projekte, schnell zu ändern aber langsamer da bei jedem Durchlauf interpretiert wird. C++ Programme werden compiliert und laufen schneller, sind aber schlechter wenn es um schnelle Anpassungen geht.
Java liegt irgendwo dazwischen, ist dafür plattformunabhängig.Hier mal ein Link zu meinem miniEm: (https://github.com/MartinDienert/miniEm_) (kleiner Energiemanager
) Projekt. Es ist keine große Logik dahinter aber besonders das Wallbox-Objekt ist schon etwas größer.
Es finde es komisch im Browserfenster zu programmieren, nach einem Plugin für vsCode suche ich mal.
Ich könnte natürlich einfach in Java weiter machen aber je mehr verschiedene Schnittstellen dazu kommen desto aufwendiger wird es, und hier soll der ioBroker ins Spiel kommen.Wenn ich Fragen habe melde ich mich.
Danke für eure Hilfe.
Grüße Martin
-
@martin-5 said in Auf Daten des ioBrokers von "Außen" zugreifen.:
Skriptsprachen haben ihre Berechtigung für kleinere Projekte, schnell zu ändern aber langsamer da bei jedem Durchlauf interpretiert wird.
Da hast du im Prinzip recht. Nur ist node.js/javascript (an das du hier wahrscheinlich denkst) keine interpretierte Sprache sondern wird mittels JIT Kompilation sehr wohl in Maschinencode übersetzt. node.js / javascript sollte nicht mit javascript für den Browser aus den 80er Jahren in einen Topf geworfen werden. Und platformunabhängig ist node.js allemal
- hier aber zumindest bsiher kein relevantes Thema.
Siehe z.B. https://www.geeksforgeeks.org/javascript/is-javascript-interpreted-or-compiled/
-
dann könntest du dir das noch anschauen.
damit kannst du dann mit dem iobroker direkt kommunizieren und wirst aktiv benachrichtigt wenn sich ein datenpunkt ändert.
https://github.com/socketio/socket.io-client-java -
Aha, danke.
-
@Martin-5
Deinen Ansatz in Java (die dunkle Seite der Macht) in allen Ehren, aber warum das Rad nochmal neu erfinden?
Wenn Du schon mit ioBroker arbeitest (und die Daten dort zur Verfügung hast), hast Du doch schon das komplette Rüstzeug.Es gibt vermutlich die passenden Adapter für Deine Hardware. Sonst hättest Du die Daten ja nicht im ioBroker.
Auch sämtliche benötigten Schnittstellen/Protokolle stehen zur Verfügung. MQTT, Modbus, REST, HTTP GET/POST usw.Zur Visualisierung stehen gleich mehrere Möglichkeiten bereit: Vis/Vis2, Jarvis, iQontrol, Lovelace, WebUI und nicht zu vergessen der Energiefluss-Adapter.
Für meine Begriffe wäre also lediglich die "Logik" übrig. Also sowas wie: "Wenn Auto voll geladen und PV-Überschuss, dann schalte den Heizstab der WP an" oder Dinge in der Art. Und sowas lässt sich mit den angesprochenen Logikmaschinen (JS, TS, NodeRed usw.) eigentlich ziemlich einfach implementieren.
Ich gebe zu, dass der Umstieg von anderen Sprachen zu JS/TS etwas holprig sein kann. Aber das ist keine Hexenwerk ... insbesondere von Java sollte das keine unüberwindliche Hürde sein.
Und wie bereits erwähnt darf man NodeJS nicht mit JS im Browser in einen Topf werden. Das sind zwei ziemlich unterschiedliche paar Schuhe. -
@codierknecht
Ich werde mal versuchen das miniEm-Projekt (Java) im ioBroker schrittweise umzusetzen.
Wie würdet ihr das machen? Für jedes Gerät ein extra Script und dann ein Script für den Ablauf oder alles in einem großen Script? -
@martin-5
Da IMHO die Gefahr besteht, dass bei einem Script je Gerät ein Script Werte aus einem anderen Script benötigt, würde ich das in ein einziges Script packen.Auch immer dran denken: ioBroker läuft an der Ecke Ereignisgesteuert.
Wenn also z.B. anhand der aktuellen PV-Leistung etwas zu entscheiden und zu steuern ist, legt man einen Trigger auf den DP "PV-Leistung" und entscheidet dort, was jetzt passieren soll und reagiert entsprechend.
Also in etwa nach einem solchen Muster:
Edit - etwas OT:
Auch ich bin es mit Delphi eigentlich gewohnt, in Klassen zu denken.
Mit Vererbung, überladenen Methoden, Eventhandlern und dem ganzen Zipp und Zapp.Muss ich aber in ioBroker nicht. Das haben andere schon längst gemacht und (als Adapter) bereitgestellt.
Ich muss also lediglich auf die Änderungen von Werten "horchen" und darauf mit ein paar Zeilen Code reagieren.
Da wären jetzt komplexe Klassen wie mit Kanonen auf Spatzen schießen.Bei der Adapterentwicklung sieht das schon wieder anders aus. Aber soweit sind wir ja hier noch nicht
-
@codierknecht
Dank für die weitere Erläuterung.
Wie gehe ich mit Funktionen um die ich in mehreren Scripten verwenden möchte? Kann ich Funktionen aus einem anderem Script verwenden oder muss ich die immer in das entsprechende Script kopieren?