Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. "Badfenster offen" funktioniert nur teilweise

    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

    "Badfenster offen" funktioniert nur teilweise

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

      Hallo zusammen,

      ich habe mir - mit einlesen und Copy&Paste aus diesem Forum - das Blockly hier zusammengebastelt.

      Bildschirmfoto 2021-11-06 um 20.05.45.png

      Das Skript funktioniert tadellos, sobald ich nur EIN Fenster öffne.
      Öffne ich BEIDE Fenster, erhalte ich die Meldung alle 15 Minuten (unabhängig davon, ob ich die Fenster bereits innerhalb den 15 Minuten geschlossen habe oder erst nachdem ich daran erinnert wurde).

      Stehe ich auf dem Schlauch?

      paul53 Thomas4170 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @hertob81 last edited by

        @hertob81 sagte: Öffne ich BEIDE Fenster, erhalte ich die Meldung alle 15 Minuten

        Es muss verhindert werden, dass das Intervall beim Öffnen des zweiten Fensters noch einmal gestartet wird, da es sich dann nicht mehr stoppen lässt. Vorschlag:

        Bild_2021-11-06_202425.png

        Anmerkung: Man muss erst eine dummy-Variable erstellen, um auf die Timer-Variable Intervall zugreifen zu können.

        1 Reply Last reply Reply Quote 0
        • Thomas4170
          Thomas4170 @hertob81 last edited by

          @hertob81
          Moin, so wie ich das sehe übergibst Du ja auch nur einen Wert in der Benachrichtigung.
          Warum brauchst Du "sonst falls" ?

          09aaea05-e65f-4c4e-a588-fb854102fe3c-grafik.png

          Für mich erscheint das logischer

          H 1 Reply Last reply Reply Quote 0
          • H
            hertob81 last edited by

            @paul53
            Ich wäre nie darauf gekommen, dass durch das öffnen des zweiten Fensters das Programm nochmal gestartet wird und sich nicht mehr stoppen lässt....
            Aus diesem Grund habe ich eigentlich "sonst falls" -> "Fensterkontakte auf TRUE" damit, wenn die Fenster zu sind, das ganze gestoppt wird.
            Ist aber wohl ein Denkfehler.

            @Thomas4170
            Zu deiner Frage "sonst falls" siehe oben. Ich übergebe - aus Spass - die Außentemperatur, daher nur ein Wert.
            Du benutzt bei Dir "TIMEOUT" ich bzw. @paul53 hat "Intervall". Komme ich mit beiden ans Ziel?

            Und Danke für die schnelle Hilfe! Ich habe es jetzt aktuell so...

            Bildschirmfoto 2021-11-06 um 20.42.06.png

            <xml xmlns="https://developers.google.com/blockly/xml">
              <variables>
                <variable type="interval" id="Intervall">Intervall</variable>
              </variables>
              <block type="on_ext" id="|dH|olOMYVn~H%Jn|nyS" x="-487" y="-87">
                <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="Nk5ABz@dhUhd8bYqb7IE">
                    <field name="oid">zigbee.0.00158d0006d416f7.opened</field>
                  </shadow>
                </value>
                <value name="OID1">
                  <shadow type="field_oid" id="bR^W?^XUx~f2ep-bReP.">
                    <field name="oid">zigbee.0.00158d0006d6892c.opened</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="controls_if" id="]6NmY5Arm*oC(/C4C9fx">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <block type="logic_operation" id="?9`npQFK0yr$J{g7m,qy" inline="false">
                        <field name="OP">OR</field>
                        <value name="A">
                          <block type="logic_compare" id="ir8%O$UIa_2vun^eR:gs">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="get_value" id="-#)apV4ko?9bjc34q,cp">
                                <field name="ATTR">val</field>
                                <field name="OID">zigbee.0.00158d0006d416f7.opened</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="logic_boolean" id="E_QD2`tR^rij]xRveiSk">
                                <field name="BOOL">TRUE</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_compare" id="fIzAp1iVwg3QXon;T]eV">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="get_value" id="K;LAH/JOXy:Pz2gWPtw8">
                                <field name="ATTR">val</field>
                                <field name="OID">zigbee.0.00158d0006d6892c.opened</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="logic_boolean" id="f,3g-P=S_+71(~v9@)Q9">
                                <field name="BOOL">TRUE</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="controls_if" id="WdB*x=Yb1s5`s%1;8sb8">
                        <value name="IF0">
                          <block type="logic_operation" id="=!,%0^7{Nr,#RGpgyjbO" inline="false">
                            <field name="OP">AND</field>
                            <value name="A">
                              <block type="logic_compare" id="oAm7uGv*1hz~!d7h.+7|">
                                <field name="OP">LT</field>
                                <value name="A">
                                  <block type="get_value" id="4Q+ym)29|XcJ)|[}nB^e">
                                    <field name="ATTR">val</field>
                                    <field name="OID">weatherunderground.0.forecast.current.temp</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_number" id="=DyNr]:#+Kvba%|LYfs%">
                                    <field name="NUM">15</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <value name="B">
                              <block type="logic_negate" id="#rF.Zz_,)nYa)iDBk9y+">
                                <value name="BOOL">
                                  <block type="variables_get" id="-NmcPMz/A)TI;vo+w:KC">
                                    <field name="VAR" id="Intervall" variabletype="interval">Intervall</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="timeouts_setinterval" id="7%/Ll?G,CpruwYL_;RTc">
                            <field name="NAME">Intervall</field>
                            <field name="INTERVAL">15</field>
                            <field name="UNIT">min</field>
                            <statement name="STATEMENT">
                              <block type="control" id="l/2nAsk,Yq0HEsysAzGu">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">alexa2.0.Echo-Devices.G090U50990850U2X.Commands.speak-volume</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="math_number" id="Pi-hhOCBN(6E`C7=3fS1">
                                    <field name="NUM">20</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="control" id="j*|p}Jx{9cW6+-.IqSSx">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                    <field name="OID">alexa2.0.Echo-Devices.G090U50990850U2X.Commands.speak</field>
                                    <field name="WITH_DELAY">TRUE</field>
                                    <field name="DELAY_MS">1000</field>
                                    <field name="UNIT">ms</field>
                                    <field name="CLEAR_RUNNING">FALSE</field>
                                    <value name="VALUE">
                                      <block type="text_join" id="!xmEaZVK3x;(p,#-.3~y" inline="false">
                                        <mutation items="3"></mutation>
                                        <value name="ADD0">
                                          <block type="text" id="c:zqL~*PW9u]u6e8a$*1">
                                            <field name="TEXT">Achtung, im Bad ist seit 15 Minuten ein Fenster offen und die Außentemperatur beträgt </field>
                                          </block>
                                        </value>
                                        <value name="ADD1">
                                          <block type="get_value" id="Fv;Xty[=-uMXc3v@U?%)">
                                            <field name="ATTR">val</field>
                                            <field name="OID">weatherunderground.0.forecast.current.temp</field>
                                          </block>
                                        </value>
                                        <value name="ADD2">
                                          <block type="text" id="MUm7dd#|B~9ZAMH}qLZM">
                                            <field name="TEXT"> Grad.</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="whatsapp-cmb" id=".IiKmKd(09qzP}**y#S|">
                                        <field name="INSTANCE"></field>
                                        <field name="LOG"></field>
                                        <value name="MESSAGE">
                                          <shadow type="text" id="GXbO@][G8;9C9qXL#jMx">
                                            <field name="TEXT">Badfenster offen!</field>
                                          </shadow>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="timeouts_clearinterval" id="g!d_u2QD0J@cFB#%4,@-">
                        <field name="NAME">Intervall</field>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
            </xml>
            
            1 Reply Last reply Reply Quote 0
            • Thomas4170
              Thomas4170 last edited by

              Ich habe timeout nur hastig genommen. Timeout wäre eine Verzögerung für das Senden.

              H 1 Reply Last reply Reply Quote 0
              • H
                hertob81 @Thomas4170 last edited by

                @thomas4170 sagte in Hinweis "Badfenster offen" funktioniert nur teilweise:

                @hertob81
                Moin, so wie ich das sehe übergibst Du ja auch nur einen Wert in der Benachrichtigung.
                Warum brauchst Du "sonst falls" ?

                09aaea05-e65f-4c4e-a588-fb854102fe3c-grafik.png

                Für mich erscheint das logischer

                Verständnissfrage:
                Warum packst Du das "STOP" oben rein, und nicht ganz unten?

                paul53 1 Reply Last reply Reply Quote 0
                • H
                  hertob81 @Thomas4170 last edited by

                  @thomas4170 sagte in Hinweis "Badfenster offen" funktioniert nur teilweise:

                  Ich habe timeout nur hastig genommen. Timeout wäre eine Verzögerung für das Senden.

                  Ah okay, dann ist Intervall okay?

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

                    @hertob81 sagte: Warum packst Du das "STOP" oben rein

                    Damit wird bei jeder Änderung eines Fensters gestoppt und bei Öffnen eines Fensters das Intervall neu gestartet. Unterschied: In meinem Vorschlag läuft das bereits gestartete Intervall weiter.

                    H 1 Reply Last reply Reply Quote 0
                    • Thomas4170
                      Thomas4170 last edited by Thomas4170

                      Ich habe auch ein Blockly mit "Fenster länger als 20 min. auf dann Heizung auf 18 °C" Den Stop hatte ich auch am Ende und mal das Skipt und mal nicht. Irgendwo habe ich mal gesehen das es besser ist. Seitdem läuft es auch ohne Probleme. Ich bin allerdings auch nicht so fit mit Blockly und noch fleißig am dazulernen. Paul ist sicherlich professioneller.

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Thomas4170 last edited by

                        @thomas4170 sagte in Hinweis "Badfenster offen" funktioniert nur teilweise:

                        Irgendwo habe ich mal gesehen das es besser ist

                        weil sonst bei gleichem Trigger der Timeot ein zweites mal gestartet wird, was dazu führt, dass er nicht mehr gestoppt werden kann.
                        Deswegen muss der laufende Timeout vor einem erneuten Start erst gestoppt werden.

                        Thomas4170 1 Reply Last reply Reply Quote 1
                        • Thomas4170
                          Thomas4170 @Homoran last edited by

                          @homoran

                          Cool danke, jetzt kenne ich den Grund 👍

                          1 Reply Last reply Reply Quote 0
                          • H
                            hertob81 @paul53 last edited by

                            @paul53 sagte in Hinweis "Badfenster offen" funktioniert nur teilweise:

                            @hertob81 sagte: Warum packst Du das "STOP" oben rein

                            Damit wird bei jeder Änderung eines Fensters gestoppt und bei Öffnen eines Fensters das Intervall neu gestartet. Unterschied: In meinem Vorschlag läuft das bereits gestartete Intervall weiter.

                            Danke für die Info, habe es ein paar Mal lesen müssen bevor ich es verstanden habe.

                            H 1 Reply Last reply Reply Quote 0
                            • H
                              hertob81 @hertob81 last edited by

                              @paul53 oder @Homoran

                              Könntet Ihr bitte kurz da drauf schauen, ich verstehe nicht, warum ich keine Meldung erhalte. Ich habe das Skript oben kopiert aber so modifiziert, dass im Kinderzimmer die Innentemperatur mit abgefragt werden soll:
                              Wenn das Fenster offen ist UND die Innentemperatur unter 21 °C fällt soll die Meldung abgesetzt werden, jedoch nur zwischen 7.00 Uhr und 19.00 Uhr.
                              Wie gesagt, es passiert nix:

                              Bildschirmfoto 2021-11-21 um 10.13.20.png

                              Danke euch!

                              J 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                @hertob81 sagte in "Badfenster offen" funktioniert nur teilweise [GELÖST]:

                                Wie gesagt, es passiert nix:

                                dann setz mal debug Bausteine an die kritischen Stellen um zu sehen wo es hängt

                                1 Reply Last reply Reply Quote 0
                                • J
                                  JoergH @hertob81 last edited by

                                  @hertob81

                                  Wie oft sendet denn der Thermostat die Temperatur? Wenn der nur alle 10 Minuten oder so sendet, dann kann das natürlich ewig dauern bis alle Bedingungen erfüllt sind...

                                  H 1 Reply Last reply Reply Quote -1
                                  • H
                                    hertob81 @JoergH last edited by

                                    @joergh und @Homoran

                                    Ich habe den Fehler entdeckt, siehe screenshot:

                                    Bildschirmfoto 2021-11-21 um 10.37.26.png

                                    Jetzt kommt die Meldung, allerdings auch noch, wenn ich das Fenster geschlossen habe.
                                    Ich vermute, das Skript wird noch über die Raumtemperatur getriggert.

                                    Für mein Verständnis benötige ich noch eine Bedingung, dass das Skript nicht mehr getriggert wird, sobald das Fenster zu ist, auch wenn die Temperatur im Ruam immernoch unter dem Schwellwert liegt, richtig?

                                    @JoergH: Es ist ein Xiaomi Aquara Sensor, der meldet sich sobald sich die Temperatur ändert.

                                    Homoran J 2 Replies Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @hertob81 last edited by

                                      @hertob81 sagte in "Badfenster offen" funktioniert nur teilweise [GELÖST]:

                                      Für mein Verständnis benötige ich noch eine Bedingung, dass das Skript nicht mehr getriggert wird, sobald das Fenster zu ist, auch wenn die Temperatur im Ruam immernoch unter dem Schwellwert liegt, richtig?

                                      richtig. Dein sonst bezieht sich nur auf die Uhrzeit

                                      1 Reply Last reply Reply Quote 0
                                      • J
                                        JoergH @hertob81 last edited by

                                        @hertob81 Ja, stimmt. Logisch. Er hat ja nur das Skript beim Öffnen ausgeführt und nicht wenn sich danach die Temperatur ändert...🤦‍♂️

                                        H 1 Reply Last reply Reply Quote 0
                                        • H
                                          hertob81 @JoergH last edited by hertob81

                                          @Homoran

                                          Sollte das schon die Lösung sein?

                                          Bildschirmfoto 2021-11-21 um 11.36.45.png

                                          Für den Trigger "Zeit" benötige ich kein weiteres "sonst", oder?

                                          H 1 Reply Last reply Reply Quote 0
                                          • H
                                            hertob81 @hertob81 last edited by hertob81

                                            @Homoran @paul53 @JoergH

                                            Mittlerweile habe ich einen weiteren Türsensor an das zweite Fenster angebracht.
                                            Durch den Debug Output erkenne ich, dass das Programm bzw. der Intervall beendet wird, wenn ich das zweite Fenster öffne.
                                            Im Klartext: EIN Fenster auf-> Meldung kommt ordnungsgemäß
                                            BEIDE Fenster auf -> keine Meldung

                                            Ich verstehe es nicht...

                                            Bildschirmfoto 2021-11-27 um 13.06.46.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            509
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            29
                                            1584
                                            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