Ankündigung

Einklappen
Keine Ankündigung bisher.

Präsenz zu Hause

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Präsenz zu Hause

    Hallo,

    ich versuche die Präsenz zu Hause über die Präsenzmelder abzudecken. So als gleitender Max-Wert.
    Dazu habe ich folgende Items:
    Code:
    [System]
        [[praesenz]]
            name = Gleitender Durchschnitt Praesenzmelder
            type = bool
            sqlite = yes
            eval = sh.System.praesenz.all.db('max', '30i')
            eval_trigger = System.praesenz.all
            cycle = 600
            enforce_updates = yes
            [[[visu]]]
                name = Alle Praesenzmelder Visu
                type = num
                sqlite = yes
                eval = sh.System.praesenz() * 2
                eval_trigger = System.praesenz
            [[[all]]]
                name = Alle Praesenzmelder
                type = bool
                sqlite = yes
                eval = or
                eval_trigger = EG.kueche.praesenz | EG.wohnzimmer.praesenz | EG.hwr.praesenz | EG.gaestebad.praesenz | EG.flur.praesenz | OG.flur.praesenz | OG.bad.praesenz
    Wenn ich
    Code:
    sh.System.praesenz.all.db('max', '30i')
    im interaktiven Mode aufrufe, gibt er mir auch die jeweils korrekten Werte zurück. Nur als eval funktioniert das nicht und er zeigt immer ein True an.
    Irgendwo ist da noch ein Hänger, den ich nicht finde.
    In der Visu sieht das dann wie folgt aus:
    Bildschirmfoto 2015-12-04 um 15.18.12.png

    Die Einzelmeldungen (unten) sollen also abhängig von der Period (im obigen Bsp 30min) gruppiert werden. Was der beste Wert ist muss ich ausprobieren, aber ich habe aus Testzwecken diesen kleinen Wert gesetzt.

    Any ideas?

    gruss-
    hhhc
    Zuletzt geändert von hhhc; 04.12.2015, 15:20.
    ++ Der ultimative ETS Schnellkurs ++
    KNX und die ETS vom Profi lernen
    www.ets-schnellkurs.de

    #2
    Hallo hhhhhc,

    wenn Du einen Durchschnitt in einen Bool quetschen magst, kommt halt ein Bool raus.

    type = bool
    eval = sh.System.praesenz.all.db('max', '30i')

    Wo ist genau das Problem? Ich verstehe es nicht ganz.

    Bis bald

    Marcus

    Kommentar


      #3
      ichmöchte den wert glätten - Durchschnittswert ist der falsche begriff. wenn innerhalb der letzten x min oder h kein pm angesprochen hat, dann ist eben keiner zu hause. es soll also ein Bool ausgegeben werden. in der interaktiven shell funzt es gut nur halt nicht wie oben angegeben. das cycle scheint ausgeführt zu werden, im log sehe ich einträge a la "nächster run"...
      Zuletzt geändert von hhhc; 05.12.2015, 00:25.
      ++ Der ultimative ETS Schnellkurs ++
      KNX und die ETS vom Profi lernen
      www.ets-schnellkurs.de

      Kommentar


        #4
        Kann man das nicht mit "autotimer" erschlagen?
        Hab es nicht getestet aber könnte mir vorstellen das klappt:

        Referenzen:
        https://knx-user-forum.de/forum/supp...-und-autotimer
        http://mknx.github.io/smarthome/conf...mer-time-value

        Code:
        [pm]
            [[all]]
                type = num
                autotimer = 30m = 0
                eval = value
                eval_trigger = sh.pm_1 | sh.pm_2 | sh.pm_3 | sh.pm_4
            [[pm_1]]
                type = num
                knx_dpt = 1
                knx_init = 1/2/1
            [[pm_2]]
                type = num
                knx_dpt = 1
                knx_init = 1/2/2
            [[pm_3]]
                type = num
                knx_dpt = 1
                knx_init = 1/2/3
            [[pm_4]]
                type = num
                knx_dpt = 1
                knx_init = 1/2/4
        Sobald einer der PM auslöst wird pm.all getriggert, erhält den Wert (1) und setzt sich nach 30 Minuten auf "0".

        Aber wie gesagt ungetestet ... war nur so eine Idee. Vielleicht hab ich die Fragestellung auch falsch verstanden.
        Umgezogen? Ja! ... Fertig? Nein!
        Baustelle 2.0 !

        Kommentar


          #5
          Leider klappt obiges nicht, da auch jede 0 den pm.all triggert und zurücksetzt. Aber grundsätzlich geht es, ich hab ein Pattern zu hause, kann das nachher nochmal reinstellen. Gruß Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Und mit "eval = value if value==1 else none" ? Wieder ungetestet .
            Umgezogen? Ja! ... Fertig? Nein!
            Baustelle 2.0 !

            Kommentar


              #7
              auch None wird den autotimer triggern. Da müßtest Du schon smarthome.py patchen, das er die None rausfiltert.

              Kommentar


                #8
                Hi,

                hier mein Pattern für solche "Nachlauf-Fälle":
                Code:
                [Zentral]
                    [[Praesenz]]
                        name = Präsenz Haus aktuell
                        type = bool
                        eval = or
                        eval_trigger = KG.Praesenz | EG.Praesenz | OG.Praesenz | DG.Praesenz
                        [[[Fuenf]]]
                            name = Präsenz Haus in den letzten 5 Minuten
                            type = num
                            value = 2
                            autotimer = 300 = 2
                            eval = sh.Zentral.Praesenz() if int(value) > 1 else 1
                            eval_trigger = Zentral.Praesenz
                        [[[Fuenfzehn]]]
                            name = Präsenz Haus in den letzten 15 Minuten
                            type = num
                            value = 2
                            autotimer = 900 = 2
                            eval = sh.Zentral.Praesenz() if int(value) > 1 else 1
                            eval_trigger = Zentral.Praesenz
                Das funktioniert ganz gut. Die Semantik von Zentral.Praesenz.Fuenf ist: Ist in den letzten 5 Minuten irgendwo im Haus eine Präsenz festgestellt worden. Fuenf (bzw. Fuenfzehn) ist immer so lange 1, wie Praesenz = true und bleibt dann 5 (bzw. 15) Minuten länger 1 und geht dann auf 0.

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  danke. werde ich so mal ausprobieren
                  ++ Der ultimative ETS Schnellkurs ++
                  KNX und die ETS vom Profi lernen
                  www.ets-schnellkurs.de

                  Kommentar


                    #10
                    Hi Waldemar,

                    Die Lösung gefällt mir gut. Da ich nicht viele Präsenzmelder habe, werde ich noch ergänzen, wann wurde das letzte mal eine Lampe geschaltet. Dann müsste dieses schon ziemlich zuverlässig funktionieren.

                    Danke.

                    Gruss Andreas

                    Kommentar

                    Lädt...
                    X