NEWS
Einlesen einiger singulärer Werte
-
Hallo
ich möchte in meine vis ein paar Werte aus einer externen Quelle einlesen.
Die Quelle kann eine Excel oder sonstiges sein. Es sind auch nur paar Messwerte, die ich alle 8-10 Tage manuell ablese und abspeichere.Wie mache ich das denn am geschicktesten in ioBroker.
Ich bin blutiger Anfänger mit einem Erfahrungskorizont von 1 Tag
Danke euch
Heinrich -
@HeinrichB sagte in Einlesen einiger singulärer Werte:
Die Quelle kann eine Excel oder sonstiges sein
Je nachdem was es ist, ist der Ansatz evtl. ein anderer.
Dazu gab es im Forum schon Lösungen.
Müsstest du (oder ich) suchen. -
@Homoran Es sind so um die 5-10 Messwerte mit einem Zeitstempel. Sehr einfach also und die Datenquelle (welche auch immer sie sein wird) update ich manuell:)
-
@HeinrichB
Da gibt es noch viele Optionen
- Welches Format?
- wo liegen die Daten?
- ist das jeweils eine Datei pro Daten(satz)
...
...
-
Hallo,
bei dem Format bin ich offen. Das kann ein flat file sein, eine XLS , XML etc. Was am einfachsten ist.
Ich stelle mir von der Struktur folgendes vor:
#Sensor1
Start;13.11.2019;127881
Ende;12.12.109;129892
#Sensor2
Start;13.11.2019;1234
Ende;12.12.109;2312
...
#SensorN
Start;13.11.2019;xxx
Ende;12.12.109;yyyDie Datei liegt lokal auf dem Rechner
Die obige Struktur ist nur ein Beispiel, um den Datenumfang dazustellen
Danke
-
@HeinrichB sagte in Einlesen einiger singulärer Werte:
Die Datei liegt lokal auf dem Rechner
Dann könnte es mit dem Parser Adapter gehen
Oder per Skript
-
hallo
danke Dir. Dann muss ich mal schauen.
Oder hat jemand noch einen "einfacheren" Vorschlag. Könnte ja auch ne kleine DB sein oder dergleichen.
Bin für vieles offen
-
Hallo HeinrichB
Hatte das selbe Problem, da ich über ein externes System ca. 16 Temperaturmesswerte bekomme. Ich "klaute" mir die Idee vom Spritpreis, der in diesem Forum schon mehrfach erwähnt wurde:
- Ich wandle das ganze in ein JSON um mit folgenden Format:
[{"id":0,"name":"Heizung Vorlauf","value":40.13,"date":"15.12.2019 16:20"},{"id":1,"name":"Solar Vorlauf","value":24.00,"date":"15.12.2019 16:20"}, usw.... - dann lese ich es über den Parser ein
- mithilfe dieses JAVA Scripts (welches du sicherlich voll anpassen musst) erstelle ich dann die Datenpunkte, die ich danach auslesen usw. kann
on({id: "parser.0.Temphome"/*Temphome*/, change: 'any'}, function(obj) { log("Start Temphome"); var gasStation = JSON.parse(obj.state.val); if (gasStation.length === 0) return; var maxDaten=gasStation.length; maxDaten=16; var i = 0; for (var i = 0; i < maxDaten; i++) { //console.log(i); //console.log("scriptDatenPunkte.Temperaturhome.name_"+i); createState("scriptDatenPunkte.Temperaturhome.Sensor"+i+".Name_"+i, {type: "string", name: "Name "+i, read: true, write: true}); createState("scriptDatenPunkte.Temperaturhome.Sensor"+i+".Wert_"+i, {type: "string", name: "Wert "+i, read: true, write: true}); createState("scriptDatenPunkte.Temperaturhome.Sensor"+i+".Datum_"+i, {type: "string", name: "Datum "+i, read: true, write: true}); } var index = 0; //for (index = 0; index < gasStation.length; ++index) { for (index = 0; index < maxDaten; ++index) { var iiSensor=gasStation[index].id; setState("scriptDatenPunkte.Temperaturhome.Sensor"+(iiSensor)+".Name_"+(iiSensor), gasStation[index].name); setState("scriptDatenPunkte.Temperaturhome.Sensor"+(iiSensor)+".Wert_"+(iiSensor), (gasStation[index].value).toString().replace(".",".")); setState("scriptDatenPunkte.Temperaturhome.Sensor"+(iiSensor)+".Datum_"+(iiSensor), gasStation[index].date); } log("Ende Temphome"); });
Vielleicht hilft dir die Idee weiter!
Klaus - Ich wandle das ganze in ein JSON um mit folgenden Format:
-
Hallo Klaus,
danke Dir sehr. Ich denke, dass ich das hinbekommen sollte.
Ein paar Erfahrungen mit Programmierungen etc habe ich ja, nur muss ich mich innerhalb des ioBrokers noch zurechtfinden.
Bspw. wo ich die Scripts einstellen, aufrufe etc.Aber herzlichen Dank