var prefix = "solar/xxxxxxxxxxxx" var count_chargers = flow.get('count_chargers'); var inv1 = flow.get('inv1'); var inv1_old = flow.get('inv1_old'); var inv1_producing = flow.get('inv1_producing'); var inv1_reachable = flow.get('inv1_reachable'); var inv1_power_shelly = flow.get('inv1_power_shelly'); var inv1_last_update = flow.get('inv1_last_update'); var jetzt = new Date(); var update = new Date(inv1_last_update*1000); // um ein Verstopfen der OpenDTU Queue zu vermeiden, senden wir Updates nur wenn der Inverter erreichbar ist und das letzte Update weniger als 30 Sekunden alt ist if (inv1_reachable && ((Math.round(jetzt.getTime() / 1000) - inv1_last_update) < 30)) { if (count_chargers > 0) { flow.set('inv1', 0); if (inv1_producing || (inv1_power_shelly > 10)) { msg.topic = prefix + "/cmd/power"; msg.payload = 0; node.send(msg); } } else { if (inv1 > 15) { node.status({ "text": inv1 + " " + update.toLocaleString(), "fill": "green", "shape": "ring" }) if (inv1_old != inv1) { msg.topic = prefix + "/cmd/limit_nonpersistent_absolute"; msg.payload = inv1; node.send(msg); flow.set('inv1_old', inv1); } if (!inv1_producing) { msg.topic = prefix + "/cmd/power"; msg.payload = 1; node.send(msg); } } else { node.status({ "text": inv1 + " " + update.toLocaleString(), "fill": "red", "shape": "ring" }) if (inv1_producing) { msg.topic = prefix + "/cmd/power"; msg.payload = 0; node.send(msg); } } } }