Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. History überarbeitet

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    History überarbeitet

    This topic has been deleted. Only users with topic management privileges can see it.
    • sissiwup
      sissiwup last edited by

      @iben:

      @sissiwup

      Wie hast du deine dropdown Auswahl in deinem Screenshot oben erstellt? (OG BAD, 1 Tag) `

      Hallo,

      schau mal da:

      http://forum.iobroker.de/viewtopic.php?f=30&t=1498

      1 Reply Last reply Reply Quote 0
      • eric2905
        eric2905 last edited by

        Moin zusammen,

        da ich (nach allen Updates, usw.) immer noch die selbem Fehlermeldungen vom SQLite im Log hatte, bin ich nun auch auf mySQL umgestiegen.

        Das Log ist jetzt wieder sauber - keine SQL-Fehler mehr.

        Gruß,

        Eric

        1 Reply Last reply Reply Quote 0
        • Thisoft
          Thisoft last edited by

          Hallo,

          ich habe mir jetzt einen MS-SQL-Server installiert um die immer wieder auftretenden SQLite-Fehler zu beseitigen und endlich eine richtige 😉 Datenbank zu verwenden. Allerdings scheitere ich am Connect zur Db.

          Was muss ich denn in der Konfiguration des SQL-Adapters eintragen um zu einer MSSQL-Instanz auf einem anderen Rechner zu verbinden? Muss ich da einen bestimmten Benutzer verwenden? Bei meinen bisherigen Versuchen erhalte ich immer die Meldung "Connection Timeout" bzw., wenn ich den Port mit angebe die folgende Meldung:
          250_sqlserv1.png

          Danke schon mal

          Thilo

          1 Reply Last reply Reply Quote 0
          • derAuge
            derAuge last edited by

            @Thisoft:

            Hallo,

            ich habe mir jetzt einen MS-SQL-Server installiert um die immer wieder auftretenden SQLite-Fehler zu beseitigen und endlich eine richtige 😉 Datenbank zu verwenden. Allerdings scheitere ich am Connect zur Db.

            Was muss ich denn in der Konfiguration des SQL-Adapters eintragen um zu einer MSSQL-Instanz auf einem anderen Rechner zu verbinden? Muss ich da einen bestimmten Benutzer verwenden? Bei meinen bisherigen Versuchen erhalte ich immer die Meldung "Connection Timeout" bzw., wenn ich den Port mit angebe die folgende Meldung:
            filename="SQLServ1.PNG" index="0">~~

            Danke schon mal

            Thilo `

            hast du über (zB phpMyAdmin) einen USER "ioBroker" mit schreibrechten angelegt?

            1 Reply Last reply Reply Quote 0
            • Thisoft
              Thisoft last edited by

              Ja, hab ich.

              Aber nochmal als Hinweis - ich verwende den MS-SQLServer! phpMyAdmin ist doch m.W. für MySQL - oder?

              1 Reply Last reply Reply Quote 0
              • etv
                etv last edited by

                …geht trotzdem mit phpmyadmin. Ich hab gestern meinen neuen Raspi, der dann das ioBroker ProduktionssSystem wird installiert und MySQL-Server zum Loggen installiert. Anschließend noch phpmyadmin, User ioBroker mit allen Rechten und ein Passwort dazu.....läuft!

                Grüße

                etv

                1 Reply Last reply Reply Quote 0
                • etv
                  etv last edited by

                  Liebe Entwickler,

                  möchte nur kurz einen Status zu History und MySQL abgeben: ist bei mir nun 2 oder 3 Tage mit CPU Load und Sonnenstand am Laufen und ich hab keine Probleme feststellen können.

                  Raspi ist nun ein neuer der in Produktion ist, wurde komplett frisch mit Raspian Jessie und ioBroker (+empfohlene Node Version) installiert und alles am letzten Stand…

                  Just 4 Info....

                  Grüße

                  etv

                  1 Reply Last reply Reply Quote 0
                  • H
                    Headroom68 last edited by

                    Hallo,

                    ich habe ebenfalls den SQL-Adapter mit mySQL am laufen ohne Grössere Probleme.

                    Ich bekomme in den Einstellungen des Objects keine Werte mehr unter 'Tabelle' angezeigt, diese ist leer. Auch die Auswahl 'Zeige Wertet aus' ist leer.

                    Bei der Umstellung von Historie auf sql gab es Probleme, dass ich dies nur für alle Objekte machen konnte und nicht einzeln umstellen konnte.

                    1 Reply Last reply Reply Quote 0
                    • Bluefox
                      Bluefox last edited by

                      @Thisoft:

                      Hallo,

                      ich habe mir jetzt einen MS-SQL-Server installiert um die immer wieder auftretenden SQLite-Fehler zu beseitigen und endlich eine richtige 😉 Datenbank zu verwenden. Allerdings scheitere ich am Connect zur Db.

                      Was muss ich denn in der Konfiguration des SQL-Adapters eintragen um zu einer MSSQL-Instanz auf einem anderen Rechner zu verbinden? Muss ich da einen bestimmten Benutzer verwenden? Bei meinen bisherigen Versuchen erhalte ich immer die Meldung "Connection Timeout" bzw., wenn ich den Port mit angebe die folgende Meldung:
                      filename="SQLServ1.PNG" index="0">~~

                      Danke schon mal

                      Thilo `
                      Du bis zu schlau :lol: . Trage Port 0 ein und es wird gehen.

                      Wird in der nächsten Version gefixt.

                      1 Reply Last reply Reply Quote 0
                      • S
                        starfish last edited by

                        Achtung bei den Hochkommata, da gibts Unterschiede.

                        richtig war: CREATE USER 'iobroker'@'%' IDENTIFIED BY 'password';

                        Die Version unten im quote hat bei mir nicht funktioniert. (dasselbe gilt auch für README.md auf Github).

                        @sissiwup:

                        MySQL:

                        MySQL auf ioBroker

                        apt-get install mysql-server mysql-client

                        mysql -uroot -p

                        CREATE USER 'iobroker‘@’%’ IDENTIFIED BY 'iobroker';

                        GRANT ALL PRIVILEGES ON * . * TO 'iobroker'@'%';

                        FLUSH PRIVILEGES;

                        In /etc/mysql

                        my.cnf: bind auf ip-Adresse umstellen (dann klappt es auch mit den Nachbarn) 😉

                        Achtung: iobroker ist so ein "admin". Bei Bedarf weniger Rechte einrichten. `

                        1 Reply Last reply Reply Quote 0
                        • H
                          harvey637 last edited by

                          x-Y Achsen, am Beispiel von drei Werten (konkret: 3 * Rollo Level)

                          ok, das mit der rechten Levelanzeige bekommt man ja mit gleichen MIN/MAX-Werten und "nichts" für die Y-Achse des 2. und 3. Werten, "rechts" für den 1. Wert.

                          Konkret alle Rollos MIN=0 MAX=100. Dann werden alle Rollo-Level korrekt zwischen 0% und 100% angezeigt.

                          Dazu habe ich weitere Einstellungen Art=Mittel Chart=Schritte, und unter Zeit-Aggregation=Anzahl,Anzahl=0, null ignorieren:ja verwendet.

                          Nun das Problem:

                          die Zeit-Achse (also die X-Achse) ist für jedes Rollo unterschiedlich!

                          Einstellung: RELATIV - 3 Stunden

                          Trotzdem ist der rechteste angezeigte Punkt die letzte Änderung des jeweiligen Rollos. Also sind die Kurven der Rollos zeitlich (rechts-links) verschoben.

                          Es kann ein früherer Wert rechts von einem späteren Wert angezeigt werden. Deutlich wird die mit "unten farbig" bei X-Achse bei allen Datenpunkten.

                          Konkret im Bild: das rote Rollo war von 13:05-13:06 auf 65%, das grüne Rollo aber von 14:23-14:24 bei 85%, also komplett später, nichts überlappend!

                          Bei "statik" scheint die Zeitachse zwar für alle Rollo-Level gleich zu sein, aber mir ist keine Start/Stop Zeit ausgewertet worden. Hier macht eine

                          absolute Zeitangabe (etwa yy.mm.dd HH:MM:SS) keinen Sinn, da die URL ja als bookmark verwendet werden kann.

                          Kann jemand was zu den "statik" Start/Stop Zeiten sagen? Oder zu der Aggregation "Anzahl/Sekunden"? zu ""null ignorieren"?

                          Oder wie es möglich ist, zeitrichtig mehrere Werte übereinander anzuzeigen?

                          Danke! Und guten Rutsch

                          Harvey
                          964_bild_zeit.png

                          1 Reply Last reply Reply Quote 0
                          • P
                            pix last edited by

                            @harvey637:

                            Oder wie es möglich ist, zeitrichtig mehrere Werte übereinander anzuzeigen? ` Das wüsste ich auch gern! :roll:

                            Hat das was mit dem Offste zu tun? Den kann ich aber nur pi mal Daumen anpassen.

                            Gruß

                            Pix

                            1 Reply Last reply Reply Quote 0
                            • sissiwup
                              sissiwup last edited by

                              Hallo,

                              Nur bei einer Axe die Werte auswählen, alle anderen auf keine oder nichts stehen lassen.
                              609_image.png

                              Das gleiche gilt für die y-Achse. Wie man sieht sind hier zwei unterschiedliche Axen verwendet worden.

                              Wichtig ist dabei, dass immer Bereiche vorgegeben werden, bei Temperatur z.B. Zwischen 10 und 40

                              und bei allen Ventilen zwischen 0 und 100

                              1 Reply Last reply Reply Quote 0
                              • H
                                harvey637 last edited by

                                Hi,

                                das mit der X-Achse ist leider nicht so einfach.

                                Wenn ich also auf der X-Achse die Zeiten für drei Messpunkte anzeige sehe ich

                                drei Linien, die Zeitlich NICHT übereinander stehen, die unterschiedlichen Zeiten werden

                                angezeigt, aber eben nicht zeitlich synchron, sondern verschoben. Die verschobenen Zeiten

                                werden für jede Linie angezeigt.

                                Wähle ich nun nur für eine Linie eine einzige Zeitanzeige (X-Achse) und für alle anderen "nichts",

                                dann wird auch nur genau eine Zeit angezeigt. Die Linien sind aber EXAKT so wie vorher,

                                also zeitlich NICHT synchron.

                                Das ganze fällt nicht so auf, wenn der angezeigte Zeitraum recht groß ist und die Messpunkte

                                häufig kommen. Also eine Anzeige diverser Temperaturen über ein paar Tage ist nahezu

                                richtig, aber eben nur zufällig.

                                Bei Anzeigen - bei Rollos oder Ist-Temperaturen gemeinsam mit Soll-Temperaturen, die sich nur selten

                                ändern - passt das überhaupt nicht zusammen.

                                Im Bild zeigen die drei schwarzen Pfeile auf Ist-Temperaturen, also alle rund 3 Minuten ein Datenpunkt und

                                damit recht synchron.

                                Der rote Pfeil zeigt auf die Soll-Temperatur und hat völlig andere Zeitskala. Damit ist es komplett unmöglich,

                                etwa die Ändernung der Vorlauf-Ist-Temperatur mit dem Über-/Unterschreiten des Soll-Temperatur und

                                damit dem Ende/Beginn des Einschalten der Heizung zeitlich zu vergleichen.

                                Ähnlich sieht das Bild bei Rollos aus, für jede einzelne Linie ist der letzte Datenpunkt an der rechten Grafikseite,

                                egal ob ein einzelnes Rollo etwa drei Stunden später geschaltet wurde, trotzdem alles senkrecht übereinander,

                                aber halt zeitlich komplett asynchron.

                                Gerne würde ich das so sehen, das der rechte Rand der Grafik etwa "jetzt" entspricht oder einer einstellbaren Zeit,

                                aber bitte dann für ALLE Linien Anfangszeitpunkt und Endzeitpunkt identisch. Ganz besonders gerne noch, wenn

                                Typ "Linie" dann mit dem letzten echten Messpunkt aufhört, der Typ "Schritte" aber den letzten Punkt bis an jede

                                beliebige Endezeit waagerecht heranzieht. Denn eine Temperatur ist ja quasi in ständiger Änderung, ein Rollo, was

                                auf eine Position bewegt wurde, verbleibt ja dort und der Punkt ist ja auch gültig bis zur nächsten Änderung.

                                nur so ein Wunschgedanke ….

                                cu

                                Harvey
                                964_bild_2.png

                                1 Reply Last reply Reply Quote 0
                                • sissiwup
                                  sissiwup last edited by

                                  Hallo,

                                  mach mal "null ignorieren aus" und probier es nochmal.

                                  Da scheint noch ein bug drin zu sein.

                                  1 Reply Last reply Reply Quote 0
                                  • sissiwup
                                    sissiwup last edited by

                                    Das problem ist dabei, wenn der letzte Wert ist nie bei allen gleichen Datenpunkten gleich.

                                    Dafür wird vom History-Adapter ein Null-Wert geliefert.

                                    Bei ignoreNull wird dieser aber ignoriert und flot passt die Skala an.

                                    Für den letzten Wert muss man also ignorenull deaktivieren.

                                    Anbei ein Quickfix:

                                     `function readOneChart(id, instance, index, callback) {
                                    
                                            var option = getStartStop(index);
                                            option.instance = instance;
                                    
                                            socket.emit('getHistory', id, option, function (err, res, step) {
                                                if (!err && res) {
                                                    //for (var i = 0, len = res.length; i < len; i++) {
                                    
                                                    if (config.longestStep < step) {
                                                        config.longestStep = step;
                                                    }
                                                    for (var i = 0; i < res.length; i++) {
                                           //quickfix             if (res[i].val != null || !config.ignoreNull) {
                                                        if (res[i].val != null || !config.ignoreNull || i == res.length-1 || i == 0) {
                                    
                                                            // Convert boolean values to numbers
                                                            if (res[i].val === 'true' || res[i].val === true) {
                                                                res[i].val = 1;
                                                            } else if (res[i].val === 'false' || res[i].val === false) {
                                                                res[i].val = 0;
                                                            }
                                                            if (typeof res[i].val == 'string') res[i].val = parseFloat(res[i].val);
                                    
                                                            seriesData[index].push([res[i].ts * 1000, res[i].val]);
                                                        }
                                    
                                                    }
                                                }` 
                                    
                                    anzupassen in /opt/iobroker/node_modules/iobroker.flot/www/index.html
                                    
                                    Anschließend iobroker upload flot[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • eric2905
                                      eric2905 last edited by

                                      @sissiwup:

                                      Anbei ein Quickfix: `
                                      Probiere ich nachher mal aus …

                                      Gruß,

                                      Eric

                                      1 Reply Last reply Reply Quote 0
                                      • sissiwup
                                        sissiwup last edited by

                                        Hab noch den ersten Punkt hinzugefügt.

                                        1 Reply Last reply Reply Quote 0
                                        • sissiwup
                                          sissiwup last edited by

                                           `function readOneChart(id, instance, index, callback) {
                                          
                                                  var option = getStartStop(index);
                                                  option.instance = instance;
                                          
                                                  socket.emit('getHistory', id, option, function (err, res, step) {
                                                      if (!err && res) {
                                                          //for (var i = 0, len = res.length; i < len; i++) {
                                          
                                                          if (config.longestStep < step) {
                                                              config.longestStep = step;
                                                          }
                                                          var lval = null;  //qf
                                                          for (var i = 0; i < res.length; i++) {
                                                 //qf             if (res[i].val != null || !config.ignoreNull) {
                                                                  // Convert boolean values to numbers
                                                                  if (res[i].val === 'true' || res[i].val === true) {
                                                                      res[i].val = 1;
                                                                  } else if (res[i].val === 'false' || res[i].val === false) {
                                                                      res[i].val = 0;
                                                                  }
                                                                  if (typeof res[i].val == 'string') res[i].val = parseFloat(res[i].val);
                                                 //qf -- start
                                                              if (res[i].val == null) {
                                                                  if (config.ignoreNull || i == res.length-1) {
                                                                       res[i].val=lval;
                                                                  }
                                                              } else {
                                                                  lval=res[i].val;
                                                              }
                                                              if (res[i].val != null || i == 0 || i == res.length-1) {
                                                 //qf -- ende
                                                                  seriesData[index].push([res[i].ts * 1000, res[i].val]);
                                                              }
                                          
                                                          }
                                                      }
                                          
                                                      // Add first tick with required range
                                                      // todo muss das sein ??
                                                      // seriesData[index] = fillRange(seriesData[index]);
                                          
                                                      if (callback) callback(id, index);
                                                  });
                                              }` 
                                          
                                          Bei dieser Variante werden nie Null-Werte geschrieben. Wenn man ignore-Null aktiviert werden null-Werte durch den letzten bekannten Wert ersetz. Sieht ab und an besser aus.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • eric2905
                                            eric2905 last edited by

                                            Nit dem QuickFix passt es.

                                            Habe zig neue Diagramme mit bis zu 10 sep.Datenpunkten gebaut. Bei allen wurde unten eine identische Zeitschiene eingeblendet.

                                            Gruß,

                                            Eric

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            892
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            18
                                            149
                                            36652
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo