Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab2 Problem mit InfluxDB

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

    Openhab2 Problem mit InfluxDB

    Habe folgendes Problem openhab schreibt nur Daten in die InfluxDB wenn sich der Status ändert sehe ich im Grafana,
    aber es soll jede Minute den Wert schreiben macht es aber irgendwie nicht!
    im Grafana steht wenn sich der Wert einen Tag nicht ändert nur "No Data Points"

    Meine influxdb.persist
    // persistence strategies have a name and definition and are referred to in the "Items" section
    Strategies {
    everyMinute : "0 0/1 * 1/1 * ? *"
    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
    }


    }

    Items {
    WSRainCounter : strategy = everyChange, everyMinute

    }
    Meine Regel Dazu
    rule "Regen letzte stunde"
    when
    Time cron "0 0/1 * 1/1 * ? *"
    then
    var Number lasthour = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(1)).st ate as Number)
    if(WSRainLastHour.state != lasthour)
    {
    WSRainLastHour.postUpdate(lasthour)
    }
    end

    rule "Regen 24h"
    when
    Time cron "0 0/1 * 1/1 * ? *"
    then
    var Number letzterTagesverbrauch = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(24)).s tate as Number)
    if(WSRainLast24h.state != letzterTagesverbrauch)
    {
    WSRainLast24h.postUpdate(letzterTagesverbrauch)
    }
    end
    Wenn sich mein Wert und der WSRainCounter Datei ändert funktioniert auch meine Regel aber wenn sich nichts ändert, werden da auch keine Daten geschrieben!
    Möchte aber das er immer Daten rein schreibt damit auch meine Regel funktioniert und dann z.B. bei meinem Item WSRainLastHour auch 0 drin steht

    Hoffe ihr könnt mir helfen

    #2
    Die übliche Definition für everyMinute ist
    Code:
    everyMinute : "0 * * * * ?"
    Es ist im Übrigen besser, Code auch als Code zu posten, nicht als Zitat.

    Was genau sammelst Du über das Item? Was genau möchtest Du angezeigt bekommen?

    Kommentar


      #3
      Code:
      Number WSRainCounter  "WS Raining Counter[%.2f mm]"     (rain)            {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#RAIN_COUNTER"}
      Number WSRainLastHour         "Rain Last Hour[%.2f mm]"     <rain>  (rain)
      Number WSRainLast24h         "Rain Last 24h[%.2f mm]"     <rain>  (rain)
      Das Item gehört zu meiner Wetterstation und ist mein Regen Zähler und möchte angezeigt bekommen wieviel es letzte Stunde bzw. letzten 24h geregnet hat und wenn es nicht geregnet hat einfach 0

      Kommentar


        #4
        Und der Counter liefert jeweils eine 1 pro mm, oder in einer fixen Zeit die Anzahl mm die gefallen sind? Setze die Persistence auf everyUpdate, damit auch gleiche Werte gespeichert werden. Dann nutze
        Code:
        WSRainCounter.sumSince(now.minusHours(1),"influxdb").intValue
        für die Summe über die letzten 60 Minuten oder entsprechend
        Code:
        WSRainCounter.sumSince(now.minusDays(1),"influxdb").intValue
        für die letzten 24 Stunden.

        Falls der Counter tatsächlich selbst aufsummiert, sehen die Rules gut aus, bis auf die exotische Schreibweise des Time cron. Da Du die Rules zum selben Zeitpunkt triggern lässt, wäre es sinnvoller, beide Rules zu einer zusammenzufassen:
        Code:
        rule "Update Regen Items"
        when
            Time cron "0 * * * * ?"
        then
            var Number lasthour = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(1)).state as Number)
            if((WSRainLastHour.state as Number) != lasthour) WSRainLastHour.postUpdate(lasthour)
            var Number letzterTagesverbrauch = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(24)).state as Number)
            if((WSRainLast24h.state as Number) != letzterTagesverbrauch) WSRainLast24h.postUpdate(letzterTagesverbrauch)
        end

        Kommentar


          #5
          Der zählt es selbst hoch, funktioniert ähnlich wie ein Stromzähler, das heist wert wird automatisch größer wenn es regnet und setzt sich nie zurück

          Kommentar


            #6
            Hast Du denn mal die übliche Schreibweise des Cron Ausdrucks getestet?

            Kommentar


              #7
              Ja hab ich jetzt geändert und dann hat es nichts mehr geschrieben hab aber dann auch den Fehler endeckt aber auch erst gerade aber openhab schreibt jetzt wieder Daten muss ich jetzt erst beobachten

              So sehen jetzt meine Daten aus:

              influx.persist
              Code:
              // persistence strategies have a name and definition and are referred to in the "Items" section
              Strategies {
                  everyMinute   : "0 * * * * ?"
                  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
              }
              
              Items {
                  WSRainCounter                      : strategy = everyChange, everyMinute
                  
              }
              knx.rules
              Code:
              rule "Regen letzte stunde"
              when
                         Time cron "0 * * * * ?"
              then
                  var Number lasthour = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(1)).state as Number)
                if((WSRainLastHour.state as Number) != lasthour) WSRainLastHour.postUpdate(lasthour)
                  var Number last24h = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(24)).state as Number)
                if((WSRainLast24h.state as Number) != last24h) WSRainLast24h.postUpdate(last24h)
              
              end
              hatte in der persist eine } zuviel drin und jetzt werde ich beobachten und melde mich auf jeden fall ob es Funktioniert hat!


              Sag auf jeden Fall jetzt schon Vielen Dank für deine Hilfe!!!

              Kommentar


                #8
                Zitat von JoyriderLP Beitrag anzeigen
                influx.persist
                Das muss
                HTML-Code:
                influxdb.persist
                heißen ...

                Kommentar


                  #9
                  So also es Funktioniert alles hab es getestet und noch etwas erweitert, falls jemand auch eine Homematic Wetterstation (Homematic Funk-Kombisensor HM-WDS100-C6-O-2) hat und es auch so einbinden möchte, schreibe ich hier wie es jetzt bei mir läuft:

                  meine.items

                  Code:
                  Switch WSRaining        "WS Raining [MAP(rain.map):%s]"                     (rain)                       {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#RAINING"}
                  Number WSRainCounter  "WS Raining Counter[%.2f mm]"     (rain)            {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#RAIN_COUNTER"}
                  Number WS_Brightness    "Helligkeit [%s]"    <sun>        (rain)    {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#BRIGHTNESS"}
                  // Number WS_Sunshineduration    "Sunshineduration  [%.1f _]"    <sun>        (rain)    {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#SUNSHINEDURATION"}
                  Number WS_Out_temp    "Temperatur  [%.1f °C]"    <temperature>        (rain)    {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#TEMPERATURE"}
                  Number WS_Wind_directon    "Wind Richtung [%s °]"    <wind>        (rain)    {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#WIND_DIRECTION"}
                  Number WS_Wind_direc_Rag    "Windr. Schwankungsbr.  [%.0f °]"    <wind>        (rain)    {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#WIND_DIRECTION_RANGE"}
                  Number WS_Humidity    "Luftfeuchtigkeit [%.1f %%]"    <water>        (rain)    {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#HUMIDITY"}
                  Number WS_Wind_Speed    "Windgeschwindigkeit  [%.1f km/h]"    <wind>        (rain)    {channel="homematic:HM-WDS100-C6-O-2:LEQ0391881:NEQ1100234:1#WIND_SPEED"}
                  Number WSRainLastHour         "Rain Last Hour[%.2f mm]"     <rain>  (rain)
                  Number WSRainLast24h         "Rain Last 24h[%.2f mm]"     <rain>  (rain)
                  Number WSRainLast1d         "Rain Last day[%.2f mm]"     <rain>  (rain)
                  Number WSRainLast7d         "Rain Last 7 days[%.2f mm]"     <rain>  (rain)
                  Number WSRainLastWe         "Rain Last Week[%.2f mm]"     <rain>  (rain)
                  Number WSRainLast30d         "Rain Last 30 days[%.2f mm]"     <rain>  (rain)
                  Number WSRainLastMon         "Rain Last Month[%.2f mm]"     <rain>  (rain)
                  In den Items steht die Kompelette Wetterstation

                  meine.rules

                  Code:
                  rule "Regen letzte stunde & 24 Stunden"
                  when
                             Time cron "0 * * * * ?"
                  then
                      var Number lasthour = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(1)).state as Number)
                      if(WSRainLastHour.state != lasthour) {WSRainLastHour.postUpdate(lasthour)}
                      var Number letzterTagesverbrauch = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(24)).state as Number)
                      if(WSRainLast24h.state != letzterTagesverbrauch) {WSRainLast24h.postUpdate(letzterTagesverbrauch)}
                      end
                  
                  
                  rule "Regen gestern & 7 Tage"
                  
                  when
                             Time cron "0 0 7 * * ? *"
                  then
                      var Number lastday = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusHours(24)).state as Number)
                      if(WSRainLast1d.state != lastday) {WSRainLast1d.postUpdate(lastday)}
                      var Number last7d = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusDays(7)).state as Number)
                      if(WSRainLast7d.state != last7d) {WSRainLast7d.postUpdate(last7d)}
                  end
                  
                  
                  rule "Regen letzte Woche"
                  
                  when
                             Time cron "0 0 7 ? * MON *"
                  then
                      var Number lastweek = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusDays(7)).state as Number)
                      if(WSRainLastWe.state != lastweek) {WSRainLastWe.postUpdate(lastweek)}
                  end
                  
                  rule "Regen letzten 30 Tage"
                  
                  when
                             Time cron "0 0 7 * * ? *"
                  then
                      var Number last30d = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusDays(30)).state as Number)
                      if(WSRainLast30d.state != last30d) {WSRainLast30d.postUpdate(last30d)}
                  end
                  
                  
                  rule "Regen letzten Monat"
                  
                  when
                             Time cron "0 0 7 1 * ? *"
                  then
                      var Number lastmon = (WSRainCounter.state as Number) - (WSRainCounter.historicState(now.minusMonths(1)).state as Number)
                      if(WSRainLastMon.state != lastmon) {WSRainLastMon.postUpdate(lastmon)}
                  end
                  influxdb.persist
                  Code:
                  // persistence strategies have a name and definition and are referred to in the "Items" section
                  Strategies {
                      everyMinute   : "0 * * * * ?"
                      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
                  }
                  
                  Items {
                      WSRainCounter                      : strategy = everyChange, everyMinute
                      
                  }
                  Zuletzt geändert von JoyriderLP; 13.02.2019, 21:28.

                  Kommentar

                  Lädt...
                  X