Seite 1 von 1

Experimentelles importieren einer Timeseries über den WG-Importüber

Verfasst: Di Mär 02, 2021 7:47 am
von Robosoc
Folgende Anleitung dient dem Import und Anlegen von neuen, einheitslosen Zeitreihen (es werden Zahlen-Werte in Verbdinung mit Zeitstemplen angelegt).

ACHTUNG
Ich beschreibe hier, was bei mir in einem TWS950 V1.6 funktioniert hat. Beim Austesten des korrekten XML-Codes ist es mir 2x passiert, dass ich meinen TWS mit einer neu anglegten Timeseries lamgelegt habe und ich musste den vorherigen Zustand mit einer Sicherungsdatei wiederherstellen. Deshalb : Unmittelbar vor dem Ausprobieren unbedingt eine Sicherung des TWS durchführen, auch wenn die hier gezeigte Lösung bei mir am Ende mehrfach funktioniert hat und seit 2-3 Wochen keine Probleme erzeugt hat.

Hier wird eine vorhandene Funktion des Wiregate-Importer für einen Zweck "missbraucht", für den diese nicht geschaffen wurde. Insofern gibt es dazu auch keine Unterstützung seites ElabNet und die Durchführung geschieht vollständig auf eigenes Risiko. Kern des Ganzen ist der PLUGIN-RRD-Import des Wiregate Abschnittes im TWS, bei dem ein User RRD-Dateien, die im Wiregate erzeugt wurden, übernehmen kann.

Man legt sich eine XML-Datei mit folgendem Text an (in einem Texteditor wie Note oder Note++.
Mir ist dabei völlig klar, dass einige der Zeilen vermutlich nicht nur überflüssig und inhaltlich eigentlich falsch sind, aber so hat es bei mir geklappt und ich habe nicht weiter versucht den Code zu kürzen, nachdem es geklappt hat. Denn als ich einige der hier unnötig erscheinenden Zeilen mal weggelassen hatte, wurden fehlerhafte Timeseries erzeugt, die in der TWS GUE mit einem roten Ausrufezeichen versehen waren und und die den TWS vollständig lahmgelegt haben. Vielleicht ergänzt später ja Jemand noch eine kürzere Vorlage.

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
<!-- Round Robin Database Dump -->
<rrd>	
	<version> 0003 </version>
	<step> 60 </step> <!-- Seconds -->
	<ds>
		<name> value </name>
		<type> GAUGE </type>
		<minimal_heartbeat> 1 </minimal_heartbeat>
		<min> 2.3400000000e+04 </min>
		<max> 2.3400000000e+04 </max>
	</ds>
<!-- Round Robin Archives -->	
<rra>
		<cf> AVERAGE </cf>
		<pdp_per_row> 1 </pdp_per_row> <!-- 60 seconds -->
		<params>
		<xff> 2.0000000000e+04 </xff>
		</params>
		<database>
			<!--  / 1427846400 --> <row><v> 9.0000000000e-01 </v></row>
		</database>
	</rra>
</rrd>
Inhaltlich beim Importieren kommt es meines Erachtens nur auf den Abschnitt "database" an (vielleicht bewirken die anderen auch irgendetwas beim Import, aber zumindest nichts, was mir später bei dr Nutzung meiner Timeseries Probleme gemacht hat).

Nun erzeugt man sich z.B. mit Excel für jeden Eintrag den man in seiner neuen Timeseries haben möchte eine Zeile

Code: Alles auswählen

			<!--  / 1427846400 --> <row><v> 9.0000000000e-01 </v></row>
wobei die vordere 10 stellige Zahl ein Unix-Zeitode ist und die hintere Zahl der Wert in Exponential-Schreibweise.
Ich habe hier penibel genau darauf geachtet, dass alle meine Zahlen exakt die gleiche Anzahl von Stellen hatte!!!
10 stelliger Unix-Zeitcode und die e Zahl mit 10 Stellen zwischen dem Punkt und dem e.
Ob das für den Import wichtig ist, weiß ich nicht, aber so hat es funktioniert.

Diese Zeilen kopiert man sich nun in die XML Datei in den Bereich "database" und ersetzt damit auch den einen oben bereits einthaltenen Eintrag.
Achtung, beim herauskopieren aus Excel entstehen je nach Excelformatierung eventuell Anführungszeichen...diese sollte man im Editor in der XML Datei dann löschen, zum Beispiel durch markieren des Bereiches "database" und dann Suchen-Ersetzen-Funktion - aber Achtung...Die Anführungszeichen in den anderen Abschnitten (siehe erste Zwei Zeilen) müssen erhalten bleiben.

Nachträglicher Edit aufgrund des Hinweises von Ives in Post #2:
Nun braucht man ein Programm, dass .gz Dateien erzeugen kann, ich nutze z.B. 7-Zip.

Bei 7-Zip: In Windows 10 Explorer kann man jetzt mit der rechten Maustaste eine gz-Datei erzeugen:
Screenshot 2021-03-02 073501.jpg
Screenshot 2021-03-02 073720.jpg
Standardmässig wird der Name oben mit einem .xml vor dem Ende .gz vorgeschlagen. Das .xml habe ich stets gelöscht, weil ich befürchtet habe, dass zwei Punkte im Dateinamen ein Problem beim Import sein könnten.

Die erzeugten .gz Dateien habe ich auf einen ansonsten leeren USB-Stick in ein leeres Verzeichnis
WireGateExport/RRD/

Diesen USB Stick in den TWS stecken und dann 1-wire -> Import WG Server -> Haken bei Importieren "Plugin" RRD's in Zeitreihen -> START
Warten :confusion-waiting:
Erledigt :handgestures-thumbupright:

Wichtig, die Dateinamen müssen eindeutig sein, die Zeitreihen nehmen den Namen mit! Verwendet Ihr einen Dateinamen, der schon einmal verwendet wurde, werden die Daten meines Erachtens in die bestehende Zeitreihe integriert. Ob das eine nutzbare Funktion ist und was z.B. bei Daten mit gleichen Zeitstempeln passiert, habe ich nicht getestet. Wenn ich Daten noch einmal neu eingespielt habe, habe ich die vorher erzeugen Zeitreihen immer gelöscht.

Bei Bedarf kann abschliessend noch im Objekt Manager eine Wert (z.B. eine KNX-Wert) mit der Zeitreihe verknüpfen.

Viel Spaß.

Re: Experimentelles importieren einer Timeseries über den WG-Importüber

Verfasst: Di Mär 02, 2021 8:24 am
von starwarsfan
Hi
Robosoc hat geschrieben: Di Mär 02, 2021 7:47 am Folge Anleitung dient dem Import und Anlegen von neuen Zeitreihen
Interessant...
Robosoc hat geschrieben: Di Mär 02, 2021 7:47 am In Windows 10 Explorer kann man jetzt mit der rechten Maustaste eine gz-Datei erzeugen:
Das geht aber nur, wenn man ein Tool wie 7zip installiert hat. ;)

