Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. mit Blockly CSV Daten aus HTTP auf MQTT schicken

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    mit Blockly CSV Daten aus HTTP auf MQTT schicken

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mibr85 last edited by

      Hallo zusammen
      da ja jetzt lagsam wieder die Poolsaison beginnt, habe ich mir als Ziel gesetzt meinen Poolcontroller von Pooldigital in den ioBroker einzubinden.
      Wenn ich IP/GetState.csv sende bekomme ich daten zurück, aber ich weis leider nicht, wie ich diesen Haufen jetzt weiter verarbeiten kann um die daten per MQTT zu senden.
      Würde mich über Hilfe sehr freuen.
      Grüsse
      Micha

      SYSINFO,1.7.3,3817120,0,1,0,256,4,2,2
      Time,n.a.,n.a.,Kesseldruck,n.a.,CPU Temp,Redox,pH,Pool,SolarRL,Luft,SolarDach,Schacht,Whirlpool,n.a.,n.a.,Filterpumpe,Brunnen,pH Minus,Durchlaufheizer,Wasserzul.,Beleuchtung,SolarBypass,CEE Pumpe Alt,Wasser Tief,Wasser Hoch,TASTER3,TASTER4,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,n.a.,Cl Rest,pH- Rest,pH+ Rest,Cl consumption,pH- consumption,pH+ consumption
      h,mV,mV,Bar,mV,C,mV,pH,C,C,C,C,C,C,C,C,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,%,%,%,ml,ml,ml
      0,0,0,-0.400,0,147.5,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      1,0.0625,0.0625,0.000041666666,0.0625,-0.00468750,0.0625,0.0078125,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.1,0.1,0.1,1,1,1
      4917,19826,15489,26993,29,20860,2258,-72,229,227,0,0,230,297,0,0,3,2,2,2,2,2,0,2,1,1,0,0,0,0,0,0,0,0,0,0,1000,1000,1000,0,0,0
      
      paul53 Homoran 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @mibr85 last edited by paul53

        @mibr85
        Die CSV-Daten sind nicht leicht zu handhaben. Ansatz:

        Bild_2022-05-15_170120702.png

        Im Log erscheinen 42 Zahlen.
        Der gepostete CSV-Inhalt enthält nach dem Kopieren Leerzeichen anstelle von Zeilenschaltungen. Mit Zeilenschaltungen im CSV wäre es einfacher:

        Bild_2022-05-15_193237294.png

        M 1 Reply Last reply Reply Quote 0
        • M
          mibr85 @paul53 last edited by

          @paul53
          Vielen Dank für deine schnelle Antwort, wie immer 😉
          die Zeilenumbrüche sind mit /n
          also im Node Red habe ich es so gelöst, weiss aber nicht so richtig ob ich das so in den ioBroker bekomme:

          var rows = msg.payload.split("\n");
          
          var names = rows[1].split(',');
          var units = rows[2].split(',');
          var offsets = rows[3].split(',');
          var gains = rows[4].split(',');
          var rawValues = rows[5].split(',');
          
          var result = {};
          
          for (var i = 0; i < 41; i++) {
              var obj = {};
              obj.unit = units[i];
              obj.value = 1 * offsets[i] + (gains[i] * rawValues[i]);
          
              if (names[i] != "n.a.") {
                  result[names[i]] = obj;
              }
           }
          
          msg.payload = result;
          return msg;
          
          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @mibr85 last edited by paul53

            @mibr85 sagte: weiss aber nicht so richtig ob ich das so in den ioBroker bekomme:

            Das ist doch Javascript-Code, außer msg.payload. Das Ergebnis ist ein Objekt.

            Du möchtest die Werte sicherlich in Datenpunkte schreiben:

            const path = '0_userdata.0.pool.control.'
            
            function pool(csv) {
                var rows = csv.split("\n");
            
                var names = rows[1].split(',');
                var units = rows[2].split(',');
                var offsets = rows[3].split(',');
                var gains = rows[4].split(',');
                var rawValues = rows[5].split(',');
            
                for (var i = 0; i < 42; i++) {
                    let value = 1 * offsets[i] + (gains[i] * rawValues[i]);
                    if (names[i] != "n.a.") {
                        setState(path + names[i], value, true);
                    }
                }
            }
            
            schedule('*/15 * * * * *', function() {
                request('192.168.100.90/GetState.csv', function(err, response, data) {
                    if(err) log(err, 'warn');
                    else pool(data);
                });
            });
            
            M 1 Reply Last reply Reply Quote 0
            • M
              mibr85 @paul53 last edited by

              @paul53 sagte in mit Blockly CSV Daten aus HTTP auf MQTT schicken:

              const path = '0_userdata.0.pool.control.'

              sorry für die doofe Frage aber wie bekomme ich denn den Get request da noch mit rein?
              oder gar nicht über blockly sondern direkt über ne Javascript funktion?

              Screenshot 2022-05-15 212644.png

              paul53 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @mibr85 last edited by

                @mibr85 sagte in mit Blockly CSV Daten aus HTTP auf MQTT schicken:

                Wenn ich IP/GetState.csv sende

                gibt es da boch andere Optionen? json vielleicht?

                M 1 Reply Last reply Reply Quote 0
                • M
                  mibr85 @Homoran last edited by

                  @homoran
                  leider nicht es wird nur eine CSV ausgegeben 😞

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @mibr85 last edited by

                    @mibr85 sagte: wie bekomme ich denn den Get request da noch mit rein?

                    Habe ich oben ergänzt (ab Zeile 20).

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      mibr85 @paul53 last edited by

                      @paul53
                      Vielen Dank 🙂

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      844
                      Online

                      32.0k
                      Users

                      80.5k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      281
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo