Ankündigung

Einklappen
Keine Ankündigung bisher.

Sommer / Winterumschaltung nach DIN

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

    #16
    ok, aber dann habe ich kein "gewichtetes" Mittel wie in der Din sondern einfach einen average.
    Außerdem sendet mir die Quadra bei jeder Änderung der Temperatur > 0.5 Grad einen Wert, das kann - je nach Temperaturverlauf - sehr schnell in die Hose gehen.
    never fummel a running system...

    Kommentar


      #17
      Ich sehe ehrlich gesagt den Vorteil deiner viel komplizierteren Lösung nicht. Um immer ein Ergebnis zu haben, kannst du in meinem Item einfach das if weglassen und im init die aktuelle Temperatur setzen. Aber das Ergebnis bringt nicht viel, weil es selbst im Hochsommer um 07:00 oft unter 16°C ist und hingegen auch im Spätherbst z.B. um 14:00 über 16°C sein kann.
      Da wäre cache=yes noch die bedeutend bessere Lösung, weil man ja meistens einen unmittelbaren Neustart macht und kein Messpunkt verpasst wird.

      Kommentar


        #18
        Zitat von TRex Beitrag anzeigen
        ok, aber dann habe ich kein "gewichtetes" Mittel wie in der Din sondern einfach einen average.
        Außerdem sendet mir die Quadra bei jeder Änderung der Temperatur > 0.5 Grad einen Wert, das kann - je nach Temperaturverlauf - sehr schnell in die Hose gehen.
        Das mit den Mitteln kommt doch daher weil man nicht in der Nacht aufstehen will zum Messen. Es reicht meiner Meinung auch das ganze einmal am tag zu berechnen.

        Kommentar


          #19
          Hi,

          konnte mir nicht erklären, wo man so etwas braucht, habe mal gesucht und folgendes (mit script) gefunden:

          Moin zusammen, da ich o.g. Funktion im SVN nicht finden konnte habe ich mir da kurzerhand selbst beholfen und ein Plugin dafür erstellt. Vielleicht gibt es

          Kommentar


            #20
            gut, dem einen mag das zu kompliziert sein, ich bin damit jetzt happy.
            Die DIN Berechnung scheint mir schon auf der richtigen Basis zu fussen, ich glaube nicht dass das etwas mit aufstehen usw zu tun hat sondern mit der Erwärmung und Abstahlung des Environment drumrum. Nach einem Sommertag hast eben um 22 00 noch mehr Restwärme als nach einem Frühjahrstag, an dem das Mittel dann durchaus mal 16 grad sein kann. Die Familie DIN wird sich dabei ja was gedacht haben....
            jeder, wie er es will.
            never fummel a running system...

            Kommentar


              #21
              TRex Ich versuche das hier gerade mal zu nutzen....
              Bekomme aber immer diese Meldung im Log:

              Code:
              2018-05-18  22:00:00 ERROR    logics.sommer Logic: logics.sommer, File: /usr/local/smarthome/logics/sommer.py, Line: 15, Method: <module>, Exception: list index out of range
              Traceback (most recent call last):
                File "/usr/local/smarthome/lib/scheduler.py", line 425, in _task
                  exec(obj.bytecode)
                File "/usr/local/smarthome/logics/sommer.py", line 15, in <module>
                  if sh.GLOBAL.Sommer.digits()[i] == '':
              IndexError: list index out of range
              Kann es sein, dass die Liste erst einmal von Hand gefüllt werden muss?

              Kommentar


                #22
                ich habe den Value als Cache=true und einmal vorbelegt mit
                value=[,,,,,]
                never fummel a running system...

                Kommentar


                  #23
                  OK, so etwas in der Art hatte ich mir gedacht.

                  Danke!

                  Kommentar


                    #24
                    Hallo,
                    ich habe eben versucht, die Lösung mit den beiden Items von smai umzusetzen und dabei noch etwas angepasst:

                    Code:
                    Wetter:
                        Sommer_DIN:
                            type: bool
                            eval_trigger: .Werte
                            eval: sum(value) / float(len(value)) > 16 if len(value) >= 4 else None
                    
                            Werte:
                                type: list
                                eval: (sh..() + value * [sh.Wetter.Temperatur.Luft()])[-12:]
                                cache: true
                                crontab:
                                  - 0 7 * * = 1
                                  - 0 14 * * = 1
                                  - 0 22 * * = 2
                    Ich bekomme aber folgende Fehler im Log:

                    Code:
                    Item Sommer_DIN: problem evaluating sum(value) / float(len(value)) > 16 if len(value) >= 4 else None: object of type 'bool' has no len()
                    Item Wetter.Sommer_DIN.Werte: problem evaluating (sh.Wetter.Sommer_DIN.Werte() + value * [sh.Wetter.Temperatur.Luft()])[-12:]: can't multiply sequence by non-int of type 'list'
                    Ich möchte die Umschaltung von Sommer auf Winter quasi auf einen Drei-Tagesdurchschnitt erweitern. Die erste Berechnung soll aber durchgeführt werden, wenn wenigstens vier Messwerte vorhanden sind.

                    Könnt ihr mir vielleicht helfen?

                    Ein weiterer Lösungsansatz für das Problem: Die Temperaturen werden sowieso vom Database Plugin aufgezeichnet. Kann man vielleicht aus der Datenbank den Wert für eine bestimmte Uhrzeit auslesen?

                    Grüße
                    Thomas

                    Kommentar


                      #25
                      Ad Auslesen aus der Datenbank wirst du hier fündig: https://www.smarthomeng.de/user/plug...se/README.html

                      Ad Werte Item:
                      Ich vermute, die korrekte Konvertierung anhand des Datentypes kommt dir in die Quere. Sprich, 1 und 2 aus dem Crontab werden als Liste gecastet, also zB [1]. Dann müsstest du im Werte eval ein value[0] schreiben. Alternativ machst du aus dem list Typ ein foo.

                      Ad Sommer_DIN Item: Mir ist ein Rätsel, woher der value kommen soll. Logischer wäre für mich
                      sum(sh..Werte()) / float(len(sh..Werte())) > 16 if len(sh..Werte()) >= 4 else None

                      Kommentar

                      Lädt...
                      X