Re: Experimentelles importieren einer Timeseries über den WG-Importüber

Verfasst: Di Mär 02, 2021 9:27 am
von Robosoc
starwarsfan hat geschrieben: Di Mär 02, 2021 8:24 am Das geht aber nur, wenn man ein Tool wie 7zip installiert hat. ;)
Danke für den Hinweis, arbeite ich oben ein...ich habe mich garnicht mehr daran erinnert, dass ich das je installiert habe.

Re: Experimentelles importieren einer Timeseries über den WG-Importüber

Verfasst: Di Mär 02, 2021 9:32 am
von Robosoc
Ergänzend hier noch eine hilfreiche Formel für Excel, die einem das Anlegen der Datenzeilen erleichtert. Man sich in Zelle C2 kopiert, wenn in A1 ein Unixzeitstempel und in B2 ein Wert in irgendeinem Zahlenformat liegt:

Code: Alles auswählen

=VERKETTEN("			<!--  / ";LINKS(A2;10);" --> <row><v> ";LINKS(LINKS(TEXT(B2;"0,0000000000E+00");1)&"."&RECHTS(TEXT(B2;"0,0000000000E+00");14);12);"e";RECHTS(LINKS(TEXT(B2;"0,0000000000E+00");1)&"."&RECHTS(TEXT(B2;"0,0000000000E+00");14);3);" </v></row>")

Re: Experimentelles importieren einer Timeseries über den WG-Importüber

Verfasst: Di Mär 02, 2021 9:43 am
von StefanW
Danke Sven für Deine Mühe,

ich fürchte, ich muss dazu noch eine Anmerkung machen:

Offizielle Anmerkung von ElabNET

Dies ist keine offizielle Anleitung und auch kein von uns geprüftes oder damit auch kein empfohlenes Verfahren für einen Datenimport.

Es ist nicht ausgeschlossen, dass diese Vorgehensweise mit späteren Updates oder Upgrades zu Problemen führen kann.


Stefan