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. sendTo sql State is not valid

NEWS

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

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

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

sendTo sql State is not valid

Geplant Angeheftet Gesperrt Verschoben Blockly
7 Beiträge 2 Kommentatoren 200 Aufrufe 2 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.
  • KopierwichtelK Offline
    KopierwichtelK Offline
    Kopierwichtel
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    Ich bastel mir gerade ein Script mit Blockly um die Deutschland API bzgl. der Gasspeicherfüllstände anzusprechen.
    Die klappt auch einwandfrei, sodass ich an die Zeitstempel und die Füllstände komme.
    Diese will ich nun via sendTo an meine SQL Datenbank zu senden. Der Adapter ist als sql.1 installiert.
    Wenn ich nun aber das Skript ausführe kommt folgender Fehler für jedes Zeitstempel/Wert Paar:

    javascript.0 (216) script.js.MyScripts.Gasspeicher_Füllstände: {'error':'1 errors happened while storing data','errors':['State \'{ts: 1681689600000, val: 64.53, ack: false, from: 'system.adapter.javascript.0'}\' for 0_userdata.0.Datenpunkte.BundesAPI.Gasspeicherfüllstand is not valid'],'successCount':0}
    

    In Blockly sieht das wie folgt aus:

    d52f88db-eddb-4a81-adde-17300783743e-image.png

    Und das ist das generierte Skript

    var i, Position_Trennzeichen, Zeitstempel, result, Fuellstand;
    
    
    try {
      require("request")('https://www.dashboard-deutschland.de/api/tile/indicators?ids=tile_1667227714015', async function (error, response, result) {
        var i_list = getAttr((function () { try {return JSON.parse(result);} catch(e) {return {};}})(), '0.json.components.0.chart.series.0.data');
      for (var i_index in i_list) {
        i = i_list[i_index];
        Position_Trennzeichen = ('' + i).indexOf(',') + 1;
        Zeitstempel = ('' + i).slice(0, parseFloat(Position_Trennzeichen) - 1);
        Fuellstand = ('' + i).slice(((parseFloat(Position_Trennzeichen) + 1) - 1), ('' + i).length);
        console.debug((['Zeitstempel: ',Zeitstempel,'\n','Füllstand: ',Fuellstand,' %'].join('')));
        sendTo("sql.1", "storeState", {
           "id": '0_userdata.0.Datenpunkte.BundesAPI.Gasspeicherfüllstand',
           "state": ['{ts: ',parseFloat(Zeitstempel),', val: ',parseFloat(Fuellstand),', ack: false, from: \'system.adapter.javascript.0\'}'].join('')
        }, async function (result) {
            console.log(result);
          });
        console.log("sql.1: " + "");
      }
      }).on("error", function (e) {console.error(e);});
    } catch (e) { console.error(e); }
    

    Habt Ihr eine Idee, wo der Fehler herkommt? Ich sehe es nicht.

    Vielen Dank, Martin

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • KopierwichtelK Kopierwichtel

      Hallo Zusammen,

      Ich bastel mir gerade ein Script mit Blockly um die Deutschland API bzgl. der Gasspeicherfüllstände anzusprechen.
      Die klappt auch einwandfrei, sodass ich an die Zeitstempel und die Füllstände komme.
      Diese will ich nun via sendTo an meine SQL Datenbank zu senden. Der Adapter ist als sql.1 installiert.
      Wenn ich nun aber das Skript ausführe kommt folgender Fehler für jedes Zeitstempel/Wert Paar:

      javascript.0 (216) script.js.MyScripts.Gasspeicher_Füllstände: {'error':'1 errors happened while storing data','errors':['State \'{ts: 1681689600000, val: 64.53, ack: false, from: 'system.adapter.javascript.0'}\' for 0_userdata.0.Datenpunkte.BundesAPI.Gasspeicherfüllstand is not valid'],'successCount':0}
      

      In Blockly sieht das wie folgt aus:

      d52f88db-eddb-4a81-adde-17300783743e-image.png

      Und das ist das generierte Skript

      var i, Position_Trennzeichen, Zeitstempel, result, Fuellstand;
      
      
      try {
        require("request")('https://www.dashboard-deutschland.de/api/tile/indicators?ids=tile_1667227714015', async function (error, response, result) {
          var i_list = getAttr((function () { try {return JSON.parse(result);} catch(e) {return {};}})(), '0.json.components.0.chart.series.0.data');
        for (var i_index in i_list) {
          i = i_list[i_index];
          Position_Trennzeichen = ('' + i).indexOf(',') + 1;
          Zeitstempel = ('' + i).slice(0, parseFloat(Position_Trennzeichen) - 1);
          Fuellstand = ('' + i).slice(((parseFloat(Position_Trennzeichen) + 1) - 1), ('' + i).length);
          console.debug((['Zeitstempel: ',Zeitstempel,'\n','Füllstand: ',Fuellstand,' %'].join('')));
          sendTo("sql.1", "storeState", {
             "id": '0_userdata.0.Datenpunkte.BundesAPI.Gasspeicherfüllstand',
             "state": ['{ts: ',parseFloat(Zeitstempel),', val: ',parseFloat(Fuellstand),', ack: false, from: \'system.adapter.javascript.0\'}'].join('')
          }, async function (result) {
              console.log(result);
            });
          console.log("sql.1: " + "");
        }
        }).on("error", function (e) {console.error(e);});
      } catch (e) { console.error(e); }
      

      Habt Ihr eine Idee, wo der Fehler herkommt? Ich sehe es nicht.

      Vielen Dank, Martin

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @kopierwichtel
      Ich mag mich täuschen (weil ich das selbst noch nicht gemacht habe), aber übergibt man dem SQL-Adapter nicht ein SQL-Statement?
      Also etwas in der Art:

      INSERT INTO iobroker.ts_numbers VALUES(XX, YY, ZZ)
      

      Ich sehe in Deinem Script nirgends einen Tabellennamen o.ä.
      Also ich als Adapter wüsste gar nicht, wo ich was hinschreiben sollte.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      KopierwichtelK 1 Antwort Letzte Antwort
      1
      • CodierknechtC Codierknecht

        @kopierwichtel
        Ich mag mich täuschen (weil ich das selbst noch nicht gemacht habe), aber übergibt man dem SQL-Adapter nicht ein SQL-Statement?
        Also etwas in der Art:

        INSERT INTO iobroker.ts_numbers VALUES(XX, YY, ZZ)
        

        Ich sehe in Deinem Script nirgends einen Tabellennamen o.ä.
        Also ich als Adapter wüsste gar nicht, wo ich was hinschreiben sollte.

        KopierwichtelK Offline
        KopierwichtelK Offline
        Kopierwichtel
        schrieb am zuletzt editiert von
        #3

        @codierknecht
        Lt. Doku müsste der Adapter über sendTo funktionieren.

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • KopierwichtelK Kopierwichtel

          @codierknecht
          Lt. Doku müsste der Adapter über sendTo funktionieren.

          CodierknechtC Online
          CodierknechtC Online
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @kopierwichtel
          Jepp - geht offenbar auch, aber das sieht ganz anders aus:

          sendTo('history.0', 'storeState', {
              id: 'mbus.0.counter.xxx',
              state: [
                {ts: 1589458809352, val: 123, ack: false, from: 'system.adapter.whatever.0', ...}, 
                {ts: 1589458809353, val: 123, ack: false, from: 'system.adapter.whatever.0', ...}
              ]
          }, result => console.log('added'));
          

          Du hast da an allen möglichen und unmöglichen Stellen Anführungszeichen (einfache und doppelte) eingebaut, die da offenbar nicht hingehören.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          KopierwichtelK 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

            @kopierwichtel
            Jepp - geht offenbar auch, aber das sieht ganz anders aus:

            sendTo('history.0', 'storeState', {
                id: 'mbus.0.counter.xxx',
                state: [
                  {ts: 1589458809352, val: 123, ack: false, from: 'system.adapter.whatever.0', ...}, 
                  {ts: 1589458809353, val: 123, ack: false, from: 'system.adapter.whatever.0', ...}
                ]
            }, result => console.log('added'));
            

            Du hast da an allen möglichen und unmöglichen Stellen Anführungszeichen (einfache und doppelte) eingebaut, die da offenbar nicht hingehören.

            KopierwichtelK Offline
            KopierwichtelK Offline
            Kopierwichtel
            schrieb am zuletzt editiert von
            #5

            @codierknecht
            das die vielen Anführungszeichen im Code stehen liegt an den Variablen die genutzt werden:

            Zeit stempel und Fuellstand sind Variablen die aus dem JSON befüllt werden.

            Ich teste aber mal was passiert wenn ich einfach den Zeitstempel und den Wert hart reinschreibe

            KopierwichtelK 1 Antwort Letzte Antwort
            0
            • KopierwichtelK Kopierwichtel

              @codierknecht
              das die vielen Anführungszeichen im Code stehen liegt an den Variablen die genutzt werden:

              Zeit stempel und Fuellstand sind Variablen die aus dem JSON befüllt werden.

              Ich teste aber mal was passiert wenn ich einfach den Zeitstempel und den Wert hart reinschreibe

              KopierwichtelK Offline
              KopierwichtelK Offline
              Kopierwichtel
              schrieb am zuletzt editiert von
              #6

              Ich habe es jetzt tatsächlich mal mit dem direkten SQL statement versucht. Damit hat es funktioniert 😀
              Die Anzahl der offenen SQL verbindungen scheint zwar ein Problem zu sein, aber das ist feintuning.

              29f747d8-d64e-4441-9222-5f87d821a110-image.png

              CodierknechtC 1 Antwort Letzte Antwort
              0
              • KopierwichtelK Kopierwichtel

                Ich habe es jetzt tatsächlich mal mit dem direkten SQL statement versucht. Damit hat es funktioniert 😀
                Die Anzahl der offenen SQL verbindungen scheint zwar ein Problem zu sein, aber das ist feintuning.

                29f747d8-d64e-4441-9222-5f87d821a110-image.png

                CodierknechtC Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @kopierwichtel
                Frei nach dem Motto: "Was man nicht selbst macht, taugt auch nix" 😁 😁 😁

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                1 Antwort Letzte Antwort
                1

                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

                556

                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