Ankündigung

Einklappen
Keine Ankündigung bisher.

Extremwerte des Tages speichern

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

    Extremwerte des Tages speichern

    Guten Morgen zusammen


    Ich habe auf der smarthomeng Seite
    https://www.smarthomeng.de/__trashed eine interessante Sache gefunden. Ich liebe Statistiken und dachte mir, dass ich den Code für die Temperatur auch für den Wind nehmen kann. In einem späteren Zeitpunkt wäre es sicher noch cool (vielleicht nur für mich), dass ich in einer Statistik sehe. Welche max. und welche min. Geschwindelt an welchem Tag gewesen ist.

    Zurück zu meiner Frage. Stimmt mein Code wie ich ihn eingefügt habe:


    Code:
            Windgeschwindigkeit_Max_Min:
                    Aktuell:
                        type: num
                        knx_dpt: 9
                        knx_listen: 1/6/7
                        database: init
                        visu_acl: ro
                    Maximum_Heute:
                        type: num
                        visu_acl: ro
                        eval: sh.Dach.Wetterstation.Windgeschwindigkeit_Max_Min.Aktuell() if value == 99.9 or float(sh..self()) < sh.Dach.Wetterstation.Windgeschwindigkeit_Max_Min.Aktuell() else sh..self.property.value
                        eval_trigger: Dach.Wetterstation.Windgeschwindigkeit_Max_Min.Aktuell
                        crontab:
                        - 0 3 * * = 99.9
                        - init+310 = 99.9
                    Minimum_Heute:
                        type: num
                        visu_acl: ro
                        eval: sh.Dach.Wetterstation.Windgeschwindigkeit_Max_Min.Aktuell() if value == 99.9 or float(sh..self()) > sh.Dach.Wetterstation.Windgeschwindigkeit_Max_Min.Aktuell() else sh..self.property.value
                        eval_trigger: sh.Dach.Wetterstation.Windgeschwindigkeit_Max_Min.Aktuell
                        crontab:
                        - 0 3 * * = 99.9
                        - init+310 = 99.9


    Ich gehe auch davon aus, dass die Geschwindelt nie mehr als 99km/h sein wird. Sonst kann ich dort einfach statt 199.9 durch 99.9 ersetzten?

    Also im Itembau sehe ich den Maximalwert (zurzeit 6.1 - er zeigt mir einen Wert in de VISU von 22km/h an, was auch stimmt).
    Beim Minimalwert ist 0. Muss ich mich hier gedulden, dass ein Wert auftaucht?
    Zuletzt geändert von CyruS1337; 29.01.2021, 07:29.

    #2
    Das hier wäre doch bestimmt auch was für dich.. : https://knx-user-forum.de/forum/supp...13#post1592413

    Ist halt aktuell auf Maximalwert getrimmt, aber sollte mit min ja auch klappen. Musst allerdings das shtime.py aus dem PR hier nehmen: https://github.com/smarthomeNG/smart.../lib/shtime.py

    Kommentar


      #3
      Ich habe auch ein struct für min/max.
      Stelle ich morgen hier mal ein.

      Kommentar


        #4
        Welche Minimalgeschwindigkeit kleiner als 0 willst du denn loggen? Oder muss die Minimalgeschwindigkeit > 0 sein (dann z.B. 0.1)? Welchen Wert hätte das?

        Kommentar


          #5
          Onkelandy danke für die Links. Werde ich mir anschauen.

          Sisamiwe Das wäre natürlich klasse


          Update: Was ich noch gefunden habe ist, dass ich das Zeichen bei minimal > falsch rum hatte. Nachdem ich dies geändert habe, habe ich endlich Werte erhalten.

          Kommentar


            #6
            Zitat von Morg Beitrag anzeigen
            Welche Minimalgeschwindigkeit kleiner als 0 willst du denn loggen? Oder muss die Minimalgeschwindigkeit > 0 sein (dann z.B. 0.1)? Welchen Wert hätte das?
            Gute Frage, eingetlich gar keine. Dies wird ja nie geschehen, dass eine Geschwindigkeit <0 ist

            Somit würde immer ein Wert >0 sein.

            Kommentar


              #7
              Naja, und die Konsequenz? Welchen Sinn hat es, eine "minimale Windgeschwindigkeit" zu messen, wenn das Minimum = 0 ist?

              Und welchen Sinn hat es, künstlich eine pseudo-minimale Windgeschwindigkeit zu identifizieren, die "minimal, aber größer 0" ist?

              Worauf ich hinaus will - es gibt keine sinnvoll "minimale" Windgeschwindigkeit, außer 0. Und die musst du nicht spreichern.

              Kommentar


                #8
                Zitat von Morg Beitrag anzeigen
                Naja, und die Konsequenz? Welchen Sinn hat es, eine "minimale Windgeschwindigkeit" zu messen, wenn das Minimum = 0 ist?

                Und welchen Sinn hat es, künstlich eine pseudo-minimale Windgeschwindigkeit zu identifizieren, die "minimal, aber größer 0" ist?

                Worauf ich hinaus will - es gibt keine sinnvoll "minimale" Windgeschwindigkeit, außer 0. Und die musst du nicht spreichern.
                Stimmt, da gebe ich dir vollkommen recht. Aber wenn ich schauen ich z.B. in einem Diagramm die minimale und maximale Aussentemperatur von heute darstellen will. So etwas würde ich gerne herausfinden und darstellen.​
                Zuletzt geändert von CyruS1337; 30.01.2021, 15:20.

                Kommentar


                  #9
                  Temperatur ist ja auch eine minimale sinnvoll zu ermitteln. Ansonsten verstehe ich deinen letzten Satz nicht

                  Kommentar


                    #10
                    Zitat von CyruS1337 Beitrag anzeigen
                    Das wäre natürlich klasse
                    Hallo,

                    hier mein min/max struct. Das "Item of Interest" wird in die DB geschrieben und das struct erstellt die anderen Items dazu.

                    Code:
                    min_max:
                        name: Min und Maxwerte des Items
                        min_24h:
                            type: num
                            eval: sh...db('min', '24h')
                            eval_trigger: ..
                            cache: yes
                        
                        max_24h:
                            type: num
                            eval: sh...db('max', '24h')
                            eval_trigger: ..
                            cache: yes
                            
                        avg_24h:
                            type: num
                            eval: sh...db('avg', '24h')
                            eval_trigger: ..
                            cache: yes
                        
                        min_heute:
                            type: num
                            eval: sh...db('min', str(shtime.time_since(shtime.today(), 'im')) + 'i')
                            eval_trigger: ..
                            cache: yes
                        
                        max_heute:
                            type: num
                            eval: sh...db('max', str(shtime.time_since(shtime.today(), 'im')) + 'i')
                            eval_trigger: ..
                            cache: yes
                        
                        avg_heute:
                            type: num
                            eval: sh...db('avg', str(shtime.time_since(shtime.today(), 'im')) + 'i')
                            eval_trigger: ..
                            cache: yes
                        
                        min_gestern:
                            type: num
                            eval: sh...db('min', '1d')
                            crontab: 1 0 * * = 1
                            database: init
                            database_maxage: 400
                            enforce_updates: yes
                        
                        max_gestern:
                            type: num
                            eval: sh...db('max', '1d')
                            crontab: 1 0 * * = 1
                            database: init
                            database_maxage: 400
                            enforce_updates: yes
                        
                        avg_gestern:
                            type: num
                            eval: sh...db('avg', '1d')
                            crontab: 1 0 * * = 1
                            database: init
                            database_maxage: 400
                            enforce_updates: yes
                        
                        min_7tage:
                            type: num
                            eval: sh...db('min', '7d')
                            eval_trigger: ..
                            cache: yes
                        
                        max_7tage:
                            type: num
                            eval: sh...db('max', '7d')
                            eval_trigger: ..
                            cache: yes
                        
                        avg_7tage:
                            type: num
                            eval: sh...db('avg', '7d')
                            eval_trigger: ..
                            cache: yes
                    Beste Grüße

                    Kommentar


                      #11
                      Hast Du bitte mal ein kurzes Beispiel (1 Item), wie Du das in der Praxis einsetzt? Habe bis jetzt noch nicht mit structs gearbeitet, und irgendwie weigert sich mein Gehirn beharrlich, die struct-Beschreibung in der Doku verstehen zu wollen - nach jedem neuen Überfliegen ist da mindestens ein Knoten mehr im Kopf.

                      Ich vermute, Du hängst das struct einfach in das "item of interest", richtig?

                      /tom

                      Kommentar


                        #12
                        Zitat von Tom Bombadil Beitrag anzeigen
                        Hast Du bitte mal ein kurzes Beispiel (1 Item),
                        klar.

                        Code:
                        raumtemp:
                            aussen:
                                nord:
                                    name: Außentemp Nordseite
                                    type: num
                                    visu_acl: ro
                                    knx_dpt: 9
                                    knx_cache: 0/3/120
                                    database: init
                                    struct: min_max
                                    
                                    sommer:
                                        name: Winter-Sommer-Umschaltung nach DIN, von Logik geschrieben
                                        remark: Berechnung mit Logik
                                        type: bool
                                        cache: yes
                                        enforce_updates: yes
                                        digits:
                                            name: werte von 7.00|14.00|22.00|gestern|vorgestern von Logik gefüllt
                                            type: list
                                            visu_acl: rw
                                            cache: yes
                                
                                garage:
                                    name: Temp in Garage
                                    type: num
                                    visu_acl: ro
                                    knx_dpt: 9
                                    knx_cache: 0/3/121
                                    database: init
                                    struct: min_max

                        Kommentar


                          #13
                          Dankeschöööön, jetzt hab sogar ich das kapiert.
                          /tom

                          Kommentar


                            #14
                            Tom Bombadil Ich vermute, es würde helfen, in der Doku zuerst mal mit einem einzelnen Beispiel mit nur 1 struct ohne substructs zu starten, wa ?
                            #schau ich mir an

                            Kommentar


                              #15
                              Du weisst doch: Vom Groben ins Feine ...
                              /tom

                              Kommentar

                              Lädt...
                              X