Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Verständnisfrage: Instanzen ein-/ausschalten

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.5k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    663

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

Verständnisfrage: Instanzen ein-/ausschalten

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
4 Beiträge 3 Kommentatoren 401 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    Andersmacher
    schrieb am zuletzt editiert von
    #1

    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 Instanzname" erzeugt.
    Weil @paul53 in einem Post 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:

    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.");
      }
    }); 
    


    Sowohl mein Blockly, als auch der "direkte" JS-Code funktionieren aus meiner Sicht.

    Was ich mich zwischenzeitlich jedoch frage:
    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/adaptername/Instanznummer/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.

    ioBroker auf Raspi4B 8GB Debian(12) 64Bit

    HomoranH arteckA 2 Antworten Letzte Antwort
    0
    • A Andersmacher

      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 Instanzname" erzeugt.
      Weil @paul53 in einem Post 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:

      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.");
        }
      }); 
      


      Sowohl mein Blockly, als auch der "direkte" JS-Code funktionieren aus meiner Sicht.

      Was ich mich zwischenzeitlich jedoch frage:
      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/adaptername/Instanznummer/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.

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @andersmacher das betreibe ich so mit Daikin und go-e.
      wenn ich die Geräte ausschalte, stoppe ich über alive die Instanzen, damit es nicht zu Fehlern im Log kommt.

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • A Andersmacher

        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 Instanzname" erzeugt.
        Weil @paul53 in einem Post 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:

        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.");
          }
        }); 
        


        Sowohl mein Blockly, als auch der "direkte" JS-Code funktionieren aus meiner Sicht.

        Was ich mich zwischenzeitlich jedoch frage:
        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/adaptername/Instanznummer/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.

        arteckA Offline
        arteckA Offline
        arteck
        Developer Most Active
        schrieb am zuletzt editiert von arteck
        #3

        @andersmacher sagte in Verständnisfrage: Instanzen ein-/ausschalten:

        Was spricht dagegen,

        nix... auser solltest nicht an/aus/an/aus/an/aus ..machen.. also hinteriennadner

        das extendObject kannst du natürlich auch verwenden... ist aber eher für den Adapter Source ..da du nur so an ein Object kommst

        also nutze die Möglichkeiten

        zigbee hab ich, zwave auch, nuc's genauso und HA auch

        A 1 Antwort Letzte Antwort
        0
        • arteckA arteck

          @andersmacher sagte in Verständnisfrage: Instanzen ein-/ausschalten:

          Was spricht dagegen,

          nix... auser solltest nicht an/aus/an/aus/an/aus ..machen.. also hinteriennadner

          das extendObject kannst du natürlich auch verwenden... ist aber eher für den Adapter Source ..da du nur so an ein Object kommst

          also nutze die Möglichkeiten

          A Offline
          A Offline
          Andersmacher
          schrieb am zuletzt editiert von
          #4

          @arteck und @Homoran Danke für die Infos / Antworten!

          ioBroker auf Raspi4B 8GB Debian(12) 64Bit

          1 Antwort Letzte Antwort
          0

          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

          Registrieren Anmelden
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate
          FAQ Cloud / IOT
          HowTo: Node.js-Update
          HowTo: Backup/Restore
          Downloads
          BLOG

          367

          Online

          32.9k

          Benutzer

          82.9k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe