NEWS
Ein bestimmte Instanz nur zu bestimmten Zeiten aktiv. Wie?
-
Hallo zusammen,
ich habe hier u.a. eine Modbus Instanz laufen (Solaredge Wechselrichter).
Anscheinend gibt es Probleme über Modbus etwas auszulesen wenn das Teil sich zur Nachtruhe begibt
modbus.0 2017-10-26 19:20:46.110 warn Poll error count: 1148 code: "App Timeout" ````<– Dauerfeuer im Log Im Prinzip ist es auch unwahrscheinlich, dass interessante Informationen vom Wechselrichter kommen, von daher würde ich gerne mit der untergehenden Sonne auch die Modbus Instanz in Sleep versetzten. Ist es möglich, irgendwie eine Instanz nur innerhalb eines bestimmten Zeitfenster laufen zu lassen? Besten Gruß Bernd
-
ja klar..
var objPl = getObject('system.adapter.admin.2'); objPl.common.enabled = true; // Adapter einschalten // objPl.common.enabled = false; // Adapter ausschalten setObject('system.adapter.admin.2', objPl, function (err) { if (err) log('Cannot write object: ' + err); });
hier als beispiel wird der admin.2 ein oder ausgeschaltet
wenn du es automatisiert haben willst muss du noch Sonnenuntergang und Sonnenaufgang als trigger nehmen..
-
Hi nochmals,
ich sehe gerade im log das es nicht funktioniert.
javascript.0 2017-11-18 20:25:00.048 error Function "setObject" is not allowed. Use adapter settings to allow it.
Ich finde allerdings auch keine Stelle im Adapter wo ich das "genehmigen" könnte?
Ne Idee?
Besten Gruß
Bernd
-
Die Einstellung ist in den Einstellungen des Javascript-Adapters.
-
Danke für die Info, hatte beim Modbus Adapter nachgeschaut. :roll:
Leider funktioniert das Script aber nicht. Der Adapter wird nicht deaktiviert.
function WRSleep() { var objPl = getObject('system.adapter.modbus.0'); objPl.common.enabled = false; // Adapter ausschalten console.log("val:" + objPl.common.enabled); } WRSleep(); schedule("58 20 * * *", WRSleep);
Jemand eine Idee wie ich das hin bekomme?
Besten Gruß
Bernd
-
Moin,
ich versuche es nochmals, weil es irgendwie doch eine Möglichkeit geben muss.
Ich habe mir aus dem Script:
function WRSleep() { var objPl = getObject('system.adapter.modbus.0'); objPl.common.enabled = false; // Adapter ausschalten log("ModbusInstanceValue: " + objPl.common.enabled); } WRSleep();
Das Objekt in ein JSON geschoben und da sehe ich auch, dass enabled auf false gesetzt wurde, sich die Instanz selbst dafür aber nicht interessiert.
Werden höhere Rechte benötigt?
Muss noch was anderes "gefeuert" werden?
Hat wirklich niemand eine Idee?
Mein Log sieht furchtbar aus in der Nacht
Besten Gruß
Bernd
-
function WRSleep() { var objPl = getObject('system.adapter.modbus.0'); objPl.common.enabled = false; // Adapter ausschalten setObject('system.adapter.modbus.0', objPl); }
setObject() muss in der Konfiguration der JS-Instanz freigegeben sein.
-
In den Adapter Einstellungen muss noch setObject aktiviert werden
Gruß
Pix
EDIT: Paul war wieder schneller :lol:
-
Die Einstellung hatte er doch schon gesetzt (hoffe ich zumindest) - siehe ein paar Einträge weiter oben.
-
Hallo,
ich hatte das Problem auch mal. Diese Einstellung wurd nicht bei mir angezeigt. Mein Javascript Adapter war nicht auf dem neuesten Stand oder korrekt installiert. Erst nach einem````
./iobroker upload javascriptGruß Pix
-
@Pix: Das hatte ich alles bereits eingestellt und erledigt, aber um in den Genuss von setObject zu kommen muss man nicht nur die Berechtigungen besitzen! :idea:
<size size="150">In meinem Script fehlt das setObject() !</size>Das Lustige dabei ist, das ich 2 Scripte habe. Das Script um den ModBus wieder einzuschalten enthielt setObject, ich hatte aber in den anderen Script soviel gefummelt, dass ich wohl die Zeilen gelöscht hatte und mit anderen Code zwischenzeitlich gefüllt hatte.
Die gute Nachricht ist jetzt das es läuft.
function WRSleep() { var objPl = getObject('system.adapter.modbus.0'); var jsonResult; objPl.common.enabled = false; // Adapter ausschalten setObject('system.adapter.modbus.0', objPl, function (err) { if (err) log('Cannot write object: ' + err); }); log("val:" + objPl.common.enabled); } WRSleep(); schedule("58 20 * * *", WRSleep);
Wenn mir jetzt noch jemand einen Tipp geben könnte wie die statischen schedule Zeiten gegen Sonnunter- und Aufgangszeiten getauscht werden, dass wäre dann perfekt.
Auf jeden Fall nochmals Danke für die Unterstützung!
Besten Gruß
Bernd
-
Hallo,
schön, dass es klappt. Hier die Doku zur Einbindung der Astro-Funktion: https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#astro–function
Gruß
Pix
-
Perfekt!
Das kommt heute noch rein, damit der WR morgen nach Sonnenaufgang +30min wach wird
Thanks again!
-
sieht interessant aus, kann man damit auch einen Adapter sagen wir alle 15 Minuten für 1 Minute laufen lassen?
Würde das gerne mit dem HomematicIP-Adapter machen, da ich diesen zum Abrufen vom Wetter nutze, nur dafür. -
@loverz schon wieder ein 4 1/2 Jahre alter Thread!
-
@homoran ja, finde die immer über google
soll ich lieber neue aufmachen?
Das Thema passt ja!Hab hier übrigens eine Lösung in einem anderen Thread gefunden.
Lösung: https://forum.iobroker.net/topic/25105/adapter-zur-bestimmten-zeit-aus-oder-anmachen/9 -
@loverz sagte in Ein bestimmte Instanz nur zu bestimmten Zeiten aktiv. Wie?:
, finde die immer über google
aber das Datum ist ja sichtbar.
@loverz sagte in Ein bestimmte Instanz nur zu bestimmten Zeiten aktiv. Wie?:
in einem anderen Thread
der war ja auch nur seit 2 Jahren abgelaufen.
-
@loverz sagte in Ein bestimmte Instanz nur zu bestimmten Zeiten aktiv. Wie?:
@homoran ja, finde die immer über google
Hier etwas , was ich öfters schreibe :
Warum Google , die Forumssuche funktioniert besser als Google ,
inkl. der Suche innerhalb des Threads !Suche innerhalb des Threads :
In User Einstellung aktivieren :STRG + F
.
-
@homoran jetzt weiß ich aber noch nicht, ob es schlimm ist alte Threads hochzuholen. Ist es denn sinnvoller einen neuen Thread aufzumachen, wenn das Thema direkt zutrifft?
-
@glasfaser danke für die Erläuterung
Ich hab es mir irgendwie angewohnt zu googlen, da lande ich oft auch auf anderen Seiten, die mir hilfreich erscheinen, wenn hier nichts zu finden ist.
Dennoch kann ich den ein oder anderen Tipp von dir bestimmt in Zukunft anwenden