NEWS
[gelöst] Min /Max Temperatursensor
-
Servus
hab das ganze jetzt mal getestet, leider nicht erfolgreich
var id = "s7.0.DBs.DB100.Aussentemp"; var maxid = 'javascript.0.Statistik.Luft1.Max24'; var minid = 'javascript.0.Statistik.Luft1.Min24'; var dt = 24;//Zeitraum in Stunden dt = dt*3600*1000; schedule("*/5 * * * *", function(){ SQLAbfrage(id); }); SQLAbfrage(id); // maximum, minimum function minimum(result) { log(JSON.stringify(result.result)); setState(minid, result.result[0].MinVal); } function maximum(result) { log('Fn Max'+ JSON.stringify(result.result)); setState(maxid, result.result[0].MaxVal); } function SQLAbfrage () { log('Name: '+id); sendTo('sql.0', 'query', 'SELECT * FROM datapoints WHERE name = \'' + id + '\'', GetResults); } function GetResults (dpoint) { var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; log('startzeit: '+start_time); log('endzeit: '+end_time); log('id: '+dpoint.result[0].name); //log(JSON.stringify(dpoint.result)+'//'+start_time); //log(dpoint.result[0].id + '---//---' + dpoint.result[0].name); sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum); sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum); }
wenn ich es richtig interpretiere,
gibt es hier ein Problem
function SQLAbfrage () { log('Name: '+id); sendTo('sql.0', 'query', 'SELECT * FROM datapoints WHERE name = \'' + id + '\'', GetResults); }
aber dann verliesen die Ideen mich, wie kann ich den Fehler eingrenzen
mfg
Christian
-
Welche Datenbank hast du denn im Einsatz??
Stimmt die Bezeichnung deines Datenpunkts exakt (sind die Punkte alle so korrekt)? Hast Du für Deinen Datenpunkt auch die SQL-Historie aktiviert und sind da auch schon Werte vorhanden?
Der Fehler sieht ganz danach aus dass in deiner Db kein Wert mit deiner id vorhanden ist…
-
Servus
der Datenpunkt ist vorhanden (S7)
, auch in der DB vorhanden
Daten sind auch drinn
-
Hmm - ändere bitte mal den folgenden Bereich mit der Loggingausgabe:
function GetResults (dpoint) { var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; log('startzeit: '+start_time); log('endzeit: '+end_time); log(JSON.stringify(dpoint.result)); log('id: '+dpoint.result[0].name); . . .
und poste dann nochmal das Log
-
Servus
function GetResults (dpoint) { var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; log('startzeit: '+start_time); log('endzeit: '+end_time); log(JSON.stringify(dpoint.result)); log('id: '+dpoint.result[0].name); //log(JSON.stringify(dpoint.result)+'//'+start_time); //log(dpoint.result[0].id + '---//---' + dpoint.result[0].name); sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum); sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum); }
00:05:04.263 [info] javascript.0 Stop script script.js.common.minmax.Aussentemp 00:05:04.301 [info] javascript.0 Start javascript script.js.common.minmax.Aussentemp 00:05:04.301 [info] javascript.0 script.js.common.minmax.Aussentemp: schedule(cron=*/5 * * * *) 00:05:04.308 [info] javascript.0 script.js.common.minmax.Aussentemp: 1 Name: s7.0.DBs.DB100.Aussentemp 00:05:04.308 [info] javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id as id FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'") 00:05:04.309 [info] javascript.0 script.js.common.minmax.Aussentemp: registered 0 subscriptions and 1 schedule 00:05:04.320 [info] javascript.0 script.js.common.minmax.Aussentemp: startzeit: 1514847904311 00:05:04.320 [info] javascript.0 script.js.common.minmax.Aussentemp: endzeit: 1514934304311 00:05:04.321 [info] javascript.0 script.js.common.minmax.Aussentemp: undefined 00:05:04.321 [error] javascript.0 TypeError: Cannot read property '0' of undefined at Object.GetResults [as cb] (script.js.common.minmax.Aussentemp:42:27) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3151:71) at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:104:25) at emitThree (events.js:116:13) at RedisClient.emit (events.js:194:7) at return_pub_sub (/opt/iobroker/node_modules/redis/index.js:794:18) at RedisClient.return_reply (/opt/iobroker/node_modules/redis/index.js:833:9) at JavascriptRedisParser.returnReply (/opt/iobroker/node_modules/redis/index.js:192:18) at JavascriptRedisParser.execute (/opt/iobroker/node_modules/redis-parser/lib/parser.js:574:12) at Socket. (/opt/iobroker/node_modules/redis/index.js:274:27)
-
Dat Ding wehrt sich aber auch - müssen wir uns rantasten… Ändere mal bitte das Codestück wie folgt:
function SQLAbfrage (id) { sendTo('sql.0', 'query', 'SELECT id, name FROM datapoints WHERE name = \'' + id + '\'', function(result){ log(JSON.stringify(result)); //GetResults(result); }); }
-
ergebnis
08:51:29.085 [info] javascript.0 Stop script script.js.common.minmax.Aussentemp 08:51:29.128 [info] javascript.0 Start javascript script.js.common.minmax.Aussentemp 08:51:29.129 [info] javascript.0 script.js.common.minmax.Aussentemp: schedule(cron=*/5 * * * *) 08:51:29.130 [info] javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'") 08:51:29.131 [info] javascript.0 script.js.common.minmax.Aussentemp: registered 0 subscriptions and 1 schedule 08:51:29.167 [info] javascript.0 script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"}
mir kommt es so vor, als ob die weitergabe des Ergebnisses nicht funktioniert
-
Natürlich wird das Ergebnis jetzt nicht weitergegeben - hab ich ja auskommentiert
Und der springende Punkt ist:
"Error: ER_NO_DB_ERROR: No database selected"
Jetzt wo ich nochmal auf deine Screenshots schaue fällt es mir auch wie Schuppen aus den Haaren
Du hast ja gar keinen SQL-Adapter sondern nur die History aktiviert! (Hatte ich auch weiter vorn schon mal danach gefragt…)
Dann wird das so nix. Kann ich dir aber auch aus dem Stegreif nicht weiterhelfen. History habe und hatte ich nie im Einsatz. Evtl. kann ich heute abend mal schauen was man da umbauen müsste...
-
Mahlzeit
ich hab doch SQL aktiv!!
oder versteh ich da was falsch
-
Na Prost Mahlzeit
stimmt auch wieder - du hast ja beides installiert. Jetzt weiß ich aber auf Anhieb aus der Ferne auch nicht mehr zu raten…
Die Fehlermeldung sagt aber relativ deutlich dass der sendTo-Befehl auf den Adapter "SQL.0" keine Datenbank zuordnen kann :!: :?: :?
Bekommst du denn Werte angezeigt wenn du im Historien-Fenster auf Tabelle oder Grafik gehst?
Ansonsten vielleicht mal noch das LogLevel des SQL-Adapters auf "Debug" stellen und schauen ob da beim Ausführen des Scripts noch was aussagekräftiges geloggt wird.
-
da kommt auch nicht mehr raus:
javascript.0 2018-01-03 15:00:00.226 info script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"} javascript.0 2018-01-03 15:00:00.158 info script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'") javascript.0 2018-01-03 14:55:00.184 info script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"} javascript.0 2018-01-03 14:55:00.157 info script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'") javascript.0 2018-01-03 14:50:00.221 info script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"} javascript.0 2018-01-03 14:50:00.158 info script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'")
in der Tabelle steht etwas
-
Zeigst Du bitte mal die Einstellungen deines SQL-Adapters?
-
da kommt auch nicht mehr raus:
javascript.0 2018-01-03 15:00:00.226 info script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"} javascript.0 2018-01-03 15:00:00.158 info script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'") javascript.0 2018-01-03 14:55:00.184 info script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"} javascript.0 2018-01-03 14:55:00.157 info script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'") javascript.0 2018-01-03 14:50:00.221 info script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"} javascript.0 2018-01-03 14:50:00.158 info script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'")
in der Tabelle steht etwas
sql.gif `
sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE nam…....
-
sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE nam….... `
JA, das wäre einen Versuch wert. Unter anderem deshalb hatte ich ja (bisher erfolglos ) gefragt welche Db denn der TE im Einsatz hat…
-
jetzt häng ich mich auch noch mal dran…
folgenden Code habe ich jetzt als Test im Einsatz:
function SQLAbfrage () { log(id); sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE name = \'' + id + '\'', function(result){ log(JSON.stringify(result)); // GetResults(result); }); // sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults); }
und das kommt im LOG:
16:50:00.943 [info] javascript.1 script.js.Test.Test2: hm-rpc.0.IEQ0023353.1.TEMPERATURE 16:50:00.947 [info] javascript.1 script.js.Test.Test2: {"error":null,"result":[{"id":21,"name":"hm-rpc.0.IEQ0023353.1.TEMPERATURE"}]}
Woher kommt der Error?
Was mach ich falsch ?
Gruß
Michael
-
jetzt häng ich mich auch noch mal dran…
folgenden Code habe ich jetzt als Test im Einsatz:
function SQLAbfrage () { log(id); sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE name = \'' + id + '\'', function(result){ log(JSON.stringify(result)); // GetResults(result); }); // sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults); }
und das kommt im LOG:
16:50:00.943 [info] javascript.1 script.js.Test.Test2: hm-rpc.0.IEQ0023353.1.TEMPERATURE 16:50:00.947 [info] javascript.1 script.js.Test.Test2: {"error":null,"result":[{"id":21,"name":"hm-rpc.0.IEQ0023353.1.TEMPERATURE"}]}
Woher kommt der Error?
Was mach ich falsch ?
Gruß
Michael `
createState('Statistik.Luft1.Max24', 0); createState('Statistik.Luft1.Min24', 0); var id = "hm-rpc.0.IEQ0023353.1.TEMPERATURE"; var maxid = 'javascript.0.Statistik.Luft1.Max24'; var minid = 'javascript.0.Statistik.Luft1.Min24'; var dt = 24;//Zeitraum in Stunden dt = dt*3600*1000; schedule("*/5 * * * *", function(){ SQLAbfrage(id); }); SQLAbfrage(id); // maximum, minimum function minimum(result) { ///log(JSON.stringify(result.result)); setState(minid, result.result[0].MinVal); } function maximum(result) { ///log('Fn Max'+ JSON.stringify(result.result)); setState(maxid, result.result[0].MaxVal); } function SQLAbfrage () { ///log(id); sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults); } function GetResults (dpoint) { var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; ///log(JSON.stringify(dpoint.result)+'//'+start_time); ///log(dpoint.result[0].id + '---//---' + dpoint.result[0].name); sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum); sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum); }
-
juhu
so funktioniert es jetzt
var id = "s7.0.DBs.DB100.Aussentemp"; //var maxid = 'javascript.0.Statistik.Luft1.Max24'; //var minid = 'javascript.0.Statistik.Luft1.Min24'; var maxid = "javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.max24";/*max24*/ var minid = "javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.min24";/*min24*/ var dt = 24;//Zeitraum in Stunden dt = dt*3600*1000; schedule("*/5 * * * *", function(){SQLAbfrage(id);}); SQLAbfrage(id); // minimum function minimum(result) { log('Fn Min'+JSON.stringify(result.result)); setState(minid, result.result[0].MinVal); } // maximum function maximum(result) { log('Fn Max'+ JSON.stringify(result.result)); setState(maxid, result.result[0].MaxVal); } function SQLAbfrage () { log('Name: '+id); sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults); } function GetResults (dpoint) { var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; log('startzeit: '+start_time); log('endzeit: '+end_time); log(JSON.stringify(dpoint.result)); log('id: '+dpoint.result[0].name); //log(JSON.stringify(dpoint.result)+'//'+start_time); //log(dpoint.result[0].id + '---//---' + dpoint.result[0].name); sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum); sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum); }
meldung im Log:
18:26:27.313 [info] javascript.0 Stop script script.js.common.minmax.Aussentemp 18:26:27.352 [info] javascript.0 Start javascript script.js.common.minmax.Aussentemp 18:26:27.353 [info] javascript.0 script.js.common.minmax.Aussentemp: schedule(cron=*/5 * * * *) 18:26:27.354 [info] javascript.0 script.js.common.minmax.Aussentemp: Name: s7.0.DBs.DB100.Aussentemp 18:26:27.354 [info] javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT * FROM iobroker.datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'") 18:26:27.355 [info] javascript.0 script.js.common.minmax.Aussentemp: registered 0 subscriptions and 1 schedule 18:26:27.472 [info] javascript.0 script.js.common.minmax.Aussentemp: startzeit: 1514913987450 18:26:27.472 [info] javascript.0 script.js.common.minmax.Aussentemp: endzeit: 1515000387450 18:26:27.473 [info] javascript.0 script.js.common.minmax.Aussentemp: [{"id":11,"name":"s7.0.DBs.DB100.Aussentemp","type":0}] 18:26:27.474 [info] javascript.0 script.js.common.minmax.Aussentemp: id: s7.0.DBs.DB100.Aussentemp 18:26:27.475 [info] javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= 1514913987450 AND id=11 GROUP BY id") 18:26:27.475 [info] javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= 1514913987450 AND id=11 GROUP BY id") 18:26:28.007 [info] javascript.0 script.js.common.minmax.Aussentemp: Fn Max[{"MaxVal":6.2}] 18:26:28.008 [info] javascript.0 script.js.common.minmax.Aussentemp: setForeignState(id=javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.max24, state=6.2) 18:26:28.029 [info] javascript.0 script.js.common.minmax.Aussentemp: Fn Min[{"MinVal":1.5}] 18:26:28.030 [info] javascript.0 script.js.common.minmax.Aussentemp: setForeignState(id=javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.min24, state=1.5)
finde keine error ausgabe, sollte also funzn
Vielen Dank bis hierhin schon mal und für die Geduld
hab jetzt nur noch diese Fehlermeldung in der Log :
admin.0 2018-01-03 18:26:28.047 error change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null} cloud.0 2018-01-03 18:26:28.037 error change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null} sql.0 2018-01-03 18:26:28.036 error change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null} javascript.0 2018-01-03 18:26:28.035 error change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null} web.0 2018-01-03 18:26:28.033 error change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null} sql.0 2018-01-03 18:26:28.021 error change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null} javascript.0 2018-01-03 18:26:28.023 error change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null} cloud.0 2018-01-03 18:26:28.022 error change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null} web.0 2018-01-03 18:26:28.018 error change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null}
die Werte stehen aber im Datenpunkt
mach ich da noch etwas verkehrt
hab die error-meldungen mal in ein eigenen Thread gesetzt
-
super
nun habe ich es verstanden.
der Datenbankname der im Adapter hinterlegt wurde muss mit angegeben werden.
// ----------------------------------------------------------------------------- // ----- Abfragen von Werten aus der Datenbank (SQL) --------------------------- // ----------------------------------------------------------------------------- // ----- Datenpunkt der ausgelesen werden soll --------------------------------- var id = "javascript.0.eBus.Temperatur.FlowTemp"/*Vorlauf */; // ----- Datenpunkte in die gespeichert werden soll ---------------------------- var maxid = 'javascript.0.Statistik.FlowTemp.Max24'; var minid = 'javascript.0.Statistik.FlowTemp.Min24'; var dt = 24; // Zeitraum in Stunden dt = dt*3600*1000; // Zeitraum umrechnen in ?? // ----- Datenpunkte anlegen --------------------------------------------------- createState(maxid, " "); createState(minid, " "); log('1\. ) Datenpunkte angelegt '); SQLAbfrage(id); //----- SQL-Abfrage durchführen function SQLAbfrage () { log('2\. ) Datenpunkt => ' + id); log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = \'' + id + '\''); sendTo('sql.0', 'query', 'SELECT * FROM ioBmaster.datapoints WHERE name = \'' + id + '\'', GetResults); } //--------------------------------------- function GetResults (dpoint) { log('3\. ) Funktion -> GetResults aufrufen'); var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; log('3a.) Startzeit : ' + start_time); log('3b.) Endzeit : ' + end_time); log(' Datenpunkt: ' + dpoint.result); log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time); log(' Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name); sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum); sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum); } //----- Werte schreiben (maximum, minimum) //----- minimum function minimum(result) { log('min )Funktion -> ' + JSON.stringify(result.result)); setState(minid, result.result[0].MinVal); } //----- maximum function maximum(result) { log('max )Funktion -> ' + JSON.stringify(result.result)); setState(maxid, result.result[0].MaxVal); log('---- fertig -----------------------------------------'); } //--------------------------------------- // ----- Funktion jede Minute aufrufen schedule("*/1 * * * *", function(){SQLAbfrage(id);});
Nun kann ich weiter versuchen die Tages, Wochen, Jahres-Werte aus der Datenbank abzufragen
Gruß
Jürgen
-
der Datenbankname der im Adapter hinterlegt wurde muss mit angegeben werden. `
Könnt Ihr mir bitte noch verraten welche Db ihr verwendet? Bei meiner (MSSQL) darf ich den nämlich nicht mit angeben sonst sagt er mir die Tabelle sei unbekannt.
-