Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

OH3 empfängt keine gleichen KNX-Werte

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

    OH3 empfängt keine gleichen KNX-Werte

    Hallo zusammen,

    ich bin gearde dabei KNX und OH3 miteinander bekannt zu machen und habe folgendes Problemchen.

    Von meiner KNX-Wetterstation werden die Werte wie Temperatur, Helligkeit, Windgeschwindigkeit, usw auf den KNX-Bus versendet. Testweise werden alle Werte jede Minute gesendet.
    Generell empfange ich diese Werte auch mit OH3, aber nur wenn diese sich vom Wert her ändern. Bleibt der Wert wie z.b. die Windgeschwindigkeit gleicht, dann bleibt das event.log leer.
    Die Werte laufen bei mir in eine InfluxDB und werden mit Grafana visualisiert. Das sieht dort unschön aus, wenn der Regenstatus oder die Windgeschwindigkeit keine Updates mehr bekommen und die Graphen offen auf dem letzten empfangenen Wert hängen.

    Da muss es doch einen Lösung geben.
    Wie gesagt auf KNX-Seite sehe ich die zyklischen Telegramme.

    Schon mal vielen Dank vorab!
    Martin

    Hier mein things-Definition:
    Code:
    Bridge knx:ip:bridge [
        type="TUNNEL",
        ipAddress="192.168.178.xxx",
        portNumber=xxxx,
        localIp="192.168.178.xxx",
        readingPause=50,
        responseTimeout=10,
        readRetriesLimit=3,
        autoReconnectPeriod=60,
        localSourceAddr="0.0.0"
    ] {
        Thing device generic [
            address="1.1.32",      
            fetch=true,
            pingInterval=300,
            readInterval=60
        ] {
    
        //Wetterstation
            Type number                 : KNX_Wetterstation_Hell_West               [ ga="9.004:7/2/4" ]        
            Type number                 : KNX_Wetterstation_Hell_Sued               [ ga="9.004:7/2/3" ]        
            Type number                 : KNX_Wetterstation_Hell_Nord               [ ga="9.004:7/2/2" ]        
            Type number                 : KNX_Wetterstation_Hell_MAX                [ ga="9.004:7/2/5" ]        
            Type number                 : KNX_Wetterstation_Temp                    [ ga="<7/1/6" ]        
            Type number                 : KNX_Wetterstation_Wind                    [ ga="<7/5/0" ]        
            Type switch                 : KNX_Wetterstation_Regen                   [ ga="1.001:<7/3/0" ]
        }
    }​
    ​
    Und hier meine items-Definition:
    Code:
    //Wetterstation
    Number                 Wetterstation_Hell_West      "WS Helligkeit West [%d lux]"          <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_West" }    
    Number                 Wetterstation_Hell_Sued      "WS Helligkeit Süd [%d lux]"           <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_Sued" }      
    Number                 Wetterstation_Hell_Nord      "WS Helligkeit Nord [%d lux]"          <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_Nord" }        
    Number                 Wetterstation_Hell_MAX       "WS Helligkeit MAX [%d lux]"           <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_MAX" }      
    Number                 Wetterstation_Temp           "WS Temperatur [%.2f °C]"              <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Temp" }      
    Number                 Wetterstation_Wind           "WS Windgeschwindigkeit [%.2f m/s]"    <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Wind" }        
    Switch                 Wetterstation_Regen          "WS Regenstatus [%s]"                  <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Regen" }  ​
    Zuletzt geändert von mortyPi; 01.10.2022, 12:38.

    #2
    In events.log werden nur Änderungen und Commands angezeigt, aber keine Updates ohne Wertänderung.
    Ob ein Item über das Binding ein Update erhalten hat, kannst Du am Zeitstempel des Items ablesen - den könntest Du auf ein zweites Item verlinken, das kann man im Link zum Item auswählen.
    Oder Du lässt eine Rule auf reveived update für diese Items triggern und loggst dann gezielt von dort aus - das landet allerdings in openhab.log, nicht in events.log)
    Eventuell kann man das Logging auch leicht ergänzen, so dass auch die Updates mit geloggt werden.

    Kommentar


      #3
      Danke für den Tipp.

      Aber es geht bei mir immer noch nicht :-(
      Ich habe es mit der Rule versucht.
      Jedes KNX-Telegram wird empfangen und ich kann mir auch eine loginfo absenden mit der ich sehe, dass das received update stattgefunden hat.
      Aber auch die neu angelegten items werden bei mir in InfuxDB nur sichtbar, wenn sich deren Wert ändert.
      Und auch in der openhab.log sehe ich NUR items die ein change to gesehen haben.

      Ich denke es liegt an der Influx Einstellung.
      OH3 schreibt ja alle items in die Influxdb. Weiß einer von Euch wo man in OH3 die Persistenz einstellen kann (everychange, everyminute, ...)?

      Kommentar


        #4
        Nur wieso willst du die Daten redundant in die Datenbank schreiben? Andere geben sich viel Mühe, dass die Daten nur in Datenbanken geschrieben werden, wenn Sie sich ändern, damit man Platz sparen kann.

        Kommentar


          #5
          Hallo tobiasr,

          als Graph in z.B. Grafana sieht es nicht schön aus, wenn zwischen den einzelnen Messpunkten interpoliert wird. Oder es nervt mich auch, wenn ich mir z.B. die letzen 24h in Grafana ansehen möchte, und es überhautp keinen Messpunkt gibt, da sich der Wert (Regen/Windgeschw.) seit dem nicht mehr geändert hat.

          Ich gebe Dir Recht, es ist nicht clever redundante Daten in die DB zu schreiben. Aber ein Eintrag alle 60min (so würde ich es später in der Produktiv-Umgebung einstellen) sehe ich hier nicht als groß speicherfressend an.
          Zuletzt geändert von mortyPi; 25.09.2022, 13:56.

          Kommentar


            #6
            Zitat von mortyPi Beitrag anzeigen
            OH3 schreibt ja alle items in die Influxdb.
            Das aber auch nur, wenn du es selbst so eingerichtet hast.
            Im Standard wird die rrd4j Persistenz genutzt.

            Unabhängig davon:

            Zitat von mortyPi Beitrag anzeigen
            Weiß einer von Euch wo man in OH3 die Persistenz einstellen kann (everychange, everyminute, ...)?
            Das müsstest du analog zu openHAB 2 weiter mit den persist Dateien in deinem Config-Ordner machen.
            Da ist mir gerade ad-hoc kein UI Weg bekannt.
            Das sollte somit dann auch dein Grafana-Problem lösen, wenn du die Werte minütlich in die InfluxDB schreibst.

            ---

            Das große ABER:

            Wenn du openHAB samt InfluxDB auf einem Pi mit SD-Karte betreibst, würde ich mir dann anbei auch Gedanken machen, wie viel ich da wirklich dauerhaft in kurzen Intervallen drauf schreiben möchte.
            Es gilt der altbekannte Satz "Kein Backup, kein Mitleid", wenn die SD Karte in die ewigen Jagdgründe abhaut.

            Kommentar


              #7
              Wenn Du die Persistence mal gleich erwähnt hättest

              Punkt 1: Das Standard Verhalten sollte everyChange, everyMinute sein, weil rrd4j auf everyMinute angewiesen ist. Wenn Du ein abweichendes Verhalten haben möchtest, musst Du das, wie schon immer, über <servicename>.persist Dateien im passenden Konfigurationsordner erledigen, also z.B.
              /etc/openhab/persistence/influxdb.persist:
              Code:
              Items {
                  gInflux* : strategy​ = everyUpdate
              }
              Ab sofot werden alle Items, die zur Gruppe gInflux gehören, in InfluxDB persistiert, und zwar mit der Strategie everyUpdate.

              Punkt 2: Solange mindestens zwei Messwerte für einen beobachteten Zeitraum zur Verfügung stehen, wird Grafana (so denn nicht nullValue als Zwischenwert konfiguriert ist) die Messwerte mit einander verbinden. Wenn allerdings die Updates z.B. im Minutenabstand erfolgen und Du weniger als eine Minute betrachtest, wirst Du wieder nichts sehen. Du wirst also immer Probleme mit der Darstellung bekommen, wenn die Rahmenbedingungen ungünstig sind.

              Grundsätzlich sollte man unnötige Messwerte in Datenbanken vermeiden und lieber einen Workaround für die Darstellung suchen.
              Zuletzt geändert von udo1toni; 27.09.2022, 06:05.

              Kommentar


                #8
                Danke für Eure Tipps.

                udo1toni:
                zu Punkt 1) habe ich nun umgesetzt. Aber in der Influxdb-Messreihe kommen weiterhin keine neuen Werte hinzu. Muss ich wenn ich bei OH3 die influxdb.persist befülle, dann auch in /etc/openhab/services/influxdb.cfg befüllen? Denn diese ist komplett auskommentiert.
                In der OH3 habe ich bisher die Influxdb-Einstellungen in der UI eingetragen.

                zu Punkt 2) das ist mir klar. In meiner Visualisierung zeigen die Grafana-Graphen die letzen 24h an. Daher habe ich dann > 2 Messwerte.

                Kommentar


                  #9
                  Nein, die Datei influxdb.cfg wird nicht benötigt. Sie enthält nur Konfiguration zur Verbindung openHAB<->InfluxDB, Und auch das nur, wenn die Konfiguration über die Datei angelegt wird, was unter openHAB3 nicht mehr üblich ist.
                  Wie genau sieht der Inhalt Deiner influxdb.persist jetzt aus?

                  Eventuell muss der Strategies -Bereich auch mit angegeben werden, dann sähe die Datei so aus:
                  Code:
                  Strategies {
                      everyMinute : "0 * * * * ?"
                  }
                  Items {
                      gInflux* : strategy​ = everyUpdate
                  }​
                  Wie oben erwähnt müssen im Beispiel die Items alle zur Gruppe gInflux gehören. Alternativ kannst Du auch einzelne Items konfigurieren oder auch alle Items persistieren lassen, aber das verursacht natürlich eine Menge unnötiger Daten in der Datenbank.

                  Hast Du schon mal versucht, openHAB neu zu starten?

                  Kommentar


                    #10
                    Ja die Definition der Strategien habe ich hinzugefügt.
                    Hier meine 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 {
                    gWS_Influx : strategy​ = everyChange, everyMinute
                    Wetterstation_Wind_DB : strategy​ = everyChange, everyMinute
                    Wetterstation_Regen_DB : strategy​ = everyChange, everyMinute
                    
                    }​


                    Ich habe neben der Group auch die Items direkt mit aufgenommen. Aber die Influxdb füllt sich nicht.
                    grafik.png
                    (PS: Die Uhrzeit im Influxdb ist auch noch falsch.)​

                    Auch läuft das Item Wetterstation_Regen_DB, welches im event.log Änderungen zeigt auch nicht in die Datenbank.

                    Kommentar


                      #11
                      Wenn gWS_Influx ein Group Item ist, welchem Du die zu persistierenden Items zugewiesen hast, dann fehlt da ein *.
                      Der Stern bedeutet: "Statt das Item selbst zu persistieren, persistiere die unmittelbaren Member dieses Group Items."
                      Es handelt sich also nicht um einen Joker.

                      Das Item Wetterstation_Regen_DB scheint mir kaputt. Es toggelt ohne dass auch nur eine Millisekunde vergeht zwischen den beiden Zuständen hin und wieder zurück. Ich bin mir ziemlich sicher, dass so etwas nicht in die Datenbank übertragen werden wird. Beim Item Wetterstation_Wind_DB​ sieht es so aus, dass Du Commands sendest. Der Status des Items ändert sich aber nicht.

                      Zeitprobleme:

                      Hast Du die Systemzeit korrekt eingestellt? In der GNU/Linux Konsole sudo dpkg-reconfigure tzdata aufrufen und korrekte Zeitzone auswählen (Europe/Berlin). mit sudo dpkg-reconfigure locales prüfen, dass die Umgebung auf deutsch konfiguriert ist (de_DE.UTF-8).
                      openHAB sollte sich nach der Systemzeit richten, falls das nicht funktioniert (spätestens nach einem Neustart des gesamten Systems), müsstest Du die Zeit von openHAB über /etc/default/openhab setzen (sudo nano /etc/default/openhab​ und dort unter EXTRA_JAVA_OPTS einen Eintrag -Duser.timezone=Europe/Berlin hinzufügen. Steht auch auskommentiert mit dabei. Gewöhnlich sollte es nicht nötig sein, diesen Parameter zu setzen.
                      Wenn die Systemzeit weiterhin nicht stimmt (prüfen mit date) hast Du evtl. noch kein ntp im System eingerichtet. Dann schau mal, was der Befehl timedatectl ausspuckt. Wenn da NTP enabled: no steht, kannst Du es mit sudo timedatectl set-ntp true aktivieren.
                      Welche NTP Server genutzt werden wird in /etc/systemd/timecyncd.conf festgelegt.
                      Zuletzt geändert von udo1toni; 28.09.2022, 11:46.

                      Kommentar


                        #12
                        Hallo udo1toni,

                        im openhab.log habe ich folgende Fehlermeldung gefunden:

                        Code:
                        [FONT=Courier New]2022-09-28 22:01:23.933 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'influxdb.persist' has errors, therefore ignoring it: [12,27]: extraneous input '​' expecting '='[/FONT]
                        grafik.png

                        Nachdem ich Zeile 12 als Kommentar gesetzt habe und die 2 Items explizit aufgenommen habe, hat das Schreiben in die Influxdb funktioniert.
                        Also ich sehe in Zeile 12 keinen Fehler. Aber dieser Workaround funktioniert jetzt für mich.
                        Trotzdem würde mich interessieren was dort nicht stimmt.

                        Ich werde jetzt den Zyklus hoch auf 1h setzen um die DB zu schonen.
                        Und auch vielen Dank für Deine Unterstützung bei der Einstellung der Systemzeit. :-)

                        Grüße
                        Martin

                        Kommentar


                          #13
                          Ich frage mal so: Hast Du die Gruppe gWS_Influx auch als Group Item angelegt?

                          Kommentar


                            #14
                            Ja, habe ich.

                            Code:
                            //Wetterstation
                            Group gWetterstation
                            Group gWS_Influx
                            
                            Number                 Wetterstation_Hell_West      "WS Helligkeit West [%d lux]"          <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_West" }    
                            Number                 Wetterstation_Hell_Sued      "WS Helligkeit Süd [%d lux]"           <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_Sued" }      
                            Number                 Wetterstation_Hell_Nord      "WS Helligkeit Nord [%d lux]"          <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_Nord" }        
                            Number                 Wetterstation_Hell_MAX       "WS Helligkeit MAX [%d lux]"           <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Hell_MAX" }      
                            Number                 Wetterstation_Temp           "WS Temperatur [%.2f °C]"              <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Temp" }      
                            Number                 Wetterstation_Wind           "WS Windgeschwindigkeit [%.2f m/s]"    <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Wind" }        
                            Number                 Wetterstation_Wind_DB        (gWS_Influx)
                            Switch                 Wetterstation_Regen          "WS Regenstatus [%s]"                  <none>       { channel="knx:device:bridge:generic:KNX_Wetterstation_Regen" }  
                            Switch                 Wetterstation_Regen_DB       (gWS_Influx)​

                            Kommentar


                              #15
                              Strange.
                              Das Einzige, das mir dazu einfiele, wäre ein "falsches" Leerzeichen (was aber eigentlich nicht diese Auswirkungen haben sollte). "Falsch" in dem Sinne, dass z.B. <shift>+Leerzeichen oder <tab> statt Leerzeichen eingegeben wurde.

                              Kommentar

                              Lädt...
                              X