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 -
@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 -
@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 -
@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