Ankündigung

Einklappen
Keine Ankündigung bisher.

Verhaltensänderung nach Umstellung SQLite Plugin -> Database Plugin (MySQL/SQLite)

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

    #16
    Lonie dazu reicht in der query methode das hier einzufügen
    Code:
    def _query(self, func, query, params, cur=None):
        self.logger.debug(query)
    Da es sonst wieder Aufschreie von nicht logging.yaml konfigurierenden Usern gibt, scheue ich etwas, das direkt zu integrieren. Das loggt dann halt ALLE Queries... Alternativ in die _fetchall

    Was denkt ihr? Ich komme für meinen Teil gut klar, bei Verständnisproblemen das lokal reinzunehmen.

    Oder ich baue in die GUI ein Feld ein, dass das aktuelle Query anzeigt.. Wäre auch ne Idee. Da stehen dann halt die Timetamps für den aktuellen Tag. Ist was anderes als das aus nem Item abzufragen - dann bräuchte man wieder Eingabefelder um das anzupassen mhmm
    Zuletzt geändert von psilo; 27.07.2018, 05:40.

    Kommentar


      #17
      zunächst mal ein dickes Lob für die neuen Backend Funktionen, das ist "echt" praktisch, dass man sich die DB-Inhalte hier so einfach ansehen kann. Wer das nicht nutzt ist selber Schuld. Habe ich allerdings eher zufällig entdeckt. Mit dem mysqladmin ist das wesentlich umständlicher; das DB Konzept mit den item-ids ist im Administrator schwer zu handlen, aber noch schwieriger ist es jeweils die timestamps umzurechnen.
      Jetzt sind auch Laien in der Lage (fast) alles über das Backend zu managen.

      Kommentar


        #18
        zu #13
        ich glaube ich stelle das jetzt wieder auf die eval Logik ( aus #1 ) zurück.
        ( und 'init' ist natürlich auch ein toller Tipp; kämpfe häufiger mit dem Neustart Problem )
        Ich brauche nur einmal am Tag die Werte; zudem schon es die DB.
        habe jetzt erkannt, dass die Evaluierung falsch ist, ich muss 'min' nehmen ( Startwert des Tages ).
        hat wahrscheinlich mit SQLite funktioniert, weil der aktuelle Wert zum Zeitpunkt des eval noch nicht in der DB stand

        danke Wil

        Kommentar


          #19
          sorry,
          database: 'init' ist nirgendwo dokumentiert, auch nicht im readme.
          ersetzt dies auch cache: 'on' ?

          Kommentar


            #20
            ja, sqlite hatte das übrigens auch schon.. vielleicht auch nicht dokumentiert

            merks mir für die database plugin doku mal vor, auch wenn das plugin eigentlich ja nicht von mir ist..

            PS: die Info zu den plugin webifs gabs übrigens in den release notes und hier: https://www.smarthomeng.de/das-backend-plugin

            ich glaube echt das viele gar nicht wahrnehmen, was es inzwischen alles gibt.. bspw auch das autocomplete im logikeditor (bald dort dann sogar für plugin apis)
            Zuletzt geändert von psilo; 27.07.2018, 11:57.

            Kommentar


              #21
              wenn ich die GUI zum database plugin benutze erscheinen im log immer translate Fehlermeldungen:

              Code:
              2018-07-27  12:53:20 INFO     plugins.backend.utils Language 'de': Translation for 'Pakete für die Testsuite' is missing
              2018-07-27  12:53:20 INFO     plugins.backend.utils Language 'en': Translation for 'Pakete für die Testsuite' is missing
              2018-07-27  12:53:20 INFO     plugins.backend.utils translate: -> Language 'de': Translation for 'Pakete für die Testsuite' is missing
              2018-07-27  12:53:20 INFO     plugins.backend.utils Language 'de': Translation for 'Pakete für den Bau der Dokumentation' is missing
              2018-07-27  12:53:20 INFO     plugins.backend.utils Language 'en': Translation for 'Pakete für den Bau der Dokumentation' is missing
              2018-07-27  12:53:20 INFO     plugins.backend.utils translate: -> Language 'de': Translation for 'Pakete für den Bau der Dokumentation' is missing

              Kommentar


                #22
                PS: ich vermute, dass Du Dir in PHPMyadmin auch nen View basteln könntest, der direkt timestamps umrechnet.. ich bevorzuge hier aber auch die GUI in SHNG. Da baue ich sicher noch mehr rein

                Kommentar


                  #23
                  whe Die Fehler beziehen sich aber auf das Backend (siehe Meldung), nicht das Database WebIF

                  Es sind zudem INFO's und keine ERRORs.. Soviel zu meinem Kommentar weiter oben über User, die das Logging nicht sauber konfigurieren ,-)))

                  PS: hab die Translations im Dev mal ergänzt. Habe Infos ausgeblendet, daher kams bei mir nie.
                  Zuletzt geändert von psilo; 27.07.2018, 12:14.

                  Kommentar


                    #24
                    Zitat von psilo Beitrag anzeigen
                    PS: ich vermute, dass Du Dir in PHPMyadmin auch nen View basteln könntest, der direkt timestamps umrechnet.. ich bevorzuge hier aber auch die GUI in SHNG. Da baue ich sicher noch mehr rein
                    Dafür reicht auch die Konsole. Die View für die Wertetabelle überlasse ich dem geneigten Leser

                    Code:
                    CREATE VIEW item_normalized as select id,name,FROM_UNIXTIME(time/1000) time,val_str,val_num,val_bool,FROM_UNIXTIME(changed/1000) changed from item;
                    PS: Man kann beide Tabellen natürlich auch im View durch einen Join zusammenführen und nicht immer nach den ids suchen zu müssen.
                    Grüße
                    Marcel

                    Kommentar


                      #25
                      kann ich die translations auch ergänzen, ohne auf DEV umzusteigen ?

                      Basteln kann man sicher vieles, wenn man sich mit all diesen Dingen auskennt.
                      ich betrachte das immer aus der Sicht des dump users
                      SmarthomeNG und SmartVISU sind ja kein Framework, sondern eine Anwendung.
                      ich versuche im Bekanntenkreis immer mehr Anwender für KNX und SmartVISU zu begeistern.
                      die scheitern aber als Laien an der Komplexität.

                      Aber; es wird immer besser und einfacher.

                      zum Logging:
                      ich versuche schon seit Monaten das "sauber" zu konfigurieren.
                      ist jetzt etwas besser geworden mit der v1.5
                      bin aber immer noch nicht zufrieden; nur WARNING ist mir zu wenig; INFO zu viel.
                      sicher kann ich die Meldungen auch händisch im Code beeinflussen; ich möchte aber nicht rumbasteln, sondern die Dinge so nutzen, wie sie released werden.
                      git pull ist hier auch eine einfache Sache

                      Kommentar


                        #26
                        whe nur wenn du die dateien hier aus dem develop ersetzt: https://github.com/smarthomeNG/plugins/tree/develop/backend/locale ich würde aber einfach in der logging.yaml für das Backend auf ERROR umstellen
                        Drum konfiguriert man das Logging ja auch je nach Plugin anders.

                        PS: sei Dir bewusst, dass das Ersetzen der Dateien dann Deinen Checkout beeinflusst..

                        Das mit der Menge der Lognachrichten hängt halt auch damit zusammen, wie Pluginautoren ihre Log Outputs gestalten. Da ist sicher jeder individuell.

                        Schon klar mit dem Bedienkomfort.. Aber das braucht alles seine Zeit.. Alleine das Autocomplete für Pluginmethodenim Logikeditor hat mich 1 Sonntagnachmittag und 1 Abend gekostet... Wir geben uns Mühe Das mit dem Database Plugin erleichtert mir auch einiges. Ingesamt auch für mich komfortabler als ein View.
                        Zuletzt geändert von psilo; 27.07.2018, 12:56.

                        Kommentar


                          #27
                          zu #19

                          ersetzt jetzt database = init das cache = on ?
                          ich hatte auch mal einen eval_trigger auf die Schalter gesetzt, damit die Laufzeiten jeweils beim aus- und einschalten in die DB geschrieben werden.
                          musste aber feststellen, dass dort Stündlich Werte ankamen; am backend server stand dann im item: geändert durch : cache

                          trotz guter neuer Dokumentation bleiben halt weiter viele Fragen offen.

                          Kommentar


                            #28
                            habe ich oben doch geschrieben: JA ("ja, sqlite hatte das übrigens auch schon.. vielleicht auch nicht dokumentiert ")... es laedt halt aus der DB anstatt aus einem file

                            Kommentar


                              #29
                              PS: wir kennen auch nicht alle antworten. am besten findet man sie durch ansehen von quellcode und gerne teilen!

                              Kommentar


                                #30
                                kann es sein dass "database: 'init' nur beim Neustart die Werte in die DB schreibt.
                                müsste ich dann "database: 'init', 'yes' " angeben.
                                ich habe jetzt folgendes bei den items definiert:

                                Code:
                                    Laufzeit:
                                
                                        Pumpe:
                                            type: num
                                            visu: 'yes'
                                            visu_acl: rw
                                            database: 'init'
                                
                                            heute:
                                                type: num
                                                visu: 'yes'
                                                visu_acl: rw
                                                database: 'init'
                                                eval_trigger: Pool.Laufzeit.Pumpe
                                                eval: sh.Pool.Laufzeit.Pumpe() - sh.Pool.Laufzeit.Pumpe.db('min', '1d')
                                                sv_widget: "{{ plot.period('item', 'item', 'max', '30d', '', '', '', '', 'Pumpe', '', '', '', '1d') }}"
                                und wieder die alte Logik, die mir kurz vor Mitternacht die Werte liefern soll:

                                Code:
                                # OSF1
                                import urllib.request
                                req = urllib.request.urlopen("http://192.168.178.40/Laufzeit.htm")
                                data = req.read().decode('UTF-8')
                                words = data.split()
                                sh.Pool.Laufzeit.Pumpe(words[0])
                                sh.Pool.Laufzeit.Heizung(words[2])
                                sh.Pool.Laufzeit.Solar(words[4])
                                in der DB landen aber um diese Uhrzeit keine Werte, sondern nur beim Restart von SHNG

                                Kommentar

                                Lädt...
                                X