Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. OnChange weiter einschränken (Ursprung)

    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

    OnChange weiter einschränken (Ursprung)

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Raducanu last edited by

      Hallo Zusammen,

      ich habe hier zwei Javascript Scripte laufen und stehe gerade vor einen kleines Problem:

      Das erste Script führt ein Python Consolenscript aus und Parsed dann eine JSON Response des Scriptes und schreibt dann Werte in IOBroker States.
      (Auslesen einer Klimaanlange)
      Das zweite Script führt bei Änderungen dieser States dass Python Script aus und verwendet Werte aus den States als Parameter.
      (Setzen von Werte in der Klimaanlage)

      Um einen "Loop" zu verhindern (Script zwei Startet sobald Script eins was ändert), habe ich in Script zwei

      if ((obj.state ? obj.state.from : "") != 'system.adapter.javascript.0'){
      ...
      }
      

      eingefügt. Das Funktioniert auch wunderbar.

      Nun möchte ich allerdings über ein weiteres Script doch States Ändern so dass das Script zwei getriggert wird.
      Nur erfolgt dieses natürlich nicht, da das dritte Script auch von "system.adapter.javascript.0" kommt.

      Welche Möglichkeiten gibt es dieses Problem zu lösen?

      Kann man den Scriptnamen mit angeben? Oder hilft es nur eine zweite Javascript Instanz zu installieren?

      Vielen Dank

      UncleSam 1 Reply Last reply Reply Quote 0
      • UncleSam
        UncleSam Developer @Raducanu last edited by

        @Raducanu Die saubere Lösung wäre das ack zu benutzen:

        • Das erste Skript setzt den Wert mit ack: true
        • Das zweite Skript reagiert nur auf Changes mit ack: true
        • Wer sonst den State ändert, setzt ack nicht auf true

        Eine etwas ausführlichere Diskussion findest du hier:
        https://forum.iobroker.net/topic/37652/dp-wurde-aktualisiert-anerkannt-ist-egal-update-befehl/8

        Grundsätzlich gilt:
        Befehl: ack=false
        Update: ack=true

        So arbeiten alle Adapter.

        R 1 Reply Last reply Reply Quote 1
        • R
          Raducanu @UncleSam last edited by

          @UncleSam

          Vielen Dank, ich glaube dass mir das weiterhilft.

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

          Support us

          ioBroker
          Community Adapters
          Donate

          921
          Online

          31.9k
          Users

          80.1k
          Topics

          1.3m
          Posts

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