Ankündigung

Einklappen
Keine Ankündigung bisher.

Letzte 5 Werte/Zeitpunkte eines Items darstellen

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

    Letzte 5 Werte/Zeitpunkte eines Items darstellen

    Hallo,

    ich möchte in der smartvisu die letzten 5 Zeitpunkte und Werte eines Items in einer Tabelle mit basic.print darstellen.

    Dazu muss ich vermutlich 5 Hilfsitems anlegen oder?

    Wie muss der Datenbankaufruf sh.Haustechnik.Stromzaehler.db('?', '?', '?') aussehen um mit den letzten, vorletzten, vorvorletzten... Wert bzw. Zeitpunkt aus der DB zu holen?

    Danke.

    #2
    Ist eher die frage, was du denn darstellen möchtest
    einen konkreten wert we einer bestimmten Uhrzeit? Oder einen Max/Min oder Mittelwert? In einem Zeitfenster..

    Kommentar


      #3
      Also so wie ich das dem Database Plugin Code entnehme, geht das so wohl nicht... da kann man nur Werte eines Zeitraums abfragen (Funktion readLogs).

      Entweder müsste man das Plugin erweitern, oder gleich auf eine Logik umstellen, die bei jedem Item Update getriggert wird.
      Diese übernimmt dann das Weiterrücken des aktuellen Wertes und vorherigen Wertes auf 5 einzelne Items mit aktivem cache.

      Kommentar


        #4
        Die bessere Variante wäre wohl das Plugin zu erweitern um echte raw Werte zu lesen. Series geht z.B. auch nicht, weil dort der vorletzte Werte doppelt auftaucht.
        Es sollte eine Funktion im Plugin geben, die einfach nur SQL mässig die Top 5 Werte bezüglich der Zeit zurückgibt. Wer sich dafür berufen fühlt: nur zu!

        Kommentar


          #5
          Also ich fande das jetzt einfacher als Logik
          Code:
          src = trigger['source']
          logger.debug("source={}".format(src))
          src_item = sh.return_item(src)
          new_value_temp = src_item()
          new_value = new_value_temp
          for x in range(1, 11):
              dst_item = sh.items.return_item('{}.last{}'.format(src, x))
              if dst_item is not None:
                  logger.debug("dst_item={}".format(dst_item.id()))
                  new_value_temp = dst_item()
                  dst_item(new_value)
                  new_value = new_value_temp
          Dann muss man nur noch unterhalb des Items von dem man die Werte haben will (in meinem Beispiel haus.zaehler) folgende Items ergänzen:
          Code:
          haus:
              zaehler:
                  type: num
          
                  last1:
                      type: num
                      cache: 'On'
                  last2:
                      type: num
                      cache: 'On'
                  last3:
                      type: num
                      cache: 'On'
                  last4:
                      type: num
                      cache: 'On'
                  last5:
                      type: num
                      cache: 'On'
          Und der Logik natürlich das Item als watch_item zuordnen

          Code:
          watch_item = haus.zaehler
          Die Schleife läuft bis last10.... andernfalls gegebenfalls anpassen
          Zuletzt geändert von TCr82; 04.11.2019, 22:02.

          Kommentar

          Lädt...
          X