NEWS
Script von SQL auf Influx umstellen
-
Hallo Gemeinde,
ich stelle aktuelle von SQL auf Influx um und muss eine Scripte daher auch umstellen. Leider komme ich an einigen stellen hier nicht so richtig weiter.
Ich habe ein Script, das mir aus der SQL Datenbank von allen Temperaturen zum aktuellen Tag geschrieben wurden, einen Durchschnitt zieht und diesen an einem Punkt ablegt.schedule({hour: 23, minute: 59}, RunDailyScript ); function RunDailyScript() { // SQL Script holt die Temperaturdaten und errechnet den Schnitt sendTo('sql.0', 'query', 'SELECT AVG(val) as \'temp\' from iobrokerbl.ts_number WHERE id = 81 AND TIMEDIFF(CURRENT_TIMESTAMP(),(select from_unixtime(cast(ts/1000 AS INT)))) < \'24:00:00\'', function (result) { if (result.error) { console.error(result.error); } else { // Trägt Schnitt in Tabelle //console.log('Rows: ' + JSON.stringify(result.result[0].temp)); setState('0_userdata.0.wetter-aktuell.tagesschnitt',JSON.stringify(result.result[0].temp)); } }); }
Nun versuche ich dieses auch für Influx anzulegen leider schlägt das Script ständig fehl.
schedule({hour: 10, minute: 30}, RunDailyScript ); function RunDailyScript() { // SQL Script holt die Temperaturdaten und errechnet den Schnitt sendTo('influxdb.0', 'query', 'SELECT MEAN("value") as \'temp\' FROM "jeelink.0.LaCrosse_3.temp" WHERE time > now() - 24h', function (result) { if (result.error) { console.error(result.error); } else { // Trägt Schnitt in Tabelle console.log('Rows: ' + JSON.stringify(result.result[0].temp)); setState('0_userdata.0.wetter-aktuell.Temp_test',JSON.stringify(result.result[0].temp)); } }); }
Vielleicht kann mir da jemand helfen.
Viele Grüße
Enrico -
@enrico-hesse schau dir mal diesen Thread an:
https://forum.iobroker.net/topic/12482/frage-migrate-mysql-nach-influxdbDa sind verschiedenen Lösungen vorgeschlagen, ein Skript davon hatte ich auch verwendet (bin aber wieder zurück zu MySQL)
-
@enrico-hesse sagte in Script von SQL auf Influx umstellen:
schlägt das Script ständig fehl
und wie lautet der ausgegebene fehler?
-
@oliverio der Fehler ist leider nicht sehr aussagekräftig:
2024-10-04 14:47:00.041 - [31merror[39m: influxdb.0 (12711) queries: Error: 1 Error happened while processing 1 queries 2024-10-04 14:47:00.044 - [31merror[39m: javascript.0 (7078) script.js.Wetter.temp_durch_aus_tageswerten1_Influx: Invalid call
-
das bedeutet das im query ein fehler ist.
versuche mal die abfrage im influx data explorer auszuführen bzw dort aufzubauen -
@oliverio im influx data explorer geht die Query so nicht , dort sieht er etwas anders aus und funktioniert:
from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "Aussen_Temp" and r._field == "value") |> mean()
-
ok dann hast du ja eine funktionierende query.
funktioniert die nicht über den sendto befehl? -
@oliverio nein, die funktioniert leider nicht über den sendto Befehl.
-
im influx adapter readme sind aber beispiele, in der gleichen notation
https://github.com/ioBroker/ioBroker.influxdb?tab=readme-ov-file#influx-2xsorry, ich selbst habe aktuell kein influx. hab über sendto früher selbst nicht abgerufen.
warum denkst du das das so nicht funktioniert bzw. gibt es eine fehlermeldung?