var alwx, carx, etox, etoxd, nrg, nrg_7x, nrg_8x, nrg_9x, nrg_11x, dwsx, ampx, apiurl = "http://192.168.1.15/status"
// Trigger 1 min
schedule("*/1 * * * *", function () {
try {
require("request")('http://192.168.1.15/status', function (error, response, result) {
setState("javascript.0.GoE_Charger.Objekt", result, true);
}).on("error", function (e) {console.error(e);});
} catch (e) { console.error(e); }
data = (function () {
try {
return JSON.parse(getState("javascript.0.GoE_Charger.Objekt").val)
;}
catch(e) {
return {};
}
})();
var alwx = parseInt(data["alw"]);
setState("javascript.0.GoE_Charger.alw_0", alwx, true);
var ampx = parseInt(data["amp"]);
setState("javascript.0.GoE_Charger.amp_0", ampx, true);
var dwsx = parseInt(data["dws"]);
setState("javascript.0.GoE_Charger.dws_0", dwsx/360000, true);
var carx = parseInt(data["car"]);
setState("javascript.0.GoE_Charger.LadeStatus", carx, true);
var etoxd = parseInt(data["eto"]);
//Umrechnung in 1kWh
var etox = etoxd / 100 / 60 / 60;
setState("javascript.0.GoE_Charger.eto_0", etox, true);
var nrg = data["nrg"];
//console.log(nrg);
var nrg_7x = parseInt(nrg[7]);
//Umrechnung in 1kW
setState("javascript.0.GoE_Charger.nrg_7", nrg_7x/10, true);
var nrg_8x = parseInt(nrg[8]);
//Umrechnung in 1kW
setState("javascript.0.GoE_Charger.nrg_8", nrg_8x/10, true);
var nrg_9x = parseInt(nrg[9]);
//Umrechnung in 1kW
setState("javascript.0.GoE_Charger.nrg_9", nrg_9x/10, true);
var nrg_11x = parseInt(nrg[11]);
//Umrechnung in 1kW
setState("javascript.0.GoE_Charger.nrg_11", nrg_11x/100, true);
});
Allerdings bekomme ich Fehlermeldungen und der erste Teil schägt schon fehl, wo das Script das Json aus der API in einen Datenpunkt schreiben soll. Der Datenpunkt vom Typ Objekt ist aber leer.
Ist der DP überhaupt angelegt, da es kein CreateState in dem Script gibt und die Fehlermeldung besagt, dass er den Wert nicht finden kann?
Wenn man in den Objekten schaut:
javascript.0
--- GoE_Charger.
------ Objekt
Nein, die LED leuchtet unverändert blau, egal was ich eintrage… Das hatte ich vermutet: Wenn die Kommunikation über JSON erfolgt, dann meist nur in eine Richtung.
Nicht wirklich tragisch, wäre nur ein netter Mehrwert gewesen.
Wäre dieses Script eigentlich auch unter Blockly zu realisieren gewesen? Damit konnte ich schon ein paar vernünftige Ergebnisse erzielen, wenn es um die Abfrage von Schaltzuständen gegangen ist. Hat für einen Anfänger wie mich den Vorteil, dass man die ganze Befehlssyntax nicht kennen muss. Gibt es eigentlich ein Programm, das den Code des Scriptes in Blockly Struktur darstellt? Würde mir das Lernen erleichtern.
Jedenfalls nochmals Danke für deine Hilfe! Du hast mir wirklich sehr geholfen.
Wie kan ich auf alle werte unnerhalb einer structur triggern lassen Mit [https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp) in on().
danke dir Paul das hilft weiter auf jeden fall habe ich das mit dem namen hinbekommen.
Nur hierin sind ja auch werte definiert, bei mir sollte er triggern auf alles in dem baum (in die variabelen werden dynamisch erzeugt, kan diese also nicht vorab festlegen.)
oder verstehe ich das jetzt falsch ?
Kanst du mir eventueel auf die sprunge helfen diesen ON richtig um zu stellen ? (der RegExp ist bestimmt falsch da war ein versuch)
on({id: "javascript.0.domoticz.7", change: "any", RegExp}, function (obj) {
var value = obj.id;
log (value);
anstatt der ID 7 sollte er halt auf alle ID in dieser structur triggeren.
Mit denm obj.id sehe ich ja welche ID getriggerd hat um dan das URL commando zu bauen
Edit: Geschafft ! Die loesung war:
on({id: RegExp("javascript.0.domoticz."), change: "any"}, function (obj) {
var value = obj.id;
log (value);
});