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. Starten eines anderen Script

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Starten eines anderen Script

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 406 Aufrufe 3 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.
  • I Offline
    I Offline
    ignis-draco
    schrieb am zuletzt editiert von ignis-draco
    #1

    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?

    Proxmox [DMAF5] = LXC [Debian 12]
    ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • I 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?

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #2

      @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.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      I 1 Antwort Letzte Antwort
      1
      • CodierknechtC 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 Offline
        I Offline
        ignis-draco
        schrieb am zuletzt editiert von
        #3

        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.

        Proxmox [DMAF5] = LXC [Debian 12]
        ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

        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

        678

        Online

        32.6k

        Benutzer

        82.1k

        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