Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Doppeltes ausführen einer Funktion

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    972

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.0k

Doppeltes ausführen einer Funktion

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 3 Kommentatoren 1.0k Aufrufe
  • Ä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.
  • J Offline
    J Offline
    JoergC66
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich weiß -denn ich habe schon viel gesucht :D -dieses Thema gab es schon, aber keine angebotene Lösung hat funktioniert.

    Folgendes ganz simples Programm wird zweimal abgearbeitet, wenn ich mit dem Messenger "Telegram" einen Virtuellen Button der CCU drücke.

    on({id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT'}, function (obj) {
            console.log("Antasten= " + antasten);
      });
    

    in der Konsole steht dann:

    22:16:51.137 [info] javascript.0 script.js.Telegram.Alarmanlage: Antasten= true

    22:16:51.197 [info] javascript.0 script.js.Telegram.Alarmanlage: Antasten= true

    Alles was ich Netz gefunden habe z.B {id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT', change: "false"} habe ich erfolglos probiert.

    Wäre echt nett, wenn hier jemand nem alten Mann aufs Pferdchen helfen könnte :)

    Danke dafür und Gruß Jörg

    1 Antwort Letzte Antwort
    0
    • blauholstenB Offline
      blauholstenB Offline
      blauholsten
      Developer
      schrieb am zuletzt editiert von
      #2

      @JoergC66:

      Hallo,

      ich weiß -denn ich habe schon viel gesucht :D -dieses Thema gab es schon, aber keine angebotene Lösung hat funktioniert.

      Folgendes ganz simples Programm wird zweimal abgearbeitet, wenn ich mit dem Messenger "Telegram" einen Virtuellen Button der CCU drücke.

      on({id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT'}, function (obj) {
              console.log("Antasten= " + antasten);
        });
      

      in der Konsole steht dann:

      22:16:51.137 [info] javascript.0 script.js.Telegram.Alarmanlage: Antasten= true

      22:16:51.197 [info] javascript.0 script.js.Telegram.Alarmanlage: Antasten= true

      Alles was ich Netz gefunden habe z.B {id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT', change: "false"} habe ich erfolglos probiert.

      Wäre echt nett, wenn hier jemand nem alten Mann aufs Pferdchen helfen könnte :)

      Danke dafür und Gruß Jörg `

      on({id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT'}, function (obj) {
              if(obj.state.val)console.log("Antasten= " + obj.state.val);
        });
      

      Woher kommt bei dir antasten

      Entwickler vom: - Viessman Adapter
      - Alarm Adapter

      1 Antwort Letzte Antwort
      0
      • J Offline
        J Offline
        JoergC66
        schrieb am zuletzt editiert von
        #3

        Das ist nur eine Variable, die ich hier im Beispiel vergessen habe zu löschen, sie diente der Fehlersuche, hat also keine Bedeutung.

        Was macht das : obj.state.val ??

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #4

          Hallo,

          ich spekuliere mal:

          Der "Tastendruck" auf der virtuellen Taste löste auch ein "Loslassen" aus. Das heißt, die Funktion wird beim Antasten, sowie beim Lostasten ausgelöst.

          Deine Bedingung ist durch die verwendete Kurzschreibweise ein Abo auf Veränderung des Wertes. Abonniere mal den Wert true und prüfe die Logausgabe:

          
          on({id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT', val: true}, function (obj) {
                  console.log("Antasten= " + obj.state.val);
            });
          
          

          Gruß

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Antwort Letzte Antwort
          0
          • J Offline
            J Offline
            JoergC66
            schrieb am zuletzt editiert von
            #5

            Erstmal vielen Dank für eure Mühen!!

            @pix Das hatte ich schon probiert, brachte keine Änderung.

            Die Antwort von blauholsten funktioniert.

            @blauholsten Was genau passiert da und warum ist das nötig?

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #6

              Ich nehme die blauholstens Antwort mal vorweg:

              on({id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT'}, function (obj) {
              

              auf Änderung, Callback in Objekt mit Namen "obj"

               if(obj.state.val)console.log("Antasten= " + obj.state.val);
              

              Wenn der Wert des Objektes (obj.state.val) wahr ist (Kurzschreibweise von obj.state.val === true), dann erfolgt die Logausgabe des Wertes des Objektes.

              Also wird nur bei true ins Log geschrieben, nicht bei false.

              Gruß

              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • J Offline
                J Offline
                JoergC66
                schrieb am zuletzt editiert von
                #7

                Ah ja, ich verstehe …. ein bischen 😢

                Vielen Dank für die Erklärung.

                Doch dieses Problem verfolgt mich:

                on({id: "hm-rpc.0.KEQ0111275.2.PRESS_SHORT"/*HM-RC-X KEQ0111275:2.PRESS_SHORT*/}, function (obj) {	//Taste auf Fernbedienung
                    if(obj.state.val)
                        Alarmanlage_an();
                });
                
                function Alarmanlage_an(){
                    if (!getState("hm-rpc.0.KEQ0030837.1.STATE").val){		//Wenn Fensterkontakt "zu"
                        setState("hm-rega.0.1587"/*Alarmanlage*/, "1");		//Systemvariable der CCU auf 1 = Scharf
                    }     
                }
                
                on({id: "hm-rega.0.1587"/*Alarmanlage*/, change: "1"}, function (obj) {	//Wenn Alarmanlage scharf
                     if(obj.state.val){
                        request("http://192.168.2.144:50000/track=Die_Alarmanlage_ist_an.mp3");	//Tablet soll ansage mache- geht aber nur eine Zeitlang, dann bleibt alles stumm
                        sendTo("telegram", "send", {
                            text: (String('Alarmanlage ist ') + String((obj.state ? obj.state.val : "") ? 'an' : 'aus'))
                        });
                     }
                  });
                

                Das log-File sieht dann so aus:

                20:32:06.546	[info]	javascript.0 script.js.Telegram.Alarmanlage: getState(id=hm-rpc.0.KEQ0030837.1.STATE, timerId=0) => {"val":false,"ack":true,"ts":1517048026193,"q":0,"from":"system.adapter.hm-rpc.0","lc":1517048026193}
                20:32:06.548	[warn]	javascript.0 at Alarmanlage_an (script.js.Telegram.Alarmanlage:25:9)
                20:32:06.548	[warn]	javascript.0 at Object. (script.js.Telegram.Alarmanlage:15:9)
                20:32:06.548	[info]	javascript.0 script.js.Telegram.Alarmanlage: setForeignState(id=hm-rega.0.1587, state="1")
                20:32:06.548	[info]	javascript.0 script.js.Telegram.Alarmanlage: In dieser Funktion die Alarmanlage anschalten.
                20:32:06.565	[info]	javascript.0 script.js.Telegram.Alarmanlage: sendTo(adapter=telegram, cmd=send, msg={"text":"Alarmanlage ist an"})
                20:32:17.746	[info]	javascript.0 script.js.Telegram.Alarmanlage: sendTo(adapter=telegram, cmd=send, msg={"text":"Alarmanlage ist an"})
                

                Die Warnungen beziehen sich auf die Zeile mit dem "setState …"

                Also wieder diese blöde doppelte Ausführung. Heulsmiley

                Was mache ich denn nun wieder falsch?

                Gruß Jörg

                1 Antwort Letzte Antwort
                0
                • blauholstenB Offline
                  blauholstenB Offline
                  blauholsten
                  Developer
                  schrieb am zuletzt editiert von
                  #8

                  @pix:

                  Ich nehme die blauholstens Antwort mal vorweg:

                  on({id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT'}, function (obj) {
                  

                  auf Änderung, Callback in Objekt mit Namen "obj"

                   if(obj.state.val)console.log("Antasten= " + obj.state.val);
                  

                  Wenn der Wert des Objektes (obj.state.val) wahr ist (Kurzschreibweise von obj.state.val === true), dann erfolgt die Logausgabe des Wertes des Objektes.

                  Also wird nur bei true ins Log geschrieben, nicht bei false.

                  Gruß

                  Pix `
                  Danke…

                  Entwickler vom: - Viessman Adapter
                  - Alarm Adapter

                  1 Antwort Letzte Antwort
                  0

                  Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                  Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                  Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                  Registrieren Anmelden
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  370

                  Online

                  33.0k

                  Benutzer

                  83.6k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2026
                  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