Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker 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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 4 Kommentatoren 4.5k Aufrufe
  • Ä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.
  • F Offline
    F Offline
    Fitti
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • ThisoftT Offline
      ThisoftT Offline
      Thisoft
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • F Offline
        F Offline
        Fitti
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • ThisoftT Offline
          ThisoftT Offline
          Thisoft
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • F Offline
            F Offline
            Fitti
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • F Offline
                F Offline
                Fitti
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  der_Auge
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  412

                  Online

                  32.4k

                  Benutzer

                  81.4k

                  Themen

                  1.3m

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

                  • Du hast noch kein Konto? Registrieren

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