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.0 abfrage

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.0 abfrage

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 2 Kommentatoren 577 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.
  • arteckA Offline
    arteckA Offline
    arteck
    Developer Most Active
    schrieb am zuletzt editiert von
    #1

    irgendwie hab ich ein Brett vorm Kopp

    ich schreibe mit Betteriewerte in die DB

    jetzt hab ich 20 Geräte die ich nicht einzeln klimpern will also :

     `// -----------------------------------------------------------------------------
    // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
    // -----------------------------------------------------------------------------
    
    var id = "%attery%" 
    var ind = 0;
    
    var arrBatterie = [];
    var devicename;
    
    SQLAbfrage();
    
    //----- alle Geräte lesen 
    function SQLAbfrage () {
        sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name LIKE \'' + id + '\'', GetResults);
    }
    
    //----- mit diesen den zugehörigen letzten Wert
    function GetResults (dpoint) {
        var length = dpoint.result.length;
    
        for (var i = 0; i <= length-1; i++) {
            sendTo('sql.0', 'query', 'SELECT val FROM iobroker.ts_number WHERE id = ' + dpoint.result[i].id + ' ORDER BY ts DESC LIMIT 1',devi);    
    
            var name = dpoint.result[i].name;
            name = name.substring(name.indexOf(".0.")+3);
    
            devicename = name.substring(0, name.indexOf(".battery"));
            if (devicename.length < 1) {
                devicename = name.substring(0, name.indexOf(".percent")); 
            }
            if (devicename.length < 1) {
                devicename = name.substring(0, name.indexOf(".BATTERY"));
            }
    //------- nur den devicenamen ohne schnickschnak        
    
        }
    }
    
    function devi(result) {
       var wert = JSON.stringify(result.result);
    
    }`
    
    und jetzt komm ich nicht weiter... in der Schleife habe ich die übergabe an die nächste Funktion aber ich brauche noch paar Werte für den Array den ich zusammen bauen will... 
    
    am ende will ich ein array haben  mit   "devicename,wert" im arrBatterie[/i][/i]
    

    zigbee hab ich, zwave auch, nuc's genauso und HA auch

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Willkommen in der asynchronen Welt von JavaScript.

      In deinem Ansatz machst DU die erste SQL-Abfrage und dann werden die ganzen anderen quasi parallel gefeuert und rufe alle jeweils die "devi"-Funktion auf. Diese setzt immer nur die Variable "wert". Wenn Du bei deiner Query auch die ID immer als ergebnis mit selektierst kannst du in devi deine array-Werte korrekt setzen.

      Dann musst Du nur nach der letzten Rückmeldung ggf das tun was Du tun willst wenn alles fertig ist nach dem Füllen.

      Das macht man ggf indem man sich eine Zähler merkt der am Anfang =die Anzahl der Datenpunkte ist und mit jeder Antwort vermindert wird. Wenn er mach dem vermindern = 0 ist ist man an sich fertig und kann dann das tun was man noch braucht.

      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
      • arteckA Offline
        arteckA Offline
        arteck
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        ok soweit verstanden aber

        function devi(result) {
           var wert = JSON.stringify(result.result);
        
        }
        

        wie bekomme ich aus der Funktion den rückgabewert pro Schleifendruchgang

        zigbee hab ich, zwave auch, nuc's genauso und HA auch

        1 Antwort Letzte Antwort
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          schrieb am zuletzt editiert von
          #4

          Nimm ein Array oder Objekt und füge alle antworten rein.

          Also mit nem Array ein

          werte.push(result.result);

          Und werte ist eine globale Variable.

          Und am besten hierhin ein check wenn die Länge des werte Arrays so lang wie die Anzahl der datenpunkte ist dann gleichbedeutend „Nachbearbeitung“ machen

          Gesendet vom Handy …

          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
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          452

          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