<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Verständnisfrage: Instanzen ein-&#x2F;ausschalten]]></title><description><![CDATA[<p dir="auto">Bisher habe ich, um Instanzen via VIS ein- oder auszuschalten, ein Blockly-Skript verwendet, welches auf einen Datenpunkt triggert, den ich in VIS entsprechend setze. Das Skript hat dann via EXEC-Befehl z. B. "iobroker start <em>Instanzname</em>" erzeugt.<br />
Weil <a class="plugin-mentions-user plugin-mentions-a" href="/user/paul53" aria-label="Profile: paul53">@<bdi>paul53</bdi></a> in <a href="https://forum.iobroker.net/topic/55054/nachts-ohne-wlan-fehler-von-iobroker-vermeiden/7">einem Post</a> darauf hinwies, daß man soetwas anstelle von exec besser mit extendObject macht, habe ich mein Blockly dann in JS-Code "konvertiert" und den exec-Befehl entsprechend ersetzt:</p>
<p dir="auto"></p><section class="spoiler-wrapper"><button class="spoiler-control btn btn-default">Spoiler</button><section style="display:none" class="spoiler-content"><p></p>
<pre><code>var EIN_AUS, Adapterinstanz, result;

//Dieses Skript entspricht dem Skipt "Adapterinstanzen_EIN_AUS_schalten", jedoch wird anstelle
//von exec der Befehl extendObject benutzt, weil dies gemäß
//https://forum.iobroker.net/topic/55054/nachts-ohne-wlan-fehler-von-iobroker-vermeiden/7
//angeblich "schlauer" sein soll:
//paul53: "Das macht man besser mit extendObject(). Das Beispiel in der Doku zeigt, wie eine Instanz gestoppt wird."
//Allgemein: extendObject(id, obj, callback);
//Speziell: Z. B. Stop instance
//extendObject('system.adapter.sayit.0', {common: {enabled: false}});

// Adapterinstanzen ein- oder ausschalten oder
// neustarten. Das Skript arbeitet direkt mit
// Befehlen auf Shell/Raspi-Ebene und nicht über
// VIS-Objekte.
on({id: [].concat(['0_userdata.0.Adapter.InstanzUndZustand']), change: "any"}, async function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  // Trigger="wurde aktualisiert"/"egal"
  // EIN oder AUS ermitteln.
  EIN_AUS = (obj.state ? obj.state.val : "").slice(((parseFloat((obj.state ? obj.state.val : "").length) - 2) - 1), (obj.state ? obj.state.val : "").length);
  // Adapterinstanz ermitteln.
  Adapterinstanz = (obj.state ? obj.state.val : "").slice(0, parseFloat((obj.state ? obj.state.val : "").length) - 4);
  if (EIN_AUS == 'EIN') {
    // Adapterinstanz einschalten.
//    exec(('iobroker start ' + String(Adapterinstanz)), async function (error, result, stderr) {
//        console.log(result);
//    });
    extendObject('system.adapter.' + String(Adapterinstanz), {common: {enabled: true}});
    console.log("ioBroker-Instanz " + String(Adapterinstanz) + " wurde gestartet.");
  } else if (EIN_AUS == 'AUS') {
    // Adapterinstanz ausschalten.
//    exec(('iobroker stop ' + String(Adapterinstanz)), async function (error, result, stderr) {
//        console.log(result);
//    });
    extendObject('system.adapter.' + String(Adapterinstanz), {common: {enabled: false}});
    console.log("ioBroker-Instanz " + String(Adapterinstanz) + " wurde gestoppt.");
  } else {
    // Adapterinstanz neu starten.
//    exec(('iobroker restart ' + String(Adapterinstanz)), async function (error, result, stderr) {
//        console.log(result);
//    });
//    console.log("exec: " + ('iobroker restart ' + String(Adapterinstanz)));
    extendObject('system.adapter.' + String(Adapterinstanz), {common: {enabled: false}});
    console.log("ioBroker-Instanz " + String(Adapterinstanz) + " wurde gestoppt.");
    extendObject('system.adapter.' + String(Adapterinstanz), {common: {enabled: true}});
    console.log("ioBroker-Instanz " + String(Adapterinstanz) + " wurde gestartet.");
  }
}); 
</code></pre>
<p dir="auto"></p></section></section><br />
Sowohl mein Blockly, als auch der "direkte" JS-Code funktionieren aus meiner Sicht.<p></p>
<p dir="auto">Was ich mich zwischenzeitlich jedoch frage:<br />
Was spricht dagegen, das Ein- oder Ausschalten einer Instanz ganz ohne Skipt (also weder mit exec noch mit extendObject) zu machen und einfach den Datenpunkt system/adapter/<em>adaptername</em>/<em>Instanznummer</em>/alive true oder false zu setzen? Soweit ich das getestet habe, scheint es zu funktionieren, wobei ich jedoch nicht weiß, ob im Hintergrund Seiteneffekte / ungewolltes Verhalten auftritt.</p>
]]></description><link>https://forum.iobroker.net/topic/62998/verständnisfrage-instanzen-ein-ausschalten</link><generator>RSS for Node</generator><lastBuildDate>Tue, 12 May 2026 02:03:47 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/62998.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Feb 2023 20:27:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisfrage: Instanzen ein-&#x2F;ausschalten on Wed, 15 Feb 2023 18:26:40 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/arteck" aria-label="Profile: arteck">@<bdi>arteck</bdi></a>  und <a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: Homoran">@<bdi>Homoran</bdi></a> Danke für die Infos / Antworten!</p>
]]></description><link>https://forum.iobroker.net/post/947393</link><guid isPermaLink="true">https://forum.iobroker.net/post/947393</guid><dc:creator><![CDATA[Andersmacher]]></dc:creator><pubDate>Wed, 15 Feb 2023 18:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfrage: Instanzen ein-&#x2F;ausschalten on Wed, 15 Feb 2023 09:26:02 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/andersmacher" aria-label="Profile: andersmacher">@<bdi>andersmacher</bdi></a> sagte in <a href="/post/946933">Verständnisfrage: Instanzen ein-/ausschalten</a>:</p>
<blockquote>
<p dir="auto">Was spricht dagegen,</p>
</blockquote>
<p dir="auto">nix... auser solltest nicht an/aus/an/aus/an/aus ..machen.. also hinteriennadner</p>
<p dir="auto">das extendObject kannst du natürlich auch verwenden... ist aber eher für den Adapter Source ..da du nur so an ein Object kommst</p>
<p dir="auto">also nutze die Möglichkeiten</p>
]]></description><link>https://forum.iobroker.net/post/947094</link><guid isPermaLink="true">https://forum.iobroker.net/post/947094</guid><dc:creator><![CDATA[arteck]]></dc:creator><pubDate>Wed, 15 Feb 2023 09:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfrage: Instanzen ein-&#x2F;ausschalten on Tue, 14 Feb 2023 20:30:07 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/andersmacher" aria-label="Profile: andersmacher">@<bdi>andersmacher</bdi></a> das betreibe ich so mit Daikin und go-e.<br />
wenn ich die Geräte ausschalte, stoppe ich über <em>alive</em> die Instanzen,  damit es nicht zu Fehlern im Log kommt.</p>
]]></description><link>https://forum.iobroker.net/post/946935</link><guid isPermaLink="true">https://forum.iobroker.net/post/946935</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Tue, 14 Feb 2023 20:30:07 GMT</pubDate></item></channel></rss>