Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. JS Funktion für Blockly anpassen

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    442

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    367

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    964

JS Funktion für Blockly anpassen

Geplant Angeheftet Gesperrt Verschoben Blockly
13 Beiträge 2 Kommentatoren 250 Aufrufe 1 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • David G.D Online
    David G.D Online
    David G.
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich habe folgende kleine JS-Funktion in einem Blockly:

    var end = new Date().getTime();
    getHistory('sql.0', {
     
            id:         'sourceanalytix.0.alias__0__Zaehler__Gas__kwh.currentYear.consumed.01_previousDay',
            start:      end - 77600000,
            end:        end,
          //  aggregate:  'm4',
            timeout:    2000
        }, function (err, result) {
            if (err) console.error(err);
            if (result) {
                log(JSON.stringify(result))
                for (var i = 0; i < result.length; i++) {
                result = (result[i].val + ' ' + new Date(result[i].ts).toISOString());
                }
            }
        });
    

    (Obere Bereich im Bild (get_sql))

    gerne würde ich diese anpassen, damit ich folgenden Baustein so verwenden kann:
    (untere Bereich im Bild (so soll es sein))

    Screenshot 2023-05-23 084947.png

    Leider bekomme ich es nicht hin, den Code so anzupassen, dass er meine Variablen annimmt und ein Ergebnis für den Debug auswirft.

    Zusätzlich würde ich gerne noch mit timestamp der SQL-Werte rechnen. Dafür ist die Variable ts_versatz.

    Als Ergebnis hätte ich gerne wie im oberen Beispiel einen JSON-String, nur mit den umgerechneten Werten.

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen für eure Visualisierung klick

    paul53P 1 Antwort Letzte Antwort
    0
    • David G.D David G.

      Hallo,

      ich habe folgende kleine JS-Funktion in einem Blockly:

      var end = new Date().getTime();
      getHistory('sql.0', {
       
              id:         'sourceanalytix.0.alias__0__Zaehler__Gas__kwh.currentYear.consumed.01_previousDay',
              start:      end - 77600000,
              end:        end,
            //  aggregate:  'm4',
              timeout:    2000
          }, function (err, result) {
              if (err) console.error(err);
              if (result) {
                  log(JSON.stringify(result))
                  for (var i = 0; i < result.length; i++) {
                  result = (result[i].val + ' ' + new Date(result[i].ts).toISOString());
                  }
              }
          });
      

      (Obere Bereich im Bild (get_sql))

      gerne würde ich diese anpassen, damit ich folgenden Baustein so verwenden kann:
      (untere Bereich im Bild (so soll es sein))

      Screenshot 2023-05-23 084947.png

      Leider bekomme ich es nicht hin, den Code so anzupassen, dass er meine Variablen annimmt und ein Ergebnis für den Debug auswirft.

      Zusätzlich würde ich gerne noch mit timestamp der SQL-Werte rechnen. Dafür ist die Variable ts_versatz.

      Als Ergebnis hätte ich gerne wie im oberen Beispiel einen JSON-String, nur mit den umgerechneten Werten.

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @david-g
      Wenn man die Datenpunkt-ID, start und stop an die Funktion übergibt, muss man diese auch auswerten. Eine Rückgabe an den Aufruf ist aus einer Callback-Funktion nicht möglich, sondern man muss das Ergebnis auf eine globale Variable (Liste) verweisen. Die Liste kann man auch gut mit Blockly weiter verarbeiten.

      getHistory('sql.0', {
          id: dp,
          start: start,
          end: stop,
          //  aggregate:  'm4',
          timeout:    2000
      }, function (err, result) {
          if (err) console.error(err);
          if (result) Liste = result;
      });
      

      Blockly_temp.JPG

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      David G.D 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @david-g
        Wenn man die Datenpunkt-ID, start und stop an die Funktion übergibt, muss man diese auch auswerten. Eine Rückgabe an den Aufruf ist aus einer Callback-Funktion nicht möglich, sondern man muss das Ergebnis auf eine globale Variable (Liste) verweisen. Die Liste kann man auch gut mit Blockly weiter verarbeiten.

        getHistory('sql.0', {
            id: dp,
            start: start,
            end: stop,
            //  aggregate:  'm4',
            timeout:    2000
        }, function (err, result) {
            if (err) console.error(err);
            if (result) Liste = result;
        });
        

        Blockly_temp.JPG

        David G.D Online
        David G.D Online
        David G.
        schrieb am zuletzt editiert von
        #3

        @paul53

        Danke, werde ich morgen testen können.
        Kann es ja so wirklich alles schön umrechnen und dann wieder mit Objekt nach json umformatieren.

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        paul53P 1 Antwort Letzte Antwort
        0
        • David G.D David G.

          @paul53

          Danke, werde ich morgen testen können.
          Kann es ja so wirklich alles schön umrechnen und dann wieder mit Objekt nach json umformatieren.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @david-g
          Denke daran, dass get_sql() asynchron ausgeführt wird, die Liste also verzögert gefüllt wird.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          David G.D 2 Antworten Letzte Antwort
          0
          • paul53P paul53

            @david-g
            Denke daran, dass get_sql() asynchron ausgeführt wird, die Liste also verzögert gefüllt wird.

            David G.D Online
            David G.D Online
            David G.
            schrieb am zuletzt editiert von
            #5

            @paul53

            Okay, dann baue ich da eine Pause ein.

            Zeigt eure Lovelace-Visualisierung klick
            (Auch ideal um sich Anregungen zu holen)

            Meine Tabellen für eure Visualisierung klick

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @david-g
              Denke daran, dass get_sql() asynchron ausgeführt wird, die Liste also verzögert gefüllt wird.

              David G.D Online
              David G.D Online
              David G.
              schrieb am zuletzt editiert von David G.
              #6

              @paul53

              Irgendwo scheint ein Fehler zu sein:

              15:59:13.422	info	javascript.0 (16961) Start javascript script.js.Eigene_Scripte.Tests.Read_sql
              15:59:13.443	info	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
              15:59:13.445	error	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: ReferenceError: stop is not defined
              15:59:13.445	error	javascript.0 (16961) at get_sql (script.js.Eigene_Scripte.Tests.Read_sql:8:14)
              15:59:13.445	error	javascript.0 (16961) at script.js.Eigene_Scripte.Tests.Read_sql:19:7
              15:59:13.445	error	javascript.0 (16961) at script.js.Eigene_Scripte.Tests.Read_sql:22:3
              

              Screenshot 2023-05-23 160616.png

              getHistory('sql.0', {
                  id: dp,
                  start: start,
                  end: stop,
                  //  aggregate:  'm4',
                  timeout:    2000
              }, function (err, result) {
                  if (err) console.error(err);
                  if (result) Liste = result;
              });
              

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              paul53P 1 Antwort Letzte Antwort
              0
              • David G.D David G.

                @paul53

                Irgendwo scheint ein Fehler zu sein:

                15:59:13.422	info	javascript.0 (16961) Start javascript script.js.Eigene_Scripte.Tests.Read_sql
                15:59:13.443	info	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                15:59:13.445	error	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: ReferenceError: stop is not defined
                15:59:13.445	error	javascript.0 (16961) at get_sql (script.js.Eigene_Scripte.Tests.Read_sql:8:14)
                15:59:13.445	error	javascript.0 (16961) at script.js.Eigene_Scripte.Tests.Read_sql:19:7
                15:59:13.445	error	javascript.0 (16961) at script.js.Eigene_Scripte.Tests.Read_sql:22:3
                

                Screenshot 2023-05-23 160616.png

                getHistory('sql.0', {
                    id: dp,
                    start: start,
                    end: stop,
                    //  aggregate:  'm4',
                    timeout:    2000
                }, function (err, result) {
                    if (err) console.error(err);
                    if (result) Liste = result;
                });
                
                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @david-g sagte: ReferenceError: stop is not defined

                Schau mal in den vom Blockly erzeugten Javascript-Code. Wurde stop in stop2 geändert? Dann ändere es entsprechend in Zeile 4.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                David G.D 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @david-g sagte: ReferenceError: stop is not defined

                  Schau mal in den vom Blockly erzeugten Javascript-Code. Wurde stop in stop2 geändert? Dann ändere es entsprechend in Zeile 4.

                  David G.D Online
                  David G.D Online
                  David G.
                  schrieb am zuletzt editiert von David G.
                  #8

                  @paul53

                  Das war es.
                  Jetzt hab ich aber eine andere Frage.
                  In der zuerst generierten Liste (ka wie man das nennt) gehören ts und val immer zusammen.

                  Wenn ich jetzt mit der Liste weuterarbeite wird das aufgelöst.

                  Screenshot_20230523_180528_Chrome.jpg

                  18:03:56.340	warn	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: [{"ts":1684780235339,"val":8.797098765432098,"i":true},{"ts":1684792728939,"val":17.99}]
                  18:03:56.341	error	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: [1684780235339,8.797098765432098,1684792728939,17.99]
                  

                  Das val und ts muss ich noch mit erstelle Text aus vor machen?
                  Würde mit den {} natürlich auch gehen.
                  Vermute aber das geht eleganter?

                  Zeigt eure Lovelace-Visualisierung klick
                  (Auch ideal um sich Anregungen zu holen)

                  Meine Tabellen für eure Visualisierung klick

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • David G.D David G.

                    @paul53

                    Das war es.
                    Jetzt hab ich aber eine andere Frage.
                    In der zuerst generierten Liste (ka wie man das nennt) gehören ts und val immer zusammen.

                    Wenn ich jetzt mit der Liste weuterarbeite wird das aufgelöst.

                    Screenshot_20230523_180528_Chrome.jpg

                    18:03:56.340	warn	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: [{"ts":1684780235339,"val":8.797098765432098,"i":true},{"ts":1684792728939,"val":17.99}]
                    18:03:56.341	error	javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: [1684780235339,8.797098765432098,1684792728939,17.99]
                    

                    Das val und ts muss ich noch mit erstelle Text aus vor machen?
                    Würde mit den {} natürlich auch gehen.
                    Vermute aber das geht eleganter?

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #9

                    @david-g sagte: Das val und ts muss ich noch mit erstelle Text aus vor machen?

                    Was soll mit den val und ts passieren, was ist das Ziel?

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    David G.D 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @david-g sagte: Das val und ts muss ich noch mit erstelle Text aus vor machen?

                      Was soll mit den val und ts passieren, was ist das Ziel?

                      David G.D Online
                      David G.D Online
                      David G.
                      schrieb am zuletzt editiert von David G.
                      #10

                      @paul53

                      Die json möchte ich in eCharts verwenden.
                      Möchte in der Visu verschiedene DPs, Zeiträume auswählen können und die Zeitachse was verschieben (im test noch nicht eingebaut) können.
                      So recht ein Chart für zig Kombination.

                      eCharts gibt das Format der json vor.
                      Sie wie im warn aus meinem letzten Beitrag.
                      Nur das i":true darf nicht vorkommen.

                      Zeigt eure Lovelace-Visualisierung klick
                      (Auch ideal um sich Anregungen zu holen)

                      Meine Tabellen für eure Visualisierung klick

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • David G.D David G.

                        @paul53

                        Die json möchte ich in eCharts verwenden.
                        Möchte in der Visu verschiedene DPs, Zeiträume auswählen können und die Zeitachse was verschieben (im test noch nicht eingebaut) können.
                        So recht ein Chart für zig Kombination.

                        eCharts gibt das Format der json vor.
                        Sie wie im warn aus meinem letzten Beitrag.
                        Nur das i":true darf nicht vorkommen.

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #11

                        @david-g sagte: wie im warn aus meinem letzten Beitrag. Nur das i":true darf nicht vorkommen.

                        ts soll in ms bleiben?

                        Blockly_temp.JPG

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        David G.D 2 Antworten Letzte Antwort
                        0
                        • paul53P paul53

                          @david-g sagte: wie im warn aus meinem letzten Beitrag. Nur das i":true darf nicht vorkommen.

                          ts soll in ms bleiben?

                          Blockly_temp.JPG

                          David G.D Online
                          David G.D Online
                          David G.
                          schrieb am zuletzt editiert von David G.
                          #12

                          @paul53

                          Sowas in der Art hatte ich auch schon getestet. Ohne Erfolg. Da waren die " immer zwischen 2 /.

                          So klappt es jetzt.
                          Allerdings habe ich zu Beginn immer ein leeres {}, und dann kommen erst befülle Werte.

                          javascript.0 (16961) script.js.Eigene_Scripte.Tests.Read_sql: [{},{"ts":1684274470454,"val":16.03},{"ts":1684360352054,"val":10.5},{"ts":1684447443254,"val":4.21},{"ts":1684533324854,"val":4.28},{"ts":1684620416054,"val":4.28},{"ts":1684706297654,"val":8.74},{"ts":1684793388854,"val":17.99}]
                          

                          Funktioniert aber trotzdem in eCharts.

                          Zeigt eure Lovelace-Visualisierung klick
                          (Auch ideal um sich Anregungen zu holen)

                          Meine Tabellen für eure Visualisierung klick

                          1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @david-g sagte: wie im warn aus meinem letzten Beitrag. Nur das i":true darf nicht vorkommen.

                            ts soll in ms bleiben?

                            Blockly_temp.JPG

                            David G.D Online
                            David G.D Online
                            David G.
                            schrieb am zuletzt editiert von David G.
                            #13

                            @paul53

                            Hier mein (sehr rudimentärer) Testaufbau für was es die json ist.

                            Erst kann man einen DP auswählen. Im Beispiel Tages/Wochen/Monats/Jahreswerte vom Gasverbrauch.

                            Dann den Zeitraum.

                            Screen_Recordin-1684925174200.gif

                            ECharts hat mit den Jsons aber mal noch 1-2 Problemchen...

                            Zeigt eure Lovelace-Visualisierung klick
                            (Auch ideal um sich Anregungen zu holen)

                            Meine Tabellen für eure Visualisierung klick

                            1 Antwort Letzte Antwort
                            0

                            Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                            Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                            Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                            Registrieren Anmelden
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            271

                            Online

                            32.8k

                            Benutzer

                            82.8k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe