NEWS
Integrieren in javascript
-
Hallo,
ich hab folgendes Problem:
Ich habe einen Stromzähler den ich aus dem js Adapter aufrufe und daraus einen Leistungswert berechne.
Den Wert speichere ich dann wieder.
Für die history data verwende ich den SQL Adapter.Das funktioniert auch alles und ich kann mir den Verlauf in ECharts ansehen.
Jetzt möchte ich die Daten aber vor der Anzeige bearbeiten.
Also z.B. das Integral berechnen, um die kWh anzuzeigen.
D.h. ich möchte, dass ECharts nicht die Daten aus der Datenbank nimmt sondern die Daten von meinem JS Script.
Das Script soll sich die Daten aus dem SQL Adapter holen und dann bearbeitet an ECharts weitergeben.Ich habe zwar bisher erreicht, dass ich die Daten zur Laufzeit erfasse, umrechne und dann is SQL abspeichere. Das kann ich mir in E-Charts auch anzeigen lassen.
Das hat aber den Nachteil, wenn ich mir später überlege, ich müsste die Daten anders bearbeiten, dann geht das nicht mehr.
D.h. das ist keine Lösung für mich. -
@sgtpinback naja, man könnte nativ auf die SQL-Datenpunkt zugreifen und auch darin schreiben. Oder besser über den SQL-Adapter: https://forum.iobroker.net/topic/4014/zugriff-auf-eigene-mysql-datenbank/8?_=1641740276875
Du müsstest halt alle Datenpunkte einlesen und an anderer Stelle (Datenpunkt mit aktiviertem SQL) wieder neu schreiben (mit dem passenden Zeitstempeln)
Die Datenpunkte zur Laufzeit zu manipulieren wäre - wie ich meine - aus Performancegründen sehr schlecht. Könnten ja ein paar tausend Daten sein.
Ich habe gerade noch mal beim Adapter geschaut: https://github.com/ioBroker/ioBroker.sql
Unten in den Beispielen ist aufgeführt wie du per SendTo abfragst und auch Daten setzen kannst. -
@sgtpinback sagte: Ich habe einen Stromzähler ... einen Leistungswert berechne.
Welche Daten liefert der Zähler an ioBroker?
-
@sgtpinback
man kann in sql ebenfalls berechnen.
so könntest die Daten original abspeichern und bei der abfrage direkt durch die Datenbank berechnen lassen.Was für eine Datenbank ist es,
wie lautet die formel?hier beispielsweise die referenz zu mysql/heidi
https://dev.mysql.com/doc/refman/8.0/en/functions.html -
@oliverio said in Integrieren in javascript:
Selbst wenn das ginge. Wie krieg ich die Daten aus der Datenbank. Es ist doch eher so, dass ich einen Datenpunkt habe und dann in iobroker daran eine Datenbank ankopple, damit die Daten mit Zeitstempel in eine DB geschrieben werden. D.h. iobroker.sql muss die Daten ja irgendwie "advertisen" damit E-Charts die überhaupt akzeptiert.
-
@paul53 Ich ermittle einfach nur die Zeit zwischen 2 Impulsen. Die schreibe in einen Wert und der wird dann an die DB gekoppelt. Das ist aber nicht das Problem hier.
-
@bananajoe Das könnte ein Weg sein. Allerdings frage ich mich, wie E-charts dann darauf zugreifen kann. Bzw. wie kann ich die Daten in die sqlite DB so schreiben, dass iobroker.sql sie dann auch an E-Charts weitergeben kann.
-
@sgtpinback sagte: Ich ermittle einfach nur die Zeit zwischen 2 Impulsen.
Wenn die Impulse an ioBroker gesendet werden, kann man diese auch zählen und muss nicht den Umweg der Integration über die Leistungswerte gehen.
-
äh, ja, sorry denkfehler.
ich dachte man schiebt dem e-charts-adapter einfach nur ne andere abfrage unter.
das würde besipielsweise in der influx oberfläche gehen.alternativ würde ich dann für jeden datenpunkt einen weiteren datenpunkt einrichten. dann ein skript, welches jeden wert der geschrieben wird umrechnet und in den anderen datenpunkt schreibt.
so hast du alle originaldaten, sowie die umgerechneten werte.wenn du bereits in der DB befindlichen Daten umrechnen möchtest, dann die Werte per SQL umrechnen, das passiert ja nur einmal.
-
@oliverio OK, ich guck mir mal die influx Oberfläche an.
-
@paul53 Mein Problem ist, dass ich die Werte nicht zur Laufzeit berechnen will, sondern später. D.h. wenn ich nach einem Jahr feststelle, die Form der Anzeige gefällt mir nicht, dass ich dan einfach eine andere Formel angeben kann und alle alten Werte werden neu berechnet und angezeigt.
-
@sgtpinback sagte in Integrieren in javascript:
wenn ich nach einem Jahr feststelle, die Form der Anzeige gefällt mir nicht
Ich lese hier schon länger oberflächlich mit.
Einerseits glaube ich zu verstehen was du willst und kann auch den Wunsch nachvollziehen.
Andererseits habe ich mit dieser Idee so meine Probleme.Historisierte Daten sind für mich ein Audit-Trail, da kann ich nicht nach einem Jahr sagen: das gefällt mir aber nicht.
Zum Weiteren fällt mir auch gar nicht ein worum es da gehen sollte.
Die Temperatur von Heiligabend 2019 um 13:42 ist gegeben, was willst du da ändern?
Ebenso die Jahressumme der Regenmenge oder des Stromverbrauchs.