Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Homematic IP Fensterkontakt meldet zweifach Werte

    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

    Homematic IP Fensterkontakt meldet zweifach Werte

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

      Moin zusammen,

      Nach Umstellung auf das Homeatic IP System habe ich einen Anwendungsfall, wo ich momentan keine Lösung sehe.
      Anwendungsfall:
      Recht einfach zu sagen. Wenn ein Fenster geöffnet wird, soll eine Aktion ausgelöst werden.

      Das script fange ich als so an, damit bei Änderung eine Aktion ausgelöst wird:
      on({id: "hmip.0.devices.3014FXXXXXXXXXXXXXXX.channels.1.functionalChannelType"}, function(){

      Danach Frage ich den Wert in einer if Schleife ab, und wenn WindowOpen = true ist, wird die Aktion ausgelöst.

      Nun das Problem ... Der Homematic IP Fensterkontakt meldet beim öffnen immer zwei Werte.

      1. den Zustand bevor das Fenster geöffnet wurde (also false)
      2. den Zustand nacdem das Fenster geöffnet wurde (also true), und zwar ca 0.5 Sekunden später

      Dieses ist sehr unglücklich, da die if Schleife zuerst auf false reagiert und das true 0,5 Sekunden später verschluckt.
      Zum anderen wird beim schließen auch erst ein true und danach ein false gemeldet. Das bedeutet, dass die Aktion auch beim schließen ausgeführt wird.

      Gibt es evtl. die Möglichkeit in dem oben genannten on({id: "hmip.0.de ... noch den gewünschten zustand mitzgeben?
      Oder kann man unten im script angeben, dass die variable mit getState erst später gelesen wird, wenn nur noch der zweite Wert steht?

      Ich habe hier schon ein wenig gesucht, aber noch nichts passendes gefunden. Wäre echt klasse wenn hier jemande eine Idee hat oder schon mal auf dieses Problem gestoßen ist und gelöst hat.

      Beste Grüße,
      Leo

      UncleSam paul53 3 Replies Last reply Reply Quote 0
      • UncleSam
        UncleSam Developer @leo4455 last edited by UncleSam

        @leo4455 sagte in Homematic IP Fensterkontakt meldet zweifach Werte:

        on({id: "hmip.0.devices.3014FXXXXXXXXXXXXXXX.channels.1.functionalChannelType"}, function(){

        Wenn du in der Funktion einen Parameter angibst, erhälst du direkt das Objekt und den Datenpunkt (State) mitgeliefert:

        on({id: "hmip.0.devices.3014FXXXXXXXXXXXXXXX.channels.1.functionalChannelType"}, function(obj){
          if (obj.state.val === true) {
            ...
        
        L 1 Reply Last reply Reply Quote 0
        • UncleSam
          UncleSam Developer @leo4455 last edited by UncleSam

          @leo4455 Zudem könntest du auch schon im on() angeben, welchen Wert du haben willst. Das habe ich aber selber noch nie versucht. Hier die ganze Doku:
          https://www.iobroker.net/docu/index-81.htm?page_id=5809&lang=de#on_8211_Subscribe_on_changes_or_updates_of_some_state

          1 Reply Last reply Reply Quote 0
          • L
            leo4455 @UncleSam last edited by

            @UncleSam , besten Dank fürs feedback.

            So ähnlich habe ich es bereits gemacht und frage auf true (also geöffnet) ab.
            Das Problem ist dann jedoch, dass die Aktion auch ausgeführt wird, wenn das Fenster geschossen wird, da hier erst true und dann false gemeldet wird.

            Ich benötige jedoch immer nur den letzten Wert, damit nur beim öffnen und nicht beim schließen die Aktion ausgeführt wird.

            Gerade sehe ich auch, dass es das Attribute state.val bei mir im hmip devide nicht gibt. Aktuell frage ich auf windowOpen ab .... 😕

            UncleSam 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @leo4455 last edited by paul53

              @leo4455 sagte:

              on({id: "hmip.0.devices.3014FXXXXXXXXXXXXXXX.channels.1.functionalChannelType"}, function(){

              Triggere auf Wertänderung.

              on('hmip.0.devices.3014FXXXXXXXXXXXXXXX.channels.N.windowOpen', function(dp) { // Triggert bei Wertänderung
                 if(dp.state.val) {
                    // Aktionen bei Öffnen
                 } else {
                    // Aktionen bei Schließen
                 }
              });
              
              1 Reply Last reply Reply Quote 0
              • UncleSam
                UncleSam Developer @leo4455 last edited by

                @leo4455 sagte in Homematic IP Fensterkontakt meldet zweifach Werte:

                Gerade sehe ich auch, dass es das Attribute state.val bei mir im hmip devide nicht gibt. Aktuell frage ich auf windowOpen ab

                Das ist eine Eigenschaft vom Objekt das du in der Funktion erhältst. Das hat jeder State. Sonst kannst du ja einfach mal ein log(JSON.stringify(obj); machen in der Funktion wie ich sie beschrieben habe. Dann siehst du was da daher kommt.

                L 1 Reply Last reply Reply Quote 1
                • L
                  leo4455 @UncleSam last edited by

                  Hi @UncleSam,
                  Habe das gerade einmal so umgesetzt und was soll ich sagen ... PERFEKT!
                  Es klappt alles wie es soll.
                  Besten Dank für deine Hilfe 🙂

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  824
                  Online

                  31.9k
                  Users

                  80.1k
                  Topics

                  1.3m
                  Posts

                  heating javascript security
                  3
                  7
                  655
                  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