NEWS
SQL Modul wird nicht erkannt
-
Hallo zusammen,
ich würde gerne per IoBroker und Javascript Daten aus meiner SQL Datenbank auslesen und diese mir per Spracheausgabe von dem Raspberry vorlesen lassen. Ich habe allerdings das Problem, dass Javascript das Sql modul nicht erkennt und somit immer einen Fehler ausspuckt.
error javascript.0 (4604) script.js.Test compile failed:
Weiß jemand zufällig wie ich den Fehler beheben kann? Das Modul habe ich in den Einstellungen von dem Javascript Adapter hinzugefügt.
Danke euch schonmal -
Hallo zusammen,
ich würde gerne per IoBroker und Javascript Daten aus meiner SQL Datenbank auslesen und diese mir per Spracheausgabe von dem Raspberry vorlesen lassen. Ich habe allerdings das Problem, dass Javascript das Sql modul nicht erkennt und somit immer einen Fehler ausspuckt.
error javascript.0 (4604) script.js.Test compile failed:
Weiß jemand zufällig wie ich den Fehler beheben kann? Das Modul habe ich in den Einstellungen von dem Javascript Adapter hinzugefügt.
Danke euch schonmal -
@marlon-gemmer Sollen wir jetzt raten?
Kannst du mal dein Skript posten und die gesamte Fehlermeldung (was nach dem Doppelpunkt kommt). Welches SQL Modul verwendest du?
Ginge das nicht auch mit dem SQL Adapter?
var mysql = require('mysql'); const hostname = "Test1"; const username = "Test2"; const password = "Test3"; const database = "Test4"; const con = mysql.createConnection({ "host": hostname, "user": username, "password": password, "database": database }); console.log("running"); on({id: 'shelly.0.SHSW-1##1.Relay0.Switch', val: true, ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (compareTime("21:00", "null", "<") && compareTime("08:00", "null", ">=")) { setState("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false); setState("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false); } else { setStateDelayed("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false, 120000, false); setStateDelayed("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false, 120000, false); } exec('/home/pi/raspberry-remote/./send 11111 2 1'); con.query("select k.name as keyword, a.housenumber, s.name as street, c.name as city from ffo_alarm a " + "inner join ffo_street s on a.street = s.id " + "inner join ffo_city c on s.cityID = c.id " + "inner join ffo_code_alarm_keyword k on k.shortname=a.keyword " + "where a.date = NOW() and a.time >= SUBTIME(NOW(), '3:00') " + "order by id desc;", (err, rows) => { if(err) { console.log(err); setState("sayit.0.tts.text", "" + ('Fehler' + '')); } if(rows && rows.length == 1) setState("sayit.0.tts.text", "" + (`${rows[0].keyword} ${rows[0].street} ${rows[0].housenumber} in ${rows[0].city} `)); else setState("sayit.0.tts.text", "" + ('Kein Eintrag' + '')); }); var timeout = setTimeout(function () { exec('/home/pi/raspberry-remote/./send 11111 2 0'); }, 15000); });Das ist mein Code. Bei z.b. dem Hostname steht bei mir schon der richtige drin. Für das Forum hier habe ich ihn geändert.
Ich verwende das Modul "mysql"
Mit dem SQL Adapter geht das nicht. Damit logge ich ja nur die einzelnen Zustände in der Datenbank aber kann ja keine konkreten Abfragen machen.So sieht die Konfiguration im Adapter aus:

Der Fehlercode schaut so aus:
error javascript.0 (6151) script.js.Test compile failed: at script.js.Test:6Ich hoffe das hilft.
Danke schonmal -
var mysql = require('mysql'); const hostname = "Test1"; const username = "Test2"; const password = "Test3"; const database = "Test4"; const con = mysql.createConnection({ "host": hostname, "user": username, "password": password, "database": database }); console.log("running"); on({id: 'shelly.0.SHSW-1##1.Relay0.Switch', val: true, ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (compareTime("21:00", "null", "<") && compareTime("08:00", "null", ">=")) { setState("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false); setState("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false); } else { setStateDelayed("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false, 120000, false); setStateDelayed("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false, 120000, false); } exec('/home/pi/raspberry-remote/./send 11111 2 1'); con.query("select k.name as keyword, a.housenumber, s.name as street, c.name as city from ffo_alarm a " + "inner join ffo_street s on a.street = s.id " + "inner join ffo_city c on s.cityID = c.id " + "inner join ffo_code_alarm_keyword k on k.shortname=a.keyword " + "where a.date = NOW() and a.time >= SUBTIME(NOW(), '3:00') " + "order by id desc;", (err, rows) => { if(err) { console.log(err); setState("sayit.0.tts.text", "" + ('Fehler' + '')); } if(rows && rows.length == 1) setState("sayit.0.tts.text", "" + (`${rows[0].keyword} ${rows[0].street} ${rows[0].housenumber} in ${rows[0].city} `)); else setState("sayit.0.tts.text", "" + ('Kein Eintrag' + '')); }); var timeout = setTimeout(function () { exec('/home/pi/raspberry-remote/./send 11111 2 0'); }, 15000); });Das ist mein Code. Bei z.b. dem Hostname steht bei mir schon der richtige drin. Für das Forum hier habe ich ihn geändert.
Ich verwende das Modul "mysql"
Mit dem SQL Adapter geht das nicht. Damit logge ich ja nur die einzelnen Zustände in der Datenbank aber kann ja keine konkreten Abfragen machen.So sieht die Konfiguration im Adapter aus:

