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

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
    23
    1
    1.3k

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

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

Js Script für externe MySQL Abfrage

Geplant Angeheftet Gesperrt Verschoben JavaScript
21 Beiträge 4 Kommentatoren 2.5k Aufrufe 5 Watching
  • Ä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.
  • 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
    schrieb am zuletzt editiert von
    #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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 Antworten Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #20

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

                        1 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #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 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

                          819

                          Online

                          32.5k

                          Benutzer

                          81.7k

                          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