Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Skripten / Logik
  4. JavaScript
  5. Gelöst - extendObject und Adapterneustart triggern

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    940

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Gelöst - extendObject und Adapterneustart triggern

Geplant Angeheftet Gesperrt Verschoben JavaScript
2 Beiträge 1 Kommentatoren 332 Aufrufe 1 Watching
  • Ä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.
  • U Offline
    U Offline
    Ulfhednir
    schrieb am zuletzt editiert von Ulfhednir
    #1

    Hallo Zusammen,

    ich habe ein "kleines" Problem. Seit geraumer Zeit funktioniert ein kleines Konstrukt nicht mehr. Ich habe hier jetzt schon eine kleine Ewigkeit dran gehockt, komme aber leider nicht weiter.
    Daher hoffe ich, dass ihr weiterhelfen könnt. Mein Ziel: Ich möchte die URL im Parser-Adapter updaten.

    Folgende Schrittfolge hatte ich hier: Die URL wird über eine manuelle angelegte Variable (ManuelleVariablen.0.Webseite_URL) über die VIS eingegeben. Wenn eine Änderung erfolgt, wird diese getriggert und ein Skript aktualisiert mittels extendObject die Objektdaten der Parser-Datenpunkte (z.B. parser.0.Webseite). Im Anschluss wird der Parser-Adapter neu gestartet.

    Folgendes funktionierte mal in Kombination:

    Skript 1 - Objektdaten aktualisieren

    var URL;
    URL = (getState("ManuelleVariablen.0.Webseite_URL").val)
    
    extendObject('parser.0.Webseite', {native: {link: (URL)}});
    extendObject('parser.0.Webseite2', {native: {link: (URL)}});
    extendObject('parser.0.Webseite3', {native: {link: (URL)}});
    extendObject('parser.0.Webseite4', {native: {link: (URL)}});
    extendObject('parser.0.Webseite_pic', {native: {link: (URL)}});
    

    soll die hinterlegten URLs im Parser-Adapter aktualisieren. Wenn ich im Skript-Editor auf den "Neustart"-Button (rechts neben Datei anzeigen) klicke, funktioniert das Skript und alle obigen Objekte erhalten eine andere URL. Wenn ich allerdings auf den Pfeil "Skript ausführen" klicke, funktioniert das nicht. (Warum überhaupt?)

    Für den Neustart des Adapters hatte ich folgendes integriert:

    Skript 2 - Parser-Adapter neustarten

    var Instanz, start;
    
    async function Adapter_start_stop(Instanz, start) {
        extendObject('system.adapter.' + Instanz, {common: {enabled: start}});
    }
    
    async function Adapter_neustart(Instanz) {
        extendObject('system.adapter.' + Instanz, {common: {enabled: true}});
    }
    
    await Adapter_neustart('parser.0');
    

    Über Skript 3.) wird oder soll das Ganze dann getriggert werden.

    on({id: 'ManuelleVariablen.0.Webseite_URL', change: "ne"}, async function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      setState("javascript.0.scriptEnabled.Parser.Parser_Instanz_neustarten"/*scriptEnabled.Parser.Parser_Instanz_neustarten*/, true);
      setState("javascript.0.scriptEnabled.Parser.Webseite_Parser_URL"/*scriptEnabled.Parser.Webseite_Parser_URL*/, true);
      setStateDelayed("javascript.0.scriptEnabled.Parser.Parser_Instanz_neustarten"/*scriptEnabled.Parser.Parser_Instanz_neustarten*/, false, 1000, false);
      setStateDelayed("javascript.0.scriptEnabled.Parser.Webseite_Parser_URL"/*scriptEnabledWebseite_Parser_URL*/, false, 1000, false);
    });
    

    Warum auch immer, funktioniert das Skript nicht mehr. Ich bin mir nicht bewusst, dass ich im Halbsuff irgendetwas daran verändert hätte.
    Die Instanz ist identisch geblieben. Ich vermute beinah, dass es im Zusammenhang mit irgendeinem Update besteht.
    Unabhängig davon können die Skripte möglicherweise auch konsolidiert werden.

    Daher die Frage:
    Wie kriege ich den Trigger + Aktualisierung der Objektdaten + Adapterneustart in ein Skript zusammengewurstet?
    Das wäre mir jedenfalls aus Übersichtsgründen das Liebste.

    U 1 Antwort Letzte Antwort
    0
    • U Ulfhednir

      Hallo Zusammen,

      ich habe ein "kleines" Problem. Seit geraumer Zeit funktioniert ein kleines Konstrukt nicht mehr. Ich habe hier jetzt schon eine kleine Ewigkeit dran gehockt, komme aber leider nicht weiter.
      Daher hoffe ich, dass ihr weiterhelfen könnt. Mein Ziel: Ich möchte die URL im Parser-Adapter updaten.

      Folgende Schrittfolge hatte ich hier: Die URL wird über eine manuelle angelegte Variable (ManuelleVariablen.0.Webseite_URL) über die VIS eingegeben. Wenn eine Änderung erfolgt, wird diese getriggert und ein Skript aktualisiert mittels extendObject die Objektdaten der Parser-Datenpunkte (z.B. parser.0.Webseite). Im Anschluss wird der Parser-Adapter neu gestartet.

      Folgendes funktionierte mal in Kombination:

      Skript 1 - Objektdaten aktualisieren

      var URL;
      URL = (getState("ManuelleVariablen.0.Webseite_URL").val)
      
      extendObject('parser.0.Webseite', {native: {link: (URL)}});
      extendObject('parser.0.Webseite2', {native: {link: (URL)}});
      extendObject('parser.0.Webseite3', {native: {link: (URL)}});
      extendObject('parser.0.Webseite4', {native: {link: (URL)}});
      extendObject('parser.0.Webseite_pic', {native: {link: (URL)}});
      

      soll die hinterlegten URLs im Parser-Adapter aktualisieren. Wenn ich im Skript-Editor auf den "Neustart"-Button (rechts neben Datei anzeigen) klicke, funktioniert das Skript und alle obigen Objekte erhalten eine andere URL. Wenn ich allerdings auf den Pfeil "Skript ausführen" klicke, funktioniert das nicht. (Warum überhaupt?)

      Für den Neustart des Adapters hatte ich folgendes integriert:

      Skript 2 - Parser-Adapter neustarten

      var Instanz, start;
      
      async function Adapter_start_stop(Instanz, start) {
          extendObject('system.adapter.' + Instanz, {common: {enabled: start}});
      }
      
      async function Adapter_neustart(Instanz) {
          extendObject('system.adapter.' + Instanz, {common: {enabled: true}});
      }
      
      await Adapter_neustart('parser.0');
      

      Über Skript 3.) wird oder soll das Ganze dann getriggert werden.

      on({id: 'ManuelleVariablen.0.Webseite_URL', change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        setState("javascript.0.scriptEnabled.Parser.Parser_Instanz_neustarten"/*scriptEnabled.Parser.Parser_Instanz_neustarten*/, true);
        setState("javascript.0.scriptEnabled.Parser.Webseite_Parser_URL"/*scriptEnabled.Parser.Webseite_Parser_URL*/, true);
        setStateDelayed("javascript.0.scriptEnabled.Parser.Parser_Instanz_neustarten"/*scriptEnabled.Parser.Parser_Instanz_neustarten*/, false, 1000, false);
        setStateDelayed("javascript.0.scriptEnabled.Parser.Webseite_Parser_URL"/*scriptEnabledWebseite_Parser_URL*/, false, 1000, false);
      });
      

      Warum auch immer, funktioniert das Skript nicht mehr. Ich bin mir nicht bewusst, dass ich im Halbsuff irgendetwas daran verändert hätte.
      Die Instanz ist identisch geblieben. Ich vermute beinah, dass es im Zusammenhang mit irgendeinem Update besteht.
      Unabhängig davon können die Skripte möglicherweise auch konsolidiert werden.

      Daher die Frage:
      Wie kriege ich den Trigger + Aktualisierung der Objektdaten + Adapterneustart in ein Skript zusammengewurstet?
      Das wäre mir jedenfalls aus Übersichtsgründen das Liebste.

      U Offline
      U Offline
      Ulfhednir
      schrieb am zuletzt editiert von
      #2

      Scheint ein Bug gewesen zu sein. Problem ist mit Update der Script-Engine behoben.

      5.3.3 (2022-03-06)
      (bluefox) Added async functions: createStateAsync, deleteStateAsync
      5.3.2 (2022-03-06)
      (Apollon77) fix problem that scripts were not starting when scriptsEnabled State was triggered (or startScript was used)
      (Apollon77) Make sure callbacks on startScript/stopScript work and Async variants also resolve
      (Apollon77) Make sure startScriptAsync, stopScriptAsync and runScriptAsync resolve in debug mode too
      5.3.1 (2022-03-03)

      1 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      724

      Online

      32.6k

      Benutzer

      82.2k

      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