Ankündigung

Einklappen
Keine Ankündigung bisher.

kälter wirds: Heizungssteuerung mit OpenHab

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

    #16
    Hallo Michael,

    ich hab hier im Haus auch 3x verschiedene Temperaturen, eine ist die Außentemperatur und da es im Moment wieder kälter wird würde ich gerne die Nachttemperaturen tracken.

    Die reine Temperaturanzeige geht ja sehr einfach:

    Group:Number:AVG Temperatur "Temperatur Aussen [%.1f °C]" <temperature> (Status)

    Number Temperatur_GF_Corridor "Temperatur [%.1f °C]" <temperatur> (Temperatur, GF_Corridor) { knx = "<1/1/22" }

    Wie hast Du den openhab die Temperatur tracken lassen über eine spezielle rule die in eine Datei schreibt ? Bzw. ist das Diagramm hinterher über Excel entstanden ?

    Kann man so ein Diagramm direkt in die item mit einbinden und darstellen ?

    Mfg Jürgen

    Zitat von maddog Beitrag anzeigen
    Hallo,
    inzwischen wird die Temperatur angezeigt - ohne, dass ich etwas geändert habe.
    Hat aber sicherlich gefühlt 2-3h gedauert.

    Ich habe mal versucht, verschiedene Raumtemperaturen und die Außentemperaturen tracken zu lassen (siehe Anhang)

    Bei der Außentemperatur ergibt sich eine schöne Kurve - bei den Raumfühlern scheinbar nur gelegentliche Ausschläge.

    Könnte das damit zusammenhängen?

    Michael

    Kommentar


      #17
      Wie hast Du den openhab die Temperatur tracken lassen über eine spezielle rule die in eine Datei schreibt ? Bzw. ist das Diagramm hinterher über Excel entstanden ? Kann man so ein Diagramm direkt in die item mit einbinden und darstellen ?
      Das Diagramm oben sieht verdammt nach rrd aus .

      Genau so mache ich es auch, die Werte werden in eine rrd Datenbank geschrieben und darüber auch die Diagramme erstellt.

      Dazu hast Du zwei Möglichkeiten: Mit openHAB selbst, dazu schau die mal das rrd4j Binding an. Zu den Charts gibt es, wenn ich mich recht entsinne, auch ein Beispiel in der Demo Konfiguration. Einbinden kannst Du das dann in der Sitemap z.B. wie hier:
      Image url="http://openhab.xxx.yyy:8080/rrdchart.png?items=Temperatur_Garten,Temperatur_Ho f"

      Falls Du ein Wiregate hast, kannst Du die Werte auch dort in eine rrd-Datenbank schreiben lassen (wird für die 1-Wire Sensoren eh gemacht, der Rest geht über ein einfaches Plugin) und die Diagramme über das Wiregate erzeugen lassen. Dazu gibt es euf dem Wiregate ein Skript, was Du auch wieder in die Sitemap einbinden kannst:
      Image url="http://wiregate.xxx.yyy/graph.pl?....

      Zum Zusammenstellen der URL gibt es auf dem Wiregate einen Diagrammeditor, das wird sehr lang!

      Die Variante über openHAB ist einfacher, die Variante übers Wiregate etwas flexibler bei der Erstellung der Diagramme.

      Kommentar


        #18
        Hi Jockel,

        Danke für die ausführliche Antwort, ich habs über das Beispiel in der Demo sitemap/item/rule ausprobiert, es wird aber immer die gleiche Temperatur für die Minimalen und Maximalen Werte angezeigt, irgend was Wichtiges fehlt da noch, muß in der rrd4j.persist was spezielles drin stehen ?

        Mfg Jürgen

        Kommentar


          #19
          muß in der rrd4j.persist was spezielles drin stehen ?
          Ja, die Persistence muss für die fraglichen Temperaturen auch konfiguriert werden, entweder indem die entsprechenden Items dort einzeln aufgeführt werden oder die Gruppen zu denen sie gehören. Die Syntax ist in der Datei erläutert!

          Kommentar


            #20
            genau, hat das geklappt?
            Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

            Kommentar


              #21
              Hi Teichsta, Jockel,

              naja klappt nicht so ganz, es wird immer noch bei Min Max die gleiche Temperatur angezeigt und das Chart-Diagramm wird leer angezeigt

              Anbei poste ich mal meine 5x Dateien, ich bin jetzt nicht so ganz firm in Sachen Eclipse-Programmierung....... welcher Bezug, welches Item fehlt den noch ?

              Item:
              Group All
              Group Status (All)
              Group Schlafzimmer
              Group Kind1
              Group Kind2
              Group Wohnzimmer
              Group Esszimmer
              Group AussenT
              Group TuerOef
              Group Kueche1
              Group Kueche2
              Group Bad
              Group Spitzboden
              Group Weather (All)

              /* active groups */
              Group:Switch:OR(ON, OFF) Lights "Alle Lichter [(%d)]" (All)
              Group:Number:AVG Temperaturen "Temperatur Wohnzimmer [%.1f °C]" <temperature> (Status)
              Group:Number:AVG Temperatu "Temperatur Garage [%.1f °C]" <temperature> (Status)
              Group:Number:AVG Temperature "Temperatur Aussen [%.1f °C]" <temperature> (Status)

              /* Lights */
              Switch Light_Schlafzimmer "Schlafzimmer" (Schlafzimmer, Lights) { knx = "<0/0/6" }
              Switch Light_Kind1 "Kind 1" (Kind1, Lights) { knx = "<0/0/4" }
              Switch Light_Kind2 "Kind 2" (Kind2, Lights) { knx = "<0/0/2" }
              Switch Light_Kueche_Hauptlicht "Küche - Hauptlicht" (Kueche1, Lights) { knx = "<0/0/18" }
              Switch Light_Kueche_Nebenlicht "Küche - Nebenlicht" (Kueche2, Lights) { knx = "<0/0/19" }
              Switch Light_Bad "Bad" (Bad, Lights) { knx = "<0/0/20" }
              Switch Light_Spitzboden "Spitzboden" (Spitzboden, Lights) { knx = "<0/0/21" }

              Dimmer Light_Wohnzimmer_Schran "Wohnzimmer Schrank" (Wohnzimmer, Lights) { knx = "<0/0/13, 0/0/15, 0/0/9" }
              Switch Light_Wohnzimmer_Schrank "Wohnzimmer Schrank" (Wohnzimmer, Lights) { knx = "<0/0/13" }
              Switch Light_Wohnzimmer_Couch "Wohnzimmer Couch" (Wohnzimmer, Lights) { knx = "<0/0/12" }
              Switch Light_Esszimmer_Decke "Esszimmer" (Esszimmer, Lights) { knx = "<0/0/11" }
              Switch Light_Esszimmer_Flur "Esszimmer - Flur" (Esszimmer, Lights) { knx = "<0/0/14" }
              Switch Light_AussenT_AT "Außen - Terrasse" (AussenT, Lights) { knx = "<0/0/1" }
              Switch Light_TuerOef_TOef "Türöffner" (TuerOef, Lights) { knx = "<0/0/10" }

              /* Indoor Temperatures */
              Number Temperature_ "Temperaturen [%.1f °C]" <temperaturen> (Temperaturen) { knx = "<0/0/16" }
              Number Temperatu_ "Temperatu [%.1f °C]" <temperatu> (Temperatu) { knx = "<0/0/23" }

              Group Weather_Chart (Weather)
              Number Weather_Temperature "Aussen Temperatur [%.1f °C]" <temperature> (Weather_Chart) { knx="<0/0/22" }
              Number Weather_Temp_Max "Todays Maximum [%.1f °C]" <temperature> (temp_max)
              Number Weather_Temp_Min "Todays Minimum [%.1f °C]" <temperature> (temp_min)

              DateTime Date "Date [%1$tA, %1$td.%1$tm.%1$tY]" <calendar> { ntp="Europe/Berlin:de_DE" }
              Sitemap:
              sitemap demo label="KNX-Steuerung - Doppelhaushälfte"
              {
              Frame label="" {
              Slider item=Light_Wohnzimmer_Schran label="Wohnzimmer Schrank Dimmer" sendFrequency=400 switchSupport
              Switch item=Light_Wohnzimmer_Schrank label="Wohnzimmer Schrank"
              Switch item=Light_Wohnzimmer_Couch label="Wohnzimmer Couch"
              Switch item=Light_Esszimmer_Decke label="Esszimmer"
              Switch item=Light_Esszimmer_Flur label="Esszimmer - Flur"
              Switch item=Light_Kueche_Hauptlicht label="Küche - Hauptlicht"
              Switch item=Light_Kueche_Nebenlicht label="Küche - Nebenlicht"
              Switch item=Light_AussenT_AT label="Außen - Terrasse"
              Switch item=Light_Schlafzimmer label="Schlafzimmer"
              Switch item=Light_Kind1 label="Kind 1"
              Switch item=Light_Kind2 label="Kind 2"
              Switch item=Light_Bad label="Bad"
              Switch item=Light_Spitzboden label="Spitzboden"
              Switch item=Light_TuerOef_TOef label="Türöffner"
              Switch item=Lights mappings=[OFF="Zentral - Aus"]
              Text item=Temperaturen
              Text item=Weather_Temperature
              Text item=Temperatu
              Text item=Weather_Temp_Max
              Text item=Weather_Temp_Min
              Chart item=Weather_Chart period=h refresh=10000
              Text item=Date
              }

              Frame label="Weather" {
              Text item=Weather_Temperature {
              Frame {
              Chart item=Weather_Chart period=h refresh=10000
              }
              }
              }
              Frame label="" {
              Image url="images/splash-ipad-h.png" label="openHAB" {
              Text label="http://www.openHAB.org" icon="icon"
              }
              }
              }

              Rule:
              import org.openhab.core.library.types.*
              import org.openhab.core.persistence.*
              import org.openhab.model.script.actions.*

              var Number counter = 1
              var Timer timer = null

              rule Startup
              when
              System started
              then
              say("")
              end

              rule Goodbye
              when
              System shuts down
              then
              say("")
              end

              rule "Set random room temperatures"
              when
              System started or
              Time cron "0 0/5 * * * ?"
              then
              Temperature?.members.forEach(temperature|
              postUpdate(temperature, 20.0 + (25.0 - (Math::random * 50.0).intValue) / 10.0)
              )
              end

              rule "Update max and min temperatures"
              when
              Item Weather_Temperature changed or
              Time cron "0 0 0 * * ?" or
              System started
              then
              postUpdate(Weather_Temp_Max, Weather_Temperature.maximumSince(now.toDateMidnigh t).state)
              postUpdate(Weather_Temp_Min, Weather_Temperature.minimumSince(now.toDateMidnigh t).state)
              end

              /** shows how to use sensor values from the past */
              rule "Persistence Demo"
              when
              Time cron "0 * * * * ?"
              then
              if(Weather_Temperature.changedSince(now.minusMinut es(1))) {
              println("2 minutes ago, the temperature was " + Weather_Temperature.historicState(now.minusMinutes (2)) + " degrees.")
              }
              end
              rrd4j.persist:
              // persistence strategies have a name and a definition and are referred to in the "Items" section
              Strategies {
              // for rrd, we need a cron strategy
              everyMinute : "0 * * * * ?"
              }

              Items {
              // let's only store temperature values in rrd
              Weather_Temp_Max*, Weather_Temp_Min*, Weather_Temperature*, Temperature*, Weather_Chart* : strategy = everyMinute
              // Leistung_Chart* : strategy = everyMinute
              }
              db4o.persist:
              // persistence strategies have a name and a definition and are referred to in the "Items" section
              Strategies {
              everyHour : "0 0 * * * ?"
              everyDay : "0 0 0 * * ?"

              // if no strategy is specified for an item entry below, the default list will be used
              default = everyChange
              }

              /*
              * Each line in this section defines for which item(s) which strategy(ies) should be applied.
              * You can list single items, use "*" for all items or "groupitem*" for all members of a group
              * item (excl. the group item itself).
              */
              Items {
              // persist all items once a day and on every change and restore them from the db at startup
              // careful, this might result in huge databases - that's why it is in comment here ;-)
              // * : strategy = everyChange, everyDay, restoreOnStartup

              // persist all temperature and weather values at every change and every hour
              Weather_Temp_Max*, Weather_Temp_Min*, Weather_Temperature*, Temperature*, Weather_Chart*, Temperature*, Weather* : strategy = everyChange, everyHour
              }
              Jürgen

              Kommentar


                #22
                Hi Jürgen,

                sowohl in der rrd4j.persist als auch in der db4o.persist referenzierst Du zu viele Items. Außerdem notierst Du sie mit einem "*", was auf eine Gruppe diesen Namens hindeutet. Die rrd4j.persist sollte aus meiner Sicht daher so aussehen:

                Code:
                // persistence strategies have a name and a definition and are referred to in the "Items" section
                Strategies {
                // for rrd, we need a cron strategy
                everyMinute : "0 * * * * ?"
                }
                
                Items {
                // let's only store temperature values in rrd
                Temperature*, Weather_Chart* : strategy = everyMinute
                }
                Die db4o.persist brauchst Du für die Temperaturen eigentlich nicht mehr, da rrd4j seit 1.2 ja auch "queryable" ist.

                Generell solltest Du die *.items nochmal durchgehen und Item- und Gruppenbenennungen für die Temperaturen etwas mehr strukturieren, also eindeutigere Namen geben, um später nicht selbst ständig durcheinander zu kommen.

                Gruß,

                Thomas E.-E.
                Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                Kommentar

                Lädt...
                X