Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Anwesenheitsscript HZ bei offenem Fenster aussetzen

    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

    Anwesenheitsscript HZ bei offenem Fenster aussetzen

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

      Servus z´sammen,
      ich steuere mit Hilfe eines Anwesenheitsscript´s meine HZ im Wohnzimmer (Testweise). Da wir unterschiedliche Arbeitszeiten haben und meine Frau auch verschiedene Tage in der Woche frei hat, kann ich das schlecht mit festen Zeiten regeln und über die Anwesenheit ist es ganz praktisch gelöst. Ist einer von uns daheim geht die Heizung an. Soweit funktioniert auch alles.....

      Jetzt aber meine Frage: Wie kann ich das Script aussetzen lassen wenn mein Fensterkontakt "offen" meldet ?? Wenn ich das Fenster öffnet reagiert meine Heizung zwar sofort darauf aber nach 5 Minuten stellt das Script wieder die normale Temp ein, da ja jemand zuhaus ist.

      Verbautes Thermostat: Comet DECT
      FritzBox: 7530
      Fensterkontakt: Tuya / SmartLife

      Hier mal das Script das ich verwende:


      var idAnwesenheit1 = "ping.0.DESKTOP-xxxxxxxxx(xxxx).Frank-Handy.alive"/active/;
      var idAnwesenheit2 = "ping.0.DESKTOP-xxxxxxxxx(xxxx).Uta_Handy.alive"/active/;
      var idTarget = "fritzdect.0.Comet_14078017xxxx.targettemp"/Target Temp/; //Wohnzimmer
      var idComfy = "fritzdect.0.Comet_14078017xxxx.comfytemp";
      var idNight = "fritzdect.0.Comet_14078017xxxx.nighttemp";
      var idLow = "16";

      schedule('*/5 * * * *', function () {
      if( ((getState(idAnwesenheit1).val || getState(idAnwesenheit2).val)) && compareTime('06:00', '22:30', "between", null) )

      setState(idTarget, getState(idComfy).val);  
      

      else

       setState(idTarget, idLow);
      

      });

      Vielleicht hat ja einer ne Idee oder das schon umgesetzt.

      Gruß Frank

      sigi234 C 2 Replies Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active @Fizh Kopp last edited by

        @Fizh-Kopp

        Schon mal den Adapter getestet?

        https://forum.iobroker.net/topic/22579/test-adapter-heatingcontrol-v1-0-x

        Fizh Kopp 1 Reply Last reply Reply Quote 0
        • Fizh Kopp
          Fizh Kopp @sigi234 last edited by

          @sigi234
          Ja hab ich mir schon mal angeguckt. Bin ich aber noch nicht wirklich durchgestiegen mit den ganzen Möglichkeiten.

          Ich werd das aber im Hinterkopf behalten falls ich es nicht hinbekomme mit meinem Weg.

          1 Reply Last reply Reply Quote 0
          • C
            Chrunchy @Fizh Kopp last edited by

            @Fizh-Kopp Unter der Voraussetzung, dass idLow der gleiche Wert ist, wie bei einem offenen Fenster, musst du doch nur im if-Statement zusätzlich prüfen, ob das Fenster geschlossen ist.
            Oder habe ich deine Frage falsch verstanden?

            1 Reply Last reply Reply Quote 0
            • Fizh Kopp
              Fizh Kopp last edited by Fizh Kopp

              So, nachdem ich nun nochmal ein wenig mit dem HeatingControl "rumgespielt" habe muss ich sagen das mir das viel zu umfangreich ist für meine kleine Hütte. Ich hab im ganzen nur 5 Heizkörper die ich Smart gemacht habe.

              Da ich an 4 HZ noch die Tuya-Thermostaten habe (werden ausgetauscht gegen DECT) werde ich diese erstmal umrüsten und dann für jeden Raum das Skript einsetzten.

              Wie ich dann die Kontaktabfrage mache weiß ich noch nicht aber da finde ich auch noch eine Lösung. Ich bin was das Skripten angeht absoluter Neuling und brauch noch ein wenig Zeit bis ich da 100% durchsteige.

              @Chrunchy vorgestellt habe ich mir, das bei Abwesenheit die idLow greift aber bei offenem Fenster der Thermostat komplett aus geht. Momentan hab ich das über Alex gelöst mit einer Routine. Das angewendete Script setzt hier nach 5 Minuten natürlich wieder die comfytemp ein......... kann ich das Script über ein zweites Script stoppen wenn das Fenster aufgeht und wieder starten wenn das Fenster geschlossen wird ??

              Gruß Frank

              C 1 Reply Last reply Reply Quote 0
              • C
                Chrunchy @Fizh Kopp last edited by

                @Fizh-Kopp Ich gehe davon aus, dass dein FK im iobroker ist. Dann gibt es einen State open, der auf true steht.

                Ausgehend von deinem Script, würde ich dein if-Statement wie folgt umschreiben...
                if FK.open.val Thermostat ausschalten
                else if deine if-statement gefolgt vom bisherigen else.
                Deinen Trigger wirst du aber auch nochmal überdenken müssen...
                Stand jetzt, kann das Fenster 4:59 offen sein, bevor der Cron wieder läuft und es erkennt. Auch bleibt dein Thermostat bei 16 stehen, wenn du um 23:00 Uhr das Fenster öffnest.

                Ich persönlich gehe etwas anders an solche Aufgaben ran. Ich nutze eigene States im iobroker. Mit den Scripten überwache ich diese dann auf Veränderung und reagiere entsprechend darauf.
                Beispiel:
                Angenommen es gibt einen State ZielTemperatur.
                Dann brauchst du ein Script, welche bei einer Änderung des States ZielTemperatur den neuen Wert an das Themostat übermittelt. (Damit ist deine Heizungssteuerung schon mal fast fertig.)
                Was jetzt noch fehlt, sind Scripte, welche den Wert von ZielTemperatur ändern, in Abhängigkeit von Ereignissen die Eintreten (Fenster offen, An-/Abwesenheit, Uhrzeit)

                Beispiel: Bei Änderung von ZielTemperatur, neuen Wert an das Thermostat

                const ZielTemp = "javascript.0.ZielTemperatur";
                const idTarget = "fritzdect.0.Comet_14078017xxxx.targettemp"/Target Temp/; //Wohnzimmer
                on({id: ZielTemp,change:'ne'}, function (obj) {
                setState(idTarget, obj.state.val);
                });
                
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                772
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                heating
                3
                6
                264
                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