Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Starten eines anderen Script

    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

    Starten eines anderen Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      ignis-draco last edited by ignis-draco

      Hi,

      Ich möchte in einem Script(A) ein anderes Script(B) starten und dann in A warten bis sich B beendet.
      In der Doku gibt es ja runScript und startScript leider ist mir der Unterschied nicht klar bzw. wird nicht erklärt.
      Beides gibt es auch als Async. Leider sieht es so aus als ob alle Varianten nicht das machen was ich gerne möchte.

      Script dev3

      console.log("dev3 start")
      await sleep(4000)
      console.log("dev3 end ")
      stopScript("dev.dev3")
      

      script dev4

      console.log("dev4 on")
      
      runScript("dev.dev3") // Version 1
      startScript("dev.dev3") // Version 2
      await runScriptAsync("dev.dev3") // Version 3
      await startScriptAsync("dev.dev3") // version 4
      
      console.log("dev4 off")
      stopScript("dev.dev4")
      

      Könnte mir bitte jemand sagen wo ich meinen Fehler habe?

      Codierknecht 1 Reply Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @ignis-draco last edited by Codierknecht

        @ignis-draco sagte in Starten eines anderen Script:

        Könnte mir bitte jemand sagen wo ich meinen Fehler habe?

        Du kannst zwar in einem Script ein anders Script starten, aber Du erhältst keinerlei Info darüber, ob und wann das andere Script "durchgelaufen" ist.
        Das ist auch so ohne weiteres gar nicht möglich. Definiere mal "durchgelaufen".

        Das aufgerufene Script könnte sich am Ende mit stopScript() selbst beenden.

        Oder Du könntest Dir mit einem Hilfs-DP helfen:
        Erzeuge einen DP z.B. 0_userdata.0.running.
        Diesen setzt Du im aufgerufenen Script gleich zu Beginn auf true und am Ende auf false.
        Im aufrufenden Script reagierst Du per Trigger darauf:

        on({ id: '0_userdata.0.running', change: 'lt' }, function (obj) {
        });
        

        Aber wozu soll das Ganze gut sein?
        Das klingt alles sehr nach klassischer prozeduraler Programmierung.
        Womöglich bist Du da völlig auf dem Holzweg.
        Scripte werden im ioBroker üblicherweise nicht gestartet und gestoppt. Sie laufen einfach durch und reagieren auf Ereignisse.

        I 1 Reply Last reply Reply Quote 1
        • I
          ignis-draco @Codierknecht last edited by

          Hi
          @codierknecht sagte in Starten eines anderen Script:

          Das aufgerufene Script könnte sich am Ende mit stopScript() selbst beenden.

          Genau das mache ich ja. Siehe Zeile 4 in "dev3". jedoch müsste ich ja Blockierend warten auf "dev3" und ich suche dafür eine Möglichkeit.

          @codierknecht sagte in Starten eines anderen Script:

          Oder Du könntest Dir mit einem Hilfs-DP helfen:
          Daran hatte auch auch gedacht. Hatte gehofft das es eine bessere Möglichkeit gibt.

          @codierknecht sagte in Starten eines anderen Script:

          Aber wozu soll das Ganze gut sein?
          Das klingt alles sehr nach klassischer prozeduraler Programmierung.
          Womöglich bist Du da völlig auf dem Holzweg.

          In diesem Falle ist es auch so (nicht das mit dem Holzweg). Ich würde das an genau zwei Stellen benötigen.

          1. Bei meinen _Init Scripten die mir meinem Object Baum erstellen (Wird nur 1 mal aufgerufen wenn neue Hardware z.b. Fenster sensor eingebunden wird).
          2. Bei meinen TestScripte ich baue sehr universell einsetzbare Scripte um dieses zu Testen habe ich TestScripte gebaut die Datenpunkte setzten und schauen ob meine Scripte sich richtig verhalten. Diese Rufe ich nur auf wenn ich was in der Programmierung ändere habe und sicher gehen will das alles sich noch so verhält wie gewollt.
            Um es übersichtliche zu haben sind die Test in einzelnen Dateien Gruppiert. Und da auch die Zeit eine rolle spielt daueren manche Test bis zu 3 Minuten und davon gibt es unterschiedliche viele in den einzelnen Szenarios.

          Aber ich werde mir dann wohl was mit dem Datenpunkt bauen müssen.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          705
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          2
          3
          279
          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