Der Fehlercode schaut so aus:
error javascript.0 (6151) script.js.Test compile failed: at script.js.Test:6Ich hoffe das hilft.
Danke schonmal@marlon-gemmer sagte in SQL Modul wird nicht erkannt:
Mit dem SQL Adapter geht das nicht. Damit logge ich ja nur die einzelnen Zustände in der Datenbank aber kann ja keine konkreten Abfragen machen.
Wieso nicht?
https://github.com/ioBroker/ioBroker.sql#custom-queries -
var mysql = require('mysql'); const hostname = "Test1"; const username = "Test2"; const password = "Test3"; const database = "Test4"; const con = mysql.createConnection({ "host": hostname, "user": username, "password": password, "database": database }); console.log("running"); on({id: 'shelly.0.SHSW-1##1.Relay0.Switch', val: true, ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (compareTime("21:00", "null", "<") && compareTime("08:00", "null", ">=")) { setState("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false); setState("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false); } else { setStateDelayed("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false, 120000, false); setStateDelayed("shelly.0.SHSW-1##1.Relay0.Switch"/*Switch*/, false, 120000, false); } exec('/home/pi/raspberry-remote/./send 11111 2 1'); con.query("select k.name as keyword, a.housenumber, s.name as street, c.name as city from ffo_alarm a " + "inner join ffo_street s on a.street = s.id " + "inner join ffo_city c on s.cityID = c.id " + "inner join ffo_code_alarm_keyword k on k.shortname=a.keyword " + "where a.date = NOW() and a.time >= SUBTIME(NOW(), '3:00') " + "order by id desc;", (err, rows) => { if(err) { console.log(err); setState("sayit.0.tts.text", "" + ('Fehler' + '')); } if(rows && rows.length == 1) setState("sayit.0.tts.text", "" + (`${rows[0].keyword} ${rows[0].street} ${rows[0].housenumber} in ${rows[0].city} `)); else setState("sayit.0.tts.text", "" + ('Kein Eintrag' + '')); }); var timeout = setTimeout(function () { exec('/home/pi/raspberry-remote/./send 11111 2 0'); }, 15000); });Das ist mein Code. Bei z.b. dem Hostname steht bei mir schon der richtige drin. Für das Forum hier habe ich ihn geändert.
Ich verwende das Modul "mysql"
Mit dem SQL Adapter geht das nicht. Damit logge ich ja nur die einzelnen Zustände in der Datenbank aber kann ja keine konkreten Abfragen machen.So sieht die Konfiguration im Adapter aus:

Der Fehlercode schaut so aus:
error javascript.0 (6151) script.js.Test compile failed: at script.js.Test:6Ich hoffe das hilft.
Danke schonmal@marlon-gemmer ... und wenn's dann unbedingt per Script sein muss, dann halte dich an das Beispiel hier: https://www.npmjs.com/package/mysql#introduction
Du hast Sachen in
"..."geschrieben, die nicht so sein sollten. Im obigen Beispiel ist es korrekt dargestellt.Und ein
connect()habe ich auch nicht gesehen. -
@marlon-gemmer ... und wenn's dann unbedingt per Script sein muss, dann halte dich an das Beispiel hier: https://www.npmjs.com/package/mysql#introduction
Du hast Sachen in
"..."geschrieben, die nicht so sein sollten. Im obigen Beispiel ist es korrekt dargestellt.Und ein
connect()habe ich auch nicht gesehen.@unclesam Vielen Dank für den Hinweis. Ich hatte damals beim Adapter einfach nicht genau gelesen, weil in der Kurbeschreibung im ioBroker nur steht, dass man damit Datenbanken loggen kann. Mit dem Adapter geht es jetzt. Per Code hat es weiterhin nicht funktioniert. Connect hat auch nichts gebracht. Das "mysql" Modul wurde einfach nicht gefunden.
Naja. Jetzt geht alles wie gewünscht.
Vielen Dank
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden