Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Gelöst - extendObject und Adapterneustart triggern

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Gelöst - extendObject und Adapterneustart triggern

    This topic has been deleted. Only users with topic management privileges can see it.
    • U
      Ulfhednir last edited by 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 1 Reply Last reply Reply Quote 0
      • U
        Ulfhednir @Ulfhednir last edited by

        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 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        565
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        1
        2
        246
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo