Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Sql query Rückgabewert verwenden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Sql query Rückgabewert verwenden

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 4 Posters 4.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    Fitti
    wrote on last edited by
    #1

    Hi,

    Mit folgender SQL phpmyadmin Query bekomme ich genau einen gewünschten Wert zurück:

    SELECT MAX(iobroker.ts_number.val) FROM iobroker.ts_number INNER JOIN iobroker.datapoints ON iobroker.ts_number.id=iobroker.datapoints.id WHERE iobroker.datapoints.name like 'javascript.1.Fronius.Messwerte.AktuelleEnergieErzeugung';
    

    ****Diesen Abfrage möchte ich nun in einem JS Skript verwenden, schaffe es aber nicht, diesen Wert in eine Variable zu bekommen.

    Wie muss man das machen?****

    Ich nehme an, dass folgende Syntax prinzipiell richtig ist:

    sendTo('sql.0', 'query', 'SELECT MAX(iobroker.ts_number.val) FROM iobroker.ts_number INNER JOIN iobroker.datapoints ON iobroker.ts_number.id=iobroker.datapoints.id WHERE iobroker.datapoints.name like \'javascript.1.Fronius.Messwerte.AktuelleEnergieErzeugung\';');
    

    Nur wie muss ich den sendTo handeln?

    Ein````
    var mein_wert = sendTo('sql.0....

    
    Hatte auch erfolglos versucht
    

    MeineSQLAbfrage(), function(error, stdout, stderr) {
    meineVariable = stdout;
    MeineSQLAbfrage(){
    sendTo('sql.0....
    }

    Wo ist der Kniff?
    
    Danke im Voraus.

    "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
    Plural von Status ist auch Status!

    1 Reply Last reply
    0
    • ThisoftT Offline
      ThisoftT Offline
      Thisoft
      wrote on last edited by
      #2

      Hallo,

      jetzt mal ungeprüft zusammengeschrieben:

      
      function ergebnis(result) {
        log('Maximum ist:'+ JSON.stringify(result.result));
      }
      sendTo('sql.0', 'query', 'SELECT MAX(iobroker.ts_number.val) FROM iobroker.ts_number INNER JOIN iobroker.datapoints ON iobroker.ts_number.id=iobroker.datapoints.id WHERE iobroker.datapoints.name = \'javascript.1.Fronius.Messwerte.AktuelleEnergieErzeugung\'',ergebnis);
      

      Ich habe auch ein Weilchen gebraucht um dahinterzusteigen was da abläuft. Durch die asynchrone Verarbeitung in Javascript kann man den Rückgabewert nicht einfach in der aufrufenden Routine weiterverwenden sondern muss die Auswertung in eine Function packen die durch die Rückgabe des Wertes erst aufgerufen wird…

      Oder so - man möge mich schlagen und korrigieren wenn das falsch erklärt ist 😉

      Gruß Thilo

      22 HM-Geräte; PivCCU2 auf RasPi

      ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

      1 Reply Last reply
      0
      • F Offline
        F Offline
        Fitti
        wrote on last edited by
        #3

        (huch, da gab es ja schon eine Antwort. Danke Thilo)

        Okay, nun habe ich es gefunden. Stand in der SQL Adapter Anleitung. Hatte ich natürlich da nicht gesucht. :roll:

        Nun sieht es so aus:

            sendTo('sql.0', 'query', 'SELECT MAX(iobroker.ts_number.val) FROM iobroker.ts_number INNER JOIN iobroker.datapoints ON iobroker.ts_number.id=iobroker.datapoints.id WHERE iobroker.datapoints.name like \'javascript.1.Fronius.Messwerte.AktuelleEnergieErzeugung\';', function (result) {
            if (result.error) {
                console.error(result.error);
            } else {
                // show result
                 log('Rows: ' + JSON.stringify(result.result));
            }
            });
        

        Jetzt versuche ich noch herauszufinden, wie ich <u>am einfachsten</u> aus result.result einfach nur mein gewünschten Wert heraushole.

        Hiermit wird es ja zu einem JSON. Die Ausgabe ist:

        [{"MAX(iobroker.ts_number.val)":6303}]
        

        Was mich zuerst verwunderte. Bei näherer Betrachtung ist schon klar, dass die Spalteninfos mitkommen.

        In anderen Programiersprachen habe ich hier immer nur den/die Werte zurückerhalten.

        Gibt es hier eine eine einfache Möglichkeit?

        <size size="85">(Damit meine ich nicht, den Rückgabewert zu extrahieren, das kann ich ja mit JSON Parse machen).</size>

        "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
        Plural von Status ist auch Status!

        1 Reply Last reply
        0
        • ThisoftT Offline
          ThisoftT Offline
          Thisoft
          wrote on last edited by
          #4

          Wenn Du schreibst:

          'SELECT MAX(iobroker.ts_number.val) As MaxVal...
          

          dann erhältst du mit:

          result.result[0].MaxVal
          

          direkt den Wert

          22 HM-Geräte; PivCCU2 auf RasPi

          ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

          1 Reply Last reply
          0
          • F Offline
            F Offline
            Fitti
            wrote on last edited by
            #5

            Hier fehlt eindeutig ein KlatschMitDerHandAnDenKopf Smilie.~~![](</s><URL url=)<link_text text="http://i754.photobucket.com/albums/xx18 ... er/doh.gif">http://i754.photobucket.com/albums/xx181/Simon_Gardner/doh.gif</link_text>" />

            Danke für die Erleuchtung des Tages - da stand ich mir selber im Weg.

            Wundere mich nur, warum ich nun result.result als array ansprechen muss?~~

            "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
            Plural von Status ist auch Status!

            1 Reply Last reply
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              wrote on last edited by
              #6

              Die Doku auf der Github-Seite des Adapters hätte das auch gelöst 🙂 Da ist ein Beispiel drauf …

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              1 Reply Last reply
              0
              • F Offline
                F Offline
                Fitti
                wrote on last edited by
                #7

                @apollon77:

                Die Doku auf der Github-Seite des Adapters hätte das auch gelöst 🙂 Da ist ein Beispiel drauf … `

                Welchen Beitrag meist Du? Den ersten? Da habe ich doch geschrieben, dass ich den da gefunden habe.

                Oder steht da was, warum ich es einmal als Array und einmal nicht als array anspreche?

                "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
                Plural von Status ist auch Status!

                1 Reply Last reply
                0
                • D Offline
                  D Offline
                  der_Auge
                  wrote on last edited by
                  #8

                  Hi

                  ich verzweifel.

                  Finde keine Lösung

                  Alle Themen die ich gefunden habe helfen nicht das Thema umzusetzen.

                  EDIT:

                  Habe nun eine Lösung gefunden

                  http://forum.iobroker.net/viewtopic.php … 20#p109828

                  Gruß

                  Jürgen

                  Master: DN2820FYKH (4GB) Linux NUC 4.4.0-22-generic #40-Ubuntu x86_64

                  Slave: Linux RPi2-1 4.1.19-v7+ #858 v4.4.3 # 2.15.1

                  SQL-DB : Linux DS 3.10.77 #7321 x86_64 synology412+

                  Test : DS916+ VM Debian

                  Test : Tinker mit piVCCU

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  304

                  Online

                  32.4k

                  Users

                  81.4k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe