Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin OperationLog

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

    #16
    Zitat von Onkelandy Beitrag anzeigen
    Danke für das Plugin, ist echt super! Allerdings bekomme ich immer eine Fehlermeldung im Smarthome Log - dabei werden die Einträge brav sowohl in der Visu angezeigt als auch in das operationlog-File geschrieben.. Any ideas?
    Kannst Du bitte Deine Konfigurationen posten?

    Kommentar


      #17
      plugin.conf
      Code:
      [Nachtlogger]
         class_name = OperationLog
         class_path = plugins.operationlog
         name = Nachtlogger
         maxlen = 20
         cache = yes
      Logik:
      Code:
      sh.Nachtlogger('INFO', 'Test')
      Wenn ich cache = no einstelle, gibt es keine Fehlermeldung, wenn ich's richtig gesehen habe. Auch nicht, wenn's über ein Item upgedatet wird. Vielleicht lag's aber auch generell am Neustart von smarthome.py?

      Kommentar


        #18
        Hi,

        kurze Frage: Was macht denn der cache in diesem Zusammenhang? Das habe ich irgendwie nicht gepeilt, wieso ein cache für ein Log wichtig ist...

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #19
          Sonst sind nach einem Neustart von sh.py alle Einträge weg.

          Kommentar


            #20
            Alles klar, danke.
            OpenKNX www.openknx.de

            Kommentar


              #21
              Zitat von Onkelandy Beitrag anzeigen
              Danke für das Plugin, ist echt super! Allerdings bekomme ich immer eine Fehlermeldung im Smarthome Log - dabei werden die Einträge brav sowohl in der Visu angezeigt als auch in das operationlog-File geschrieben.. Any ideas?
              oops, das war ein Bug. Ich habe noch nicht verstanden wann python ein Zahl als float statt integer behandelt und bin in der Falle getappt. Ich habe auch ein Bug gefunden, die dazu führt das Logeinträge aus Items nicht gecached werden. Beides habe ich gefixt und in ein neuen Branch gelegt:

              fix-operationlog-cacheitem-maxlen

              Edit 02.02.2016: aktueller Version

              Viele Grüße,

              Jan
              Zuletzt geändert von JanT; 02.02.2016, 22:02. Grund: Link aktualisert

              Kommentar


                #22
                Jetzt ist die Meldung weg.. Aber das mit dem Cache hab ich nicht verstanden.. Das Plugin schreibt doch immer in ein Log File, oder? Was wird dann gecacht? Der Eintrag für die Visu? Denn dort erscheint bei mir nach dem Neustart nur eine leere Liste

                Kommentar


                  #23
                  Hi, so ist es wohl, nach dem Neustart wird der Cache eingelesen und dann hast du die Liste wieder. Gruß Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    #24
                    Hi,

                    es werden bis zu maxlen Anzahl Logeinträge im Speicher gehalten die auch vom Visu abgerufen werden kann. Mit cache=true wird die liste, genau so wie SmartHome items mit den eintrag cache=true, bei Änderungen in eine Datei gespeichert. Nach ein Neustart von SmartHome werden die Logeinträge vom cache ins Speicher gelesen und sind damit weiterhin in der Visu darstellbar.

                    @Onkelandy: Ich habe Deine Konfiguration gerade bei mir getestet und es geht. Funktioniert denn cache=true für Items bei Dir? Wenn nicht, könnte es sein, dass der user worunter smarthome.py läuft keine schreibrechte in das Cacheverzeichnis hat? Allerdings müsstest Du das im log sehen...

                    Viele Grüße,

                    Jan

                    Kommentar


                      #25
                      Jetzt hat es geklappt.. die Cachefiles sind vorhanden. Merci - das ist richtig cool

                      Kommentar


                        #26
                        Hallo JanT,
                        habe Dein Plugin eingebaut und danach viele Fehlermeldungen erhalten. Ich konnte daraus schließen, das das Verzeichnis /var/log/operationlog/ fehlte. Nach Anlegen des Verzeichnisses funktionierte es. Ich ging davon aus, das das Verzeichnis vom Plugin angelegt wird. Die Änderungen werden richtig in die Dateien Z.B., "2016-01-31-mylogname1.log" und "yearly_log-mylogname2-2016.log" geschrieben.
                        Noch eine Frage: Ich bekomme die Darstellung der Logs in SmartVisu noch nicht hin. Wie muß der Code aussehen? Vielleicht hast Du ein Beispiel für mich?
                        Gruß
                        Hans

                        Kommentar


                          #27
                          Hallo Hans,

                          Zitat von Tontechniker Beitrag anzeigen
                          ...Ich ging davon aus, das das Verzeichnis vom Plugin angelegt wird.
                          Das ist auch so, bzw. sollte so sein. Darf denn Dein smarthomy.py user das Verzeichnis anlegen? Das Verzeichnis wird - damit es für möglichst viele funktionieren sollte - relativ zur smarthome Verzeichnis angelegt in ./var/log/operationlog/. Auf dem RP Image ergibt das den absoluten Pfaden /usr/smarthome/var/log/operationlog/.

                          Zitat von Tontechniker Beitrag anzeigen
                          Ich bekomme die Darstellung der Logs in SmartVisu noch nicht hin. Wie muß der Code aussehen? Vielleicht hast Du ein Beispiel für
                          Der smartVISU Bespielcode für das Bild im ersten Post und Beispiele in README.md auf GitHub ist wie folgt:

                          Code:
                              <h3>Log mylogname1</h3>
                              {% import "status.html" as status %}
                              {{status.log('mylogger1', 'mylogname1', 10) }}
                          
                              <h3>Log mylogname2</h3>
                              {% import "status.html" as status %}
                              {{status.log('mylogger2', 'mylogname2', 10) }}
                          Viele Grüße,

                          Jan
                          Zuletzt geändert von JanT; 01.02.2016, 00:00.

                          Kommentar


                            #28
                            Hallo Jan,
                            vielen Dank für Deine Antwort.
                            Banaler Anfänger-Fehler: hatte "{% import "status.html" as status %}" vergessen.
                            Das mit dem Verzeichniss werde ich heute Abend noch mal testen.
                            Beste Grüße
                            Hans

                            Kommentar


                              #29
                              Hi,

                              ich habe python programmierung geübt . Rausgekommen ist ein einigermaßen flexiblen Möglichkeit die Logeinträge bei item update zu definieren und zu filtern bei welche Werte ein Logeintrag erzeugt werden soll.

                              Ich fasse mich hier kurz und zeige nur Beispielkonfigurationen und das Ergebnis (Bild unten). Für weitere Informationen, siehe das bei GitHub zugehörige README.md. die aktuelle Version ist:

                              feature-operationlog-plugin-add-itemlogtext

                              Bitte testen. Das Modul ist komplexer geworden und es gibt bestimmt Konfigurationsfälle die ich noch nicht richtig abfange.

                              Viele Grüße,

                              Jan

                              Code:
                              [foo]
                                  name = Foo
                                  [[bar]]
                                      type = num
                                      olog = mylogname1
                                   #  olog_rules = *:value
                                   #  olog_txt = {id} = {value}
                                   #  olog_level = INFO
                                  [[bar1]]
                                      type = num
                                      name = Bar1
                                      olog = mylogname1
                                      olog_rules = 2:two | 0:zero | 1:one | *:value
                                      olog_txt = This is a log text for item with name {name} and value {value} mapped to {mvalue}, parent item name is {pname}
                                      olog_level = ERROR
                              
                                  [[bar2]]
                                      type = bool
                                      name = Bar2
                                      olog = mylogname1
                                      olog_rules = True:the value is true | False:the value is false
                                      olog_txt = This is a log text for {value} mapped to '{mvalue}', {name} changed after {age} seconds
                                      olog_level = warning
                              
                                  [[bar3]]
                                      type = str
                                      name = Bar3
                                      olog = mylogname1
                                      olog_rules = t1:text string number one | t2:text string number two | *:value
                                      olog_txt = text {value} is mapped to logtext '{mvalue}', expression with syntax errors: {eval=sh.this.item.doesnotexist()*/+-42}
                                      olog_level = critical
                              
                                  [[bar4]]
                                      type = num
                                      name = Bar4
                                      olog = mylogname1
                                      olog_rules = lowlim:-1.0 | highlim:10.0
                                      olog_txt = Item with name {name} has lowlim={lowlim} <= value={value} < highlim={highlim}, the value {eval='increased' if sh.foo.bar4() > sh.foo.bar4.prev_value() else 'decreased'} by {eval=round(abs(sh.foo.bar4() -\
                               sh.foo.bar4.prev_value()), 3)}
                                      olog_level = info
                              You do not have permission to view this gallery.
                              This gallery has 1 photos.

                              Kommentar


                                #30
                                Oh ja.. Meine ersten Tests waren erfolgreich. Das ist wirklich sehr cool, vielen Dank!

                                Was allerdings nicht geklappt hat: wenn der Item-Wert einen "komplexeren" String annimmt.. Also zB:
                                Code:
                                ['ekey_string']
                                        knx_listen = 10/0/1
                                        type = str
                                        visu_acl = rw
                                        knx_dpt = 24
                                        cache=true
                                        enforce_updates  = yes
                                        olog = Anwesenheitslogger
                                        olog_rules = '0xaa/Mann a b C':Mann | '0xcf/Frau a b C':Frau
                                        olog_txt = {mvalue} ist laut ekey zuhause.
                                        olog_level = INFO
                                Dann bekomme ich die Fehlermeldung
                                Code:
                                2016-02-04 15:49:12,335 ERROR    Main         Item ekey_string: problem running <bound method OperationLog.update_item of <plugins.operationlog.OperationLog object at 0x763058b0>>: 'SmartHome' object has no attribute 'id' -- item.py:__update:382
                                Traceback (most recent call last):
                                  File "/usr/smarthome/lib/item.py", line 380, in __update
                                    method(self, caller, source, dest)
                                  File "/usr/smarthome/plugins/operationlog/__init__.py", line 240, in update_item
                                    'pid': item.return_parent().id(),
                                AttributeError: 'SmartHome' object has no attribute 'id'
                                Und wenn ich's in der Config in Anführungszeichen setze, wird's ignoriert - kommt keine Meldung im Log. Any ideas?
                                Zuletzt geändert von Onkelandy; 04.02.2016, 16:40.

                                Kommentar

                                Lädt...
                                X