Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Js Script für externe MySQL Abfrage

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

Js Script für externe MySQL Abfrage

Scheduled Pinned Locked Moved JavaScript
21 Posts 4 Posters 2.5k Views 5 Watching
  • 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.
  • ReinerR Reiner

    @achim-baecker

    Hallo Achim,

    danke für den Vorschlag.

    Ich wollte eigentlich eines x beliebigens Wertes einer mysql Datenbank abfragen ohne den sql Adapter. Es handelt sich hierbei nicht um die DB von IoBroker.
    Es sollte eine reine Abfrage im Javaskript erfolgen der mir den Wert dann in einen Datenpunkt schreibt.

    haus-automatisierungH Online
    haus-automatisierungH Online
    haus-automatisierung
    Developer Most Active
    wrote on last edited by
    #4

    @reiner sagte in Js Script für externe MySQL Abfrage:

    Es sollte eine reine Abfrage im Javaskript erfolgen der mir den Wert dann in einen Datenpunkt schreibt.

    Dann könntest Du im JavaScript Adpater ein zusätzliches Paket von npm installieren lassen und dann alles selbst implementieren. z.B. https://www.w3schools.com/nodejs/nodejs_mysql_select.asp

    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
    📚 Meine inoffizielle ioBroker Dokumentation

    ReinerR 1 Reply Last reply
    0
    • haus-automatisierungH haus-automatisierung

      @reiner sagte in Js Script für externe MySQL Abfrage:

      Es sollte eine reine Abfrage im Javaskript erfolgen der mir den Wert dann in einen Datenpunkt schreibt.

      Dann könntest Du im JavaScript Adpater ein zusätzliches Paket von npm installieren lassen und dann alles selbst implementieren. z.B. https://www.w3schools.com/nodejs/nodejs_mysql_select.asp

      ReinerR Offline
      ReinerR Offline
      Reiner
      wrote on last edited by
      #5

      @haus-automatisierung

      Hallo,
      super, ich bin jetzt ein ganzes Stück weiter.
      Es fehlt lediglich das Ergebnis in einen Datenpunkt zu schreiben.

      con.connect(function(err) {
      if (err) throw err;
      con.query("SELECT Wert1 FROM Test1 WHERE Id = 1", function (err, result, fields) {
      if (err) throw err;
      console.log(result);
      });
      });

      Wie bekomme ich nun genau dieses Ergebnis in einen Datenpunkt geschrieben?

      haus-automatisierungH 1 Reply Last reply
      0
      • ReinerR Reiner

        @haus-automatisierung

        Hallo,
        super, ich bin jetzt ein ganzes Stück weiter.
        Es fehlt lediglich das Ergebnis in einen Datenpunkt zu schreiben.

        con.connect(function(err) {
        if (err) throw err;
        con.query("SELECT Wert1 FROM Test1 WHERE Id = 1", function (err, result, fields) {
        if (err) throw err;
        console.log(result);
        });
        });

        Wie bekomme ich nun genau dieses Ergebnis in einen Datenpunkt geschrieben?

        haus-automatisierungH Online
        haus-automatisierungH Online
        haus-automatisierung
        Developer Most Active
        wrote on last edited by
        #6

        @reiner Ganz normal mit setState

        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
        📚 Meine inoffizielle ioBroker Dokumentation

        ReinerR 1 Reply Last reply
        0
        • haus-automatisierungH haus-automatisierung

          @reiner Ganz normal mit setState

          ReinerR Offline
          ReinerR Offline
          Reiner
          wrote on last edited by
          #7

          @haus-automatisierung Ja, aber wie?

          haus-automatisierungH 1 Reply Last reply
          0
          • ReinerR Reiner

            @haus-automatisierung Ja, aber wie?

            haus-automatisierungH Online
            haus-automatisierungH Online
            haus-automatisierung
            Developer Most Active
            wrote on last edited by
            #8

            @reiner Ich kann auch nur die Doku lesen :)

            con.connect((err) => {
            	if (err) throw err;
            
            	con.query('SELECT Wert1 FROM Test1 WHERE Id = 1', (err, results, fields) => {
            		if (err) throw err;
            
            		setState('0_userdata.0.blabla', { val: results[0].Wert1, ack: true });
            	});
            });
            

            (hier im Forum getippt, also nicht getestet)

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            ReinerR 2 Replies Last reply
            0
            • haus-automatisierungH haus-automatisierung

              @reiner Ich kann auch nur die Doku lesen :)

              con.connect((err) => {
              	if (err) throw err;
              
              	con.query('SELECT Wert1 FROM Test1 WHERE Id = 1', (err, results, fields) => {
              		if (err) throw err;
              
              		setState('0_userdata.0.blabla', { val: results[0].Wert1, ack: true });
              	});
              });
              

              (hier im Forum getippt, also nicht getestet)

              ReinerR Offline
              ReinerR Offline
              Reiner
              wrote on last edited by
              #9

              @haus-automatisierung

              Hallo,
              die Lösung ist perfekt und funktioniert ohne Probleme.
              Ein ganz grosses Dankeschön für deine Hilfe!

              1 Reply Last reply
              0
              • haus-automatisierungH haus-automatisierung

                @reiner Ich kann auch nur die Doku lesen :)

                con.connect((err) => {
                	if (err) throw err;
                
                	con.query('SELECT Wert1 FROM Test1 WHERE Id = 1', (err, results, fields) => {
                		if (err) throw err;
                
                		setState('0_userdata.0.blabla', { val: results[0].Wert1, ack: true });
                	});
                });
                

                (hier im Forum getippt, also nicht getestet)

                ReinerR Offline
                ReinerR Offline
                Reiner
                wrote on last edited by
                #10

                @haus-automatisierung

                Hallo,
                jetzt hat sich im laufenden Betrieb noch ein kleines Problem ergeben.
                Wenn der Mysql Server neu gestartet oder nicht erreichbar ist bringt das Script logischerweise jede Menge Fehler. Ist aber nun der Mysql Server wieder online nimmt das Script seine Arbeit nicht mehr auf. Das Problem kann gelöst werden indem ich das Script stoppe und neu starte.

                Meine Frage:
                Gibt es eine Möglichkeit die Abfrage nur zu starten, wenn der Mysql Server auch online ist?

                OliverIOO haus-automatisierungH 2 Replies Last reply
                0
                • ReinerR Reiner

                  @haus-automatisierung

                  Hallo,
                  jetzt hat sich im laufenden Betrieb noch ein kleines Problem ergeben.
                  Wenn der Mysql Server neu gestartet oder nicht erreichbar ist bringt das Script logischerweise jede Menge Fehler. Ist aber nun der Mysql Server wieder online nimmt das Script seine Arbeit nicht mehr auf. Das Problem kann gelöst werden indem ich das Script stoppe und neu starte.

                  Meine Frage:
                  Gibt es eine Möglichkeit die Abfrage nur zu starten, wenn der Mysql Server auch online ist?

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  wrote on last edited by
                  #11

                  @reiner

                  die folgende Zeile rausnehmen

                  if (err) throw err;
                  

                  ggfs ersetzen mit, bin mir aber nicht sicher ob das funktioniert

                  if (err) log(err);
                  

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  ReinerR 1 Reply Last reply
                  0
                  • OliverIOO OliverIO

                    @reiner

                    die folgende Zeile rausnehmen

                    if (err) throw err;
                    

                    ggfs ersetzen mit, bin mir aber nicht sicher ob das funktioniert

                    if (err) log(err);
                    
                    ReinerR Offline
                    ReinerR Offline
                    Reiner
                    wrote on last edited by
                    #12

                    @oliverio
                    Hallo,
                    das auskommentieren hat funktioniert. Jetzt läuft das Script auch nach einem Neustart der DB wieder von alleine.

                    Danke für die Hilfe!

                    1 Reply Last reply
                    0
                    • ReinerR Reiner

                      @haus-automatisierung

                      Hallo,
                      jetzt hat sich im laufenden Betrieb noch ein kleines Problem ergeben.
                      Wenn der Mysql Server neu gestartet oder nicht erreichbar ist bringt das Script logischerweise jede Menge Fehler. Ist aber nun der Mysql Server wieder online nimmt das Script seine Arbeit nicht mehr auf. Das Problem kann gelöst werden indem ich das Script stoppe und neu starte.

                      Meine Frage:
                      Gibt es eine Möglichkeit die Abfrage nur zu starten, wenn der Mysql Server auch online ist?

                      haus-automatisierungH Online
                      haus-automatisierungH Online
                      haus-automatisierung
                      Developer Most Active
                      wrote on last edited by
                      #13

                      @reiner sagte in Js Script für externe MySQL Abfrage:

                      Gibt es eine Möglichkeit die Abfrage nur zu starten, wenn der Mysql Server auch online ist?

                      Dann würde ich das so machen:

                      con.connect((err) => {
                      	if (err) {
                      		console.log(err);
                      	} else {
                      		con.query('SELECT Wert1 FROM Test1 WHERE Id = 1', (err, results, fields) => {
                      			if (err) {
                      				console.error(err);
                      			} else {
                      				setState('0_userdata.0.blabla', { val: results[0].Wert1, ack: true });
                      			}
                      		});
                      	}
                      });
                      

                      Oder ein try/catch drumherum bauen und das throw drin lassen.

                      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                      📚 Meine inoffizielle ioBroker Dokumentation

                      ReinerR 1 Reply Last reply
                      0
                      • haus-automatisierungH haus-automatisierung

                        @reiner sagte in Js Script für externe MySQL Abfrage:

                        Gibt es eine Möglichkeit die Abfrage nur zu starten, wenn der Mysql Server auch online ist?

                        Dann würde ich das so machen:

                        con.connect((err) => {
                        	if (err) {
                        		console.log(err);
                        	} else {
                        		con.query('SELECT Wert1 FROM Test1 WHERE Id = 1', (err, results, fields) => {
                        			if (err) {
                        				console.error(err);
                        			} else {
                        				setState('0_userdata.0.blabla', { val: results[0].Wert1, ack: true });
                        			}
                        		});
                        	}
                        });
                        

                        Oder ein try/catch drumherum bauen und das throw drin lassen.

                        ReinerR Offline
                        ReinerR Offline
                        Reiner
                        wrote on last edited by
                        #14

                        @haus-automatisierung

                        Das hat alles wunderbar funktioniert.

                        Jetzt hätte ich noch einen Anwendungsfall.
                        Ist es auch möglich 2 Felder einer Zeile und mehrere Zeilen in einen Datenpunkt zu schreiben. Die Anzahl der Zeilen kann hier variieren.
                        Ebenfalls ist mir hier nicht klar welches Format der Datenpunkt haben muss.

                        haus-automatisierungH 1 Reply Last reply
                        0
                        • ReinerR Reiner

                          @haus-automatisierung

                          Das hat alles wunderbar funktioniert.

                          Jetzt hätte ich noch einen Anwendungsfall.
                          Ist es auch möglich 2 Felder einer Zeile und mehrere Zeilen in einen Datenpunkt zu schreiben. Die Anzahl der Zeilen kann hier variieren.
                          Ebenfalls ist mir hier nicht klar welches Format der Datenpunkt haben muss.

                          haus-automatisierungH Online
                          haus-automatisierungH Online
                          haus-automatisierung
                          Developer Most Active
                          wrote on last edited by
                          #15

                          @reiner Klar kannst Du auch Werte aus anderen Spalten schreiben. Einfach mit

                          con.connect((err) => {
                          	if (err) {
                          		console.log(err);
                          	} else {
                          		con.query('SELECT Wert1, Wert2 FROM Test1 WHERE Id = 1', (err, results, fields) => {
                          			if (err) {
                          				console.error(err);
                          			} else {
                          				setState('0_userdata.0.blabla1', { val: results[0].Wert1, ack: true });
                          				setState('0_userdata.0.blabla2', { val: results[0].Wert2, ack: true });
                          			}
                          		});
                          	}
                          });
                          

                          Wenn Du das Ergebnis aus mehreren Zeilen schreiben möchtest, dann kommt es darauf an was Du konkret vor hast. Also ob Du eine Schleife brauchst, weil Du die Anzahl der Zeilen nicht kennst usw.

                          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                          📚 Meine inoffizielle ioBroker Dokumentation

                          ReinerR 1 Reply Last reply
                          0
                          • haus-automatisierungH haus-automatisierung

                            @reiner Klar kannst Du auch Werte aus anderen Spalten schreiben. Einfach mit

                            con.connect((err) => {
                            	if (err) {
                            		console.log(err);
                            	} else {
                            		con.query('SELECT Wert1, Wert2 FROM Test1 WHERE Id = 1', (err, results, fields) => {
                            			if (err) {
                            				console.error(err);
                            			} else {
                            				setState('0_userdata.0.blabla1', { val: results[0].Wert1, ack: true });
                            				setState('0_userdata.0.blabla2', { val: results[0].Wert2, ack: true });
                            			}
                            		});
                            	}
                            });
                            

                            Wenn Du das Ergebnis aus mehreren Zeilen schreiben möchtest, dann kommt es darauf an was Du konkret vor hast. Also ob Du eine Schleife brauchst, weil Du die Anzahl der Zeilen nicht kennst usw.

                            ReinerR Offline
                            ReinerR Offline
                            Reiner
                            wrote on last edited by
                            #16

                            @haus-automatisierung
                            Also die Anzahl der Zeilen ist nicht bekannt, dh diese ändert sich.
                            Wenn ich das richtig verstanden habe muss ich für jeden Wert einen eigenen Datenpunkt im voraus erstellen. Das ist so gesehen kein Problem.

                            Nur was mir nicht klar ist. Ich kann ja im Script keine Zeilen in der DB abfragen die gar nicht vorhanden sind. Und eine andere Sache ist wie kann ich dann zB in der Visualisierung nur die tatsächlich vorhandenen Werte anzeigen ohne das ich hier sehr viele Leerzeilen der leeren Datenpunkte habe.

                            haus-automatisierungH 1 Reply Last reply
                            0
                            • ReinerR Reiner

                              @haus-automatisierung
                              Also die Anzahl der Zeilen ist nicht bekannt, dh diese ändert sich.
                              Wenn ich das richtig verstanden habe muss ich für jeden Wert einen eigenen Datenpunkt im voraus erstellen. Das ist so gesehen kein Problem.

                              Nur was mir nicht klar ist. Ich kann ja im Script keine Zeilen in der DB abfragen die gar nicht vorhanden sind. Und eine andere Sache ist wie kann ich dann zB in der Visualisierung nur die tatsächlich vorhandenen Werte anzeigen ohne das ich hier sehr viele Leerzeilen der leeren Datenpunkte habe.

                              haus-automatisierungH Online
                              haus-automatisierungH Online
                              haus-automatisierung
                              Developer Most Active
                              wrote on last edited by
                              #17

                              @reiner sagte in Js Script für externe MySQL Abfrage:

                              Wenn ich das richtig verstanden habe muss ich für jeden Wert einen eigenen Datenpunkt im voraus erstellen.

                              Musst Du nicht - kann man auch per JavaScript. Aber daher die Frage, was Du konkret vor hast. Man kann ja auch mehrere Werte als JSON in einen Datenpunkt schreiben und später weiter verwenden usw.

                              Ich möchte jetzt nicht empfehlen, hunderte Datenpunkte anzulegen ohne die Anforderung zu kennen.

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              ReinerR 1 Reply Last reply
                              0
                              • haus-automatisierungH haus-automatisierung

                                @reiner sagte in Js Script für externe MySQL Abfrage:

                                Wenn ich das richtig verstanden habe muss ich für jeden Wert einen eigenen Datenpunkt im voraus erstellen.

                                Musst Du nicht - kann man auch per JavaScript. Aber daher die Frage, was Du konkret vor hast. Man kann ja auch mehrere Werte als JSON in einen Datenpunkt schreiben und später weiter verwenden usw.

                                Ich möchte jetzt nicht empfehlen, hunderte Datenpunkte anzulegen ohne die Anforderung zu kennen.

                                ReinerR Offline
                                ReinerR Offline
                                Reiner
                                wrote on last edited by
                                #18

                                @haus-automatisierung
                                Es geht darum Positionen die im Plus sind via Iobroker zu Visualisieren.
                                Die Anzahl der Positionen die im Plus sind, sind bereits in der DB und je nachdem wie viele im Plus sind ändert sich die Anzahl der Zeilen in der DB. 1 Position im Plus = eine Zeile. 5 Positionen im Plus = 5 Zeilen.
                                Die Felder die abgefragt werden sind "market" und "profit".

                                Wenn zB 5 Zeilen vorhanden sind, sollen in der Visualisierung (Jarvis) auch 5 Zeilen erscheinen. Allerdings nur mit den Feldern "market" und "profit".

                                Ich hoffe ich habe es verständlich erklärt.

                                haus-automatisierungH 1 Reply Last reply
                                0
                                • ReinerR Reiner

                                  @haus-automatisierung
                                  Es geht darum Positionen die im Plus sind via Iobroker zu Visualisieren.
                                  Die Anzahl der Positionen die im Plus sind, sind bereits in der DB und je nachdem wie viele im Plus sind ändert sich die Anzahl der Zeilen in der DB. 1 Position im Plus = eine Zeile. 5 Positionen im Plus = 5 Zeilen.
                                  Die Felder die abgefragt werden sind "market" und "profit".

                                  Wenn zB 5 Zeilen vorhanden sind, sollen in der Visualisierung (Jarvis) auch 5 Zeilen erscheinen. Allerdings nur mit den Feldern "market" und "profit".

                                  Ich hoffe ich habe es verständlich erklärt.

                                  haus-automatisierungH Online
                                  haus-automatisierungH Online
                                  haus-automatisierung
                                  Developer Most Active
                                  wrote on last edited by
                                  #19

                                  @reiner Das würde ich über JSON lösen. Also alles in einen Datenpunkt schreiben und dann die Tabelle in Jarvis darstellen. Alles andere wäre ja total anstrengend.

                                  https://forum.iobroker.net/topic/30668/jarvis-v2-2-0-just-another-remarkable-vis/3868

                                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                  📚 Meine inoffizielle ioBroker Dokumentation

                                  ReinerR 2 Replies Last reply
                                  0
                                  • haus-automatisierungH haus-automatisierung

                                    @reiner Das würde ich über JSON lösen. Also alles in einen Datenpunkt schreiben und dann die Tabelle in Jarvis darstellen. Alles andere wäre ja total anstrengend.

                                    https://forum.iobroker.net/topic/30668/jarvis-v2-2-0-just-another-remarkable-vis/3868

                                    ReinerR Offline
                                    ReinerR Offline
                                    Reiner
                                    wrote on last edited by
                                    #20

                                    @haus-automatisierung
                                    Danke für den Hinweis.
                                    Ich werde mir das mal ansehen.

                                    1 Reply Last reply
                                    0
                                    • haus-automatisierungH haus-automatisierung

                                      @reiner Das würde ich über JSON lösen. Also alles in einen Datenpunkt schreiben und dann die Tabelle in Jarvis darstellen. Alles andere wäre ja total anstrengend.

                                      https://forum.iobroker.net/topic/30668/jarvis-v2-2-0-just-another-remarkable-vis/3868

                                      ReinerR Offline
                                      ReinerR Offline
                                      Reiner
                                      wrote on last edited by
                                      #21

                                      @haus-automatisierung
                                      Hallo,
                                      also das Ergebnis sieht schon sehr ordentlich aus dank deiner Hilfe.

                                      484405d2-c9fb-4b7b-a496-cd9a17c9a2cf-image.png

                                      Zwei Schönheitsfehler habe ich noch.
                                      In der Anzeigenvariante vom Datenpunkt habe ich folgendes eingefügt um die Labels zu ändern:

                                      {
                                      "Exchange":"Exchange",
                                      "market":"Market",
                                      "profit":"Profit"
                                      }

                                      In der Einheit des Datenpunktes habe ich folgendes eingefügt um den Wert ein Prozentzeichen hinzuzufügen:

                                      {
                                      "profit":"%"
                                      }

                                      Irgendwie funktioniert aber beides nicht. Dh es ändert sich nichts und es gibt auch keinen Fehler.

                                      Vielleicht hast Du noch eine Idee wo ich ansetzen kann.

                                      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

                                      415

                                      Online

                                      32.5k

                                      Users

                                      81.7k

                                      Topics

                                      1.3m

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

                                      • Don't have an account? Register

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