Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - knx_read mit Cache-Alter?

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] - √ - knx_read mit Cache-Alter?

    Es kann ja mal vorkommen, dass eine Größe ausfällt und nicht mehr auf den KNX geschrieben wird. Wenn ich nun diesen Wert per knx_read() aus dem Cache lese, bekomme ich das aber nicht mit - ich glaube, dass der Wert halbwegs aktuell ist, dabei ist der uralt aus dem Cache...

    => Kann ich irgendwie abfragen wie alt der Cache-Wert ist um so ggf. auf einen Ersatzwert umzuschalten?
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    #2
    Hallo Chris

    Du kannst bei knx_read doch einfach ein Alter von 0 eingeben. Dann wird immer vom BUS und nicht aus dem Cache gelesen. Müsste mit knx_read(GA,0,DPT) gehen.

    Je nach dem ob makki da ein fallback auf den cache eingerichtet hat oder nicht, könntest du dass so machen...

    -> Wenn knx_read(GA,0,DPT) keinen Wert liefert, dann default Wert.
    Gruss Patrik alias swiss

    Kommentar


      #3
      Zitat von swiss Beitrag anzeigen
      Du kannst bei knx_read doch einfach ein Alter von 0 eingeben. Dann wird immer vom BUS und nicht aus dem Cache gelesen.
      Das ist hier leider keine Option. Denn ich will ja bewusst aus dem Cache lesen (z.B. weil der Wert von einem anderen Plugin geschrieben werden sollte)
      TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

      Kommentar


        #4
        Dann stellt sich die Frage, ob du für die "interne Kommunikation" nicht über das globale $plugin_info die Werte verteilen könntest?
        Gruss Patrik alias swiss

        Kommentar


          #5
          Jein, das Alter des Cache-Eintrags gibt die eibd-API nicht her, wäre aber auch von mir ein Feature-Wunsch..

          Indirekt geht es aber: knx_read( <Gruppenadresse> ,<maxAlterInSekunden> ,[DPT] )
          liefert NULL, wenn es im Cache zu alt ist und das darauf folgende (einmalig wenn keine AW!) Lesetelegramm nichts liefert..
          Also ungetestet, sowas wie
          Code:
          my $wert = knx_read("1/2/3",300,1);
          if (!defined $wert) {
          # ... Alarm, wert ist älter als 300s im cache und nicht von Bus lesbar
          } else { # wir haben einen aktuellen Wert bekommen
          ...
          }
          sollte es tun..

          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #6
            Age=0 liest übrigens nicht "heiss" sondern bedingungslos aus dem Cache! Ist zwar IMHO sinnvoll aber das steht an verschiedenen Stellen falsch beschrieben

            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #7
              Zitat von makki Beitrag anzeigen
              Indirekt geht es aber
              OK, dass sollte hier tatsächlich mein aktuelles Thema lösen können.

              Insbesondere für eine potentielle zukünftige "große" Logik-Engine wäre aber ein getrennter Wert natürlich sehr praktisch, d.h. die API-Änderung...
              TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

              Kommentar


                #8
                Zitat von swiss Beitrag anzeigen
                Dann stellt sich die Frage, ob du für die "interne Kommunikation" nicht über das globale $plugin_info die Werte verteilen könntest?
                Nö, nicht wenn's um ein KNX Gerät geht...

                (Das mag jetzt etwas sprunghaft aussehen, oben rede ich von einem Plugin, hier von einem anderen KNX-Teilnehmer. Letztendlich ist es egal wo's her kommt - wichtig ist, dass der Plugin-Algorithmus durch Ersatzwert-Umschaltung robust werden soll. D.h. diese Frage ist generischer Natur)
                TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                Kommentar


                  #9
                  Zitat von Chris M. Beitrag anzeigen
                  Insbesondere für eine potentielle zukünftige "große" Logik-Engine wäre aber ein getrennter Wert natürlich sehr praktisch, d.h. die API-Änderung...
                  Naja, ich hab darüber schon ein paarmal nachgedacht und den FR in den Entwürfen formuliert, genau genommen braucht man es aber (fast) garnicht, wenn man weiss wie es tickt und es richtig benutzt
                  Im Kern würde man einen Wert (Age) sinnlos/ohne Not doppelt im Speicher halten (und refreshen usw.) müssen, was bei intelligenter Verwendung garnicht nötig ist..

                  Zitat von Chris M. Beitrag anzeigen
                  Nö, nicht wenn's um ein KNX Gerät geht...

                  (Das mag jetzt etwas sprunghaft aussehen, oben rede ich von einem Plugin, hier von einem anderen KNX-Teilnehmer. Letztendlich ist es egal wo's her kommt - wichtig ist, dass der Plugin-Algorithmus durch Ersatzwert-Umschaltung robust werden soll. D.h. diese Frage ist generischer Natur)
                  Völlig einverstanden, ein "perfektes" Plugin sollte "smart" ausm Cache lesen aber merken, wenn es keine aktuellen Daten mehr bekommt

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar

                  Lädt...
                  X