Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Flot-Editor: Tageshöchstwerte anzeigen lassen

    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

    Flot-Editor: Tageshöchstwerte anzeigen lassen

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

      Hallo,

      benutze den Flot-Editor zum anzeigen von Kurven. Früher konnte ich bei FHEM (siehe Bild) mir in der Überschrift zB die Tagestiefst- und höchstwerte anzeigen lassen. Geht das mit dem Flot-editor auch ?

      1043_bildschirmfoto_2018-08-03_um_09.10.18.png

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

        Ich habe nun zwei andere Threads gefunden, wo per SQL-Abfrage der Min und Max-Wert ermittelt werden soll. Leider bekomme ich folgenden Fehler:

        sql.0	2018-08-04 20:33:12.901	error	Cannot insert INSERT INTO `iobroker`.datapoints (name, type) VALUES('javascript.0.Statistik_24h_Max_TempAussen', undefined);: Error: ER_BAD_FIELD_ERROR: Unknown column 'undefin
        

        Hier das Javascript dazu - jemand einen Hinweis:

        ! // –---------------------------------------------------------------------------
        ! // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
        ! // -----------------------------------------------------------------------------
        ! // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
        ! var id = "hm-rpc.1.KEQ0054069.1.TEMPERATURE"/Temp_Feuchte_Aussen:1.TEMPERATURE/;
        ! // ----- Datenpunkte in die gespeichert werden soll ----------------------------
        ! var maxid = 'javascript.0.Statistik_24h_Max_TempAussen';
        ! var minid = 'javascript.0.Statistik_24h_Min_TempAussen';
        ! var dt = 24; // Zeitraum in Stunden
        ! dt = dt36001000; // Zeitraum umrechnen in ??
        ! // ----- Datenpunkte anlegen ---------------------------------------------------
        ! createState(maxid, " ");
        ! createState(minid, " ");
        ! log('1. ) Datenpunkte angelegt ');
        ! SQLAbfrage(id);
        ! //----- SQL-Abfrage durchführen
        ! function SQLAbfrage () {
        ! log('2. ) Datenpunkt => ' + id);
        ! log('2a.) Abfrage => SELECT * FROM iobroker.datapoints WHERE name = '' + id + ''');
        ! sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = '' + id + ''', GetResults);
        ! }
        ! //---------------------------------------
        ! function GetResults (dpoint) {
        ! log('3. ) Funktion -> GetResults aufrufen');
        ! var end_time = new Date().getTime();
        ! var start_time = new Date().getTime() - dt;
        ! log('3a.) Startzeit : ' + start_time);
        ! log('3b.) Endzeit : ' + end_time);
        ! log(' Datenpunkt: ' + dpoint.result);
        ! log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
        ! log(' Datenpunkt: ' + dpoint.result[0].id + ' –-//--- ' + dpoint.result[0].name);
        ! sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
        ! sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
        ! }
        ! //–--- Werte schreiben (maximum, minimum)
        ! //----- minimum
        ! function minimum(result) {
        ! log('min )Funktion -> ' + JSON.stringify(result.result));
        ! setState(minid, result.result[0].MinVal);
        ! }
        ! //–--- maximum
        ! function maximum(result) {
        ! log('max )Funktion -> ' + JSON.stringify(result.result));
        ! setState(maxid, result.result[0].MaxVal);
        ! log('–-- fertig -----------------------------------------');
        ! }
        ! //---------------------------------------
        ! // ----- Funktion jede Minute aufrufen
        ! schedule("*/1 * * * *", function(){SQLAbfrage(id);});

        Es geht hauptsächlich um diesen Thread https://forum.iobroker.net/viewtopic.php?f=21&t=5663

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

          Vielleicht bin ich ja schon einen Schritt weiter aber nun habe ich einen Fehler mit Duplicate entry:

          annot insert INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES(1885, 1533458884463, 0, 1, 14, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1885-1533458884463' f
          
          1 Reply Last reply Reply Quote 0
          • Segway
            Segway last edited by

            Habe nun nach langem hin und her die Lösung gefunden für mein Script warum das nicht läuft.

            Habe https://forum.iobroker.net/viewtopic.php?t=5386 den entscheidenden Hinweis gelesen.

            Schon sehr merkwürdig das man solch wichtige Informationen nicht irgendwo platziert oder in der Hilfe vom Adapter !!! Ich hatte das Script die ganze Zeit im global drin und als ich es daraus genommen hatte kamen auch Meldungen im Log. Schön - hat mich ja nur 4 Tage gekostet.

            Nichts für ungut aber sowas ist schon ärgerlich…...nun bastel ich dann mal weiter.

            1 Reply Last reply Reply Quote 0
            • cash
              cash Most Active last edited by

              Das man eigene Scripte die nicht global verfügbar sein sollen nicht in den Ordner global packt steht aber nun wirklich an vielen Stellen.

              Evtl wäre es natürlich möglich den Ordner global nur anzuzeigen wenn der User vorher in der Konfiguration eine bestimmte Änderung vornimmt. Somit würden evtl weniger Anfänger in diesen Fehler laufen

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

                Jo, ich weiß das es schwer ist eine Anleitung für Newbies parat zu haben. Das ist wirklich nicht einfach - gebe ich ja zu.

                ABER dann sollte eben mind. ein Hinweis irgendwo sein oder nicht nur ein Ordner global sondern auch ein Ordner userdefined oder so.

                Oder wie geschrieben hast erstmal den Ordner "verstecken".

                Ich hatte mich die ganze Zeit gewundert warum in dem Log Fenster direkt im Java-Adapter NIE NIE NIE Meldungen drin sind. Da muss doch was faul sein. Als ich einfach mal auf Truescript umgestellt hatte den Internpreter dann kamen aber ganz viele Fehler…..also hab ich den fehler woanders gesucht, da anscheinend ja was im Log kommt.

                Wurde ich aber letztendlich irre geführt. Bis ich den richtigen Hinweis las.

                Naja, 4 Tage waren ja nicht umsonst sondern habe vieles gelernt.....aber ärgerlich ist es trotzdem .-)

                1 Reply Last reply Reply Quote 0
                • R
                  robsdobs last edited by

                  Anfängern würde ich eindeutig Typescript vor Javascript empfehlen.

                  Da sieht man sehr viele Fehler die man machen kann schon beim kompilieren und sucht dann nicht erst lange weil ein Programm einfach nicht so läuft wie man denkt.

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

                    @Segway:

                    Hier das Javascript dazu - jemand einen Hinweis:

                    ! // –---------------------------------------------------------------------------
                    ! // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                    ! // -----------------------------------------------------------------------------
                    ! // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                    ! var id = "hm-rpc.1.KEQ0054069.1.TEMPERATURE"/Temp_Feuchte_Aussen:1.TEMPERATURE/;
                    ! // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                    ! var maxid = 'javascript.0.Statistik_24h_Max_TempAussen';
                    ! var minid = 'javascript.0.Statistik_24h_Min_TempAussen';
                    ! var dt = 24; // Zeitraum in Stunden
                    ! dt = dt36001000; // Zeitraum umrechnen in ??
                    ! // ----- Datenpunkte anlegen ---------------------------------------------------
                    ! createState(maxid, " ");
                    ! createState(minid, " ");
                    ! log('1. ) Datenpunkte angelegt ');
                    ! SQLAbfrage(id);
                    ! //----- SQL-Abfrage durchführen
                    ! function SQLAbfrage () {
                    ! log('2. ) Datenpunkt => ' + id);
                    ! log('2a.) Abfrage => SELECT * FROM iobroker.datapoints WHERE name = '' + id + ''');
                    ! sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = '' + id + ''', GetResults);
                    ! }
                    ! //---------------------------------------
                    ! function GetResults (dpoint) {
                    ! log('3. ) Funktion -> GetResults aufrufen');
                    ! var end_time = new Date().getTime();
                    ! var start_time = new Date().getTime() - dt;
                    ! log('3a.) Startzeit : ' + start_time);
                    ! log('3b.) Endzeit : ' + end_time);
                    ! log(' Datenpunkt: ' + dpoint.result);
                    ! log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
                    ! log(' Datenpunkt: ' + dpoint.result[0].id + ' –-//--- ' + dpoint.result[0].name);
                    ! sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                    ! sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                    ! }
                    ! //–--- Werte schreiben (maximum, minimum)
                    ! //----- minimum
                    ! function minimum(result) {
                    ! log('min )Funktion -> ' + JSON.stringify(result.result));
                    ! setState(minid, result.result[0].MinVal);
                    ! }
                    ! //–--- maximum
                    ! function maximum(result) {
                    ! log('max )Funktion -> ' + JSON.stringify(result.result));
                    ! setState(maxid, result.result[0].MaxVal);
                    ! log('–-- fertig -----------------------------------------');
                    ! }
                    ! //---------------------------------------
                    ! // ----- Funktion jede Minute aufrufen
                    ! schedule("*/1 * * * *", function(){SQLAbfrage(id);}); `

                    Kurze Frage noch zu dem Script:

                    Schaut das Script im Prinzip IMMER AKTUELL auf die letzten 24 Stunden und macht dann entsprechend des Poll-Script-Aufrufes eine Datenpunktaktualisierung ?also von 19 bis 19 Uhr ? wenn ich um 21Uhr schaue ist es von 21 bis 21 Uhr ?

                    Was wäre zu tun, wenn es immer für den jeweiligen Tag dies machen soll also von 0:00 bis 23:59 ?

                    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

                    902
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    1130
                    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