Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Werte aus Smartmeter Adapter in Excel exportieren

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Werte aus Smartmeter Adapter in Excel exportieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active @frana120500 last edited by

      @frana120500 sagte in Werte aus Smartmeter Adapter in Excel exportieren:

      in eine Exceltabelle zu schreiben?

      ja, das geht.

      Anbei mal ein Beispiel in js mit Erläuterungen (hatte ich mir als Muster mal gespeichert).

      // Daten nach Excel schreiben und auch lesen
      // Achtung: wenn Diagramme in Excel vorhanden sind, werden diese beim Speichern durch exceljs gelöscht.
      // Achtung: speichern einer xlsm ! funktioniert ebenfalls nicht.
          var Excel = require('exceljs');
          var workbook = new Excel.Workbook();
          workbook.xlsx.readFile("C:/tmp/Messungen.xlsx")
          .then(function() {
              var worksheet = workbook.getWorksheet('Messungen');
              log (formatDate(new Date(worksheet.getCell(6,2).value), 'DD.MM.YYYY'));
              log (worksheet.getCell(13,2).value);
                  if (worksheet.getCell(13,2).value == null) {
                      log ("ja");
                  }
              log (worksheet.getCell(6,2).value);
              log (worksheet.getCell(6,3).value);             // wenn Formel enthalten, dann Ergebnis "Formel und Result"
              log (worksheet.getCell(6,8).value.result);      // result wenn eine Formel enthalten ist
              log (worksheet.getRow(10).values);              // Zeile wird in arr geschrieben
              //var date = worksheet.getCell('B6').value;
              //var date = worksheet.getCell('6,2').value;
              //log (worksheet.getCell('B13').value);
              //worksheet.getCell('B12').value = 'Hallo';         // einer Zelle einen Wert zuweisen
              //workbook.xlsx.writeFile('C:/tmp/Messungen.xlsx'); // Excel wird neu gespeichert
          });
      
      

      Musst da mal ein bisschen mit rumspielen.

      mfg
      Dieter

      frana120500 1 Reply Last reply Reply Quote 0
      • frana120500
        frana120500 @bahnuhr last edited by

        @bahnuhr das ging ja fix. vielen Dank. Das werde ich mal ausprobieren

        frana120500 1 Reply Last reply Reply Quote 0
        • frana120500
          frana120500 @frana120500 last edited by frana120500

          @frana120500 mmmh, ok, das übersteigt dann doch meine JS Fähigkeiten.

          ich habe den Javascript Adapter um das npm exceljs erweitert und im Script an den Anfang

          var zaehlerstand = getState("smartmeter.1.1-0:2_8_0__255.value");

          gestellt. Hier steht der Wert drin den ich gerne bsp. in Zelle A2 des Tabellenblattes Messungen hätte.

          Der lokale Pfad zu meiner Excel Datei ist /Users/franksiemens/Desktop/test.xlsx

          (Mac Nutzer)

          kannst du mir hier grad mal unter die Arme helfen wie ich weiter vorgehen muss.

          bahnuhr 1 Reply Last reply Reply Quote 0
          • bahnuhr
            bahnuhr Forum Testing Most Active @frana120500 last edited by

            @frana120500 sagte in Werte aus Smartmeter Adapter in Excel exportieren:

            getState("smartmeter.1.1-0:2_8_0__255.value")

            Die Schreibweise dürfte nicht richtig sein.

            frana120500 1 Reply Last reply Reply Quote 0
            • frana120500
              frana120500 @bahnuhr last edited by frana120500

              @bahnuhr hast recht. falsche Anführungszeichen benutzt.

              dennoch weiß ich nicht weiter.

              // Daten nach Excel schreiben und auch lesen
              // Achtung: wenn Diagramme in Excel vorhanden sind, werden diese beim Speichern durch exceljs gelöscht.
              // Achtung: speichern einer xlsm ! funktioniert ebenfalls nicht.
                  var zaehlerstand = getState('smartmeter.1.1-0:2_8_0__255.value');
                  var Excel = require('exceljs');
                  var workbook = new Excel.Workbook();
                  workbook.xlsx.readFile("/Users/franama/Desktop/test.xlsx")
                  .then(function() {
                      var worksheet = workbook.getWorksheet('Messungen');
                      log (formatDate(new Date(worksheet.getCell(6,2).value), 'Stand'));
                      log (worksheet.getCell(13,2).value);
                          if (worksheet.getCell(13,2).value == null) {
                              log ("ja");
                          }
                      log (worksheet.getCell(6,2).value);
                      log (worksheet.getCell(6,3).value);             // wenn Formel enthalten, dann Ergebnis "Formel und Result"
                      log (worksheet.getCell(6,8).value.result);      // result wenn eine Formel enthalten ist
                      log (worksheet.getRow(10).values);              // Zeile wird in arr geschrieben
                      //var zaehlerstand = worksheet.getCell('A2').value;
                      //var date = worksheet.getCell('6,2').value;
                      //log (worksheet.getCell('B13').value);
                      worksheet.getCell('A2').value = zaehlerstand;         // einer Zelle einen Wert zuweisen
                      workbook.xlsx.writeFile('/Users/franama/Desktop/test.xlsx'); // Excel wird neu gespeichert
                  });
              
              bahnuhr 1 Reply Last reply Reply Quote 0
              • bahnuhr
                bahnuhr Forum Testing Most Active @frana120500 last edited by

                @frana120500 sagte in Werte aus Smartmeter Adapter in Excel exportieren:

                falsche Anführungszeichen benutzt.

                Und wieder NEIN.

                getState schreibt man so!

                getState('smartmeter.1.1-0:2_8_0__255').val;

                bahnuhr 1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active @bahnuhr last edited by

                  @bahnuhr sagte in Werte aus Smartmeter Adapter in Excel exportieren:

                  getState('smartmeter.1.1-0:2_8_0__255').val;

                  war auch falsch:
                  richtig ist:
                  getState("smartmeter.1.1-0:16_7_0__255.value").val

                  Folgendes Script läuft. Hab es gerade getestet:

                     var zaehler = getState("smartmeter.1.1-0:16_7_0__255.value").val
                     log (zaehler);
                     var Excel = require('exceljs');
                     var workbook = new Excel.Workbook();
                     workbook.xlsx.readFile("/mnt/test.xlsx")   
                     .then(function() {
                         var worksheet = workbook.getWorksheet('Messungen');
                         worksheet.getCell('A2').value = zaehler;         // einer Zelle einen Wert zuweisen
                         workbook.xlsx.writeFile('/mnt/test.xlsx'); // Excel wird neu gespeichert
                     });
                  
                  

                  Wichtig hierbei ist:
                  Du musst den Pfad richtig ermitteln. Bei mir läuft iob in einer VM unter proxmox.
                  Das Verzeichnis auf meinem win rechner ist gemountet mit der VM.

                  mfg
                  Dieter

                  P 1 Reply Last reply Reply Quote 0
                  • P
                    Pat @bahnuhr last edited by

                    @bahnuhr

                    Hallo

                    ich fange auch gerade an mich damit auseinander zusetzten.

                    Wenn ich aber den Script 1 zu 1 kopiere kommt der fehler

                    script.js.common.excel_test: TypeError: Cannot read property 'getCell' of undefined
                    

                    Woran kann das liegen.

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      fastfoot @Pat last edited by

                      @pat sagte in Werte aus Smartmeter Adapter in Excel exportieren:

                      Woran kann das liegen.

                      in deinem Excel fehlt das Worksheet Messungen

                      P 1 Reply Last reply Reply Quote 1
                      • P
                        Pat @fastfoot last edited by Pat

                        @fastfoot
                        Verbuchen wir es mal unter "es war spät"

                        So daten lesen aus den Cellen funktioniert aber irgendwie klappt das schreiben nicht.

                        const ExcelJS = require('exceljs');
                        var workbook = new ExcelJS.Workbook();
                        
                        workbook.xlsx.readFile('/mnt/NAS/test.xlsx').then(function() {
                        var worksheet = workbook.getWorksheet('test');
                        
                        console.log (worksheet.getCell('A1').value);
                        log (worksheet.getCell(1,3).value);
                        
                            worksheet.getCell('A3').value = 'Hallo Welt'; // einer Zelle einen Wert zuweisen
                            workbook.xlsx.writeFile('/mnt/NAS/test.xlsx'); // Excel wird neu gespeichert
                        });
                        
                        
                        bahnuhr F F 3 Replies Last reply Reply Quote 0
                        • bahnuhr
                          bahnuhr Forum Testing Most Active @Pat last edited by

                          @pat
                          Habe dein Script gerade probiert.
                          Es funktioniert einwandfrei.

                          1209840f-317c-4ec8-81be-c49a8a4a5f44-image.png

                          Frage:
                          Stimmt der Pfad?
                          Hast du ein Tabellenblatt mit "test"?

                          1 Reply Last reply Reply Quote 1
                          • F
                            fastfoot @Pat last edited by

                            @pat sagte in Werte aus Smartmeter Adapter in Excel exportieren:

                            aber irgendwie klappt das schreiben nicht.

                            hat der user iobroker denn Schreibberechtigung auf /mnt/NAS?

                            P 1 Reply Last reply Reply Quote 1
                            • P
                              Pat @fastfoot last edited by

                              @fastfoot

                              Also Lesen kann ich wenn ich was händisch eintrage kann ich auch die Zellen auslesen.

                              Beim schreiben kommt der Fehler. Ich hätte einfach mal schauen sollen im log. In der Console stand nix. 🤦‍♂️

                              javascript.0	2021-10-14 19:56:17.171	error	(8874) Error: EACCES: permission denied, open '/mnt/NAS/test.xlsx'
                              javascript.0	2021-10-14 19:56:17.171	error	(8874) An error happened which is most likely from one of your scripts, but the originating script could not be detected.
                              

                              Ich habe schonmal geschaut also lese und schreib Rechte sind vergeben das sollte passen.
                              Aber irdendetwas verhindert noch das schreiben.

                              F 1 Reply Last reply Reply Quote 0
                              • F
                                fastfoot @Pat last edited by

                                @pat wie wurde denn der Ordner konkret gemounted? Da fehlt die Schreibberechtigung

                                P 1 Reply Last reply Reply Quote 0
                                • P
                                  Pat @fastfoot last edited by

                                  @fastfoot
                                  da ich schon andere dateien raus lese wurde ich sagen das er richtig gemounted ist. Aber ich habe noch nie geschrieben.
                                  Berechtigung.png

                                  Das wird wieder eine lange suche

                                  F bahnuhr 2 Replies Last reply Reply Quote 0
                                  • F
                                    fastfoot @Pat last edited by

                                    @pat dann beantworte die Frage wie der Ordner gemounted wird!

                                    P 1 Reply Last reply Reply Quote 0
                                    • bahnuhr
                                      bahnuhr Forum Testing Most Active @Pat last edited by

                                      @pat
                                      Ich bin absolut Linux Laie.
                                      Aber gibt es nicht den 777 Befehl.
                                      Damit müsste doch alle Rechte dann da sein.

                                      F 1 Reply Last reply Reply Quote 0
                                      • F
                                        fastfoot @bahnuhr last edited by

                                        @bahnuhr sagte in Werte aus Smartmeter Adapter in Excel exportieren:

                                        @pat
                                        Ich bin absolut Linux Laie.
                                        Aber gibt es nicht den 777 Befehl.
                                        Damit müsste doch alle Rechte dann da sein.

                                        nein!

                                        bahnuhr 1 Reply Last reply Reply Quote 0
                                        • bahnuhr
                                          bahnuhr Forum Testing Most Active @fastfoot last edited by

                                          @fastfoot sagte in Werte aus Smartmeter Adapter in Excel exportieren:

                                          nein!

                                          Ich sag es ja.
                                          War ein Versuch.

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            Pat @fastfoot last edited by Pat

                                            @fastfoot said in Werte aus Smartmeter Adapter in Excel exportieren:

                                            @pat dann beantworte die Frage wie der Ordner gemounted wird!

                                            im /etc/fstab dies

                                            //192.168.0.10/Dokumente/IObroker /mnt/NAS cifs uid=1000,gid=1000,rw,user,credentials=/home/pat/.smbzugang,vers=2.0  0 0
                                            

                                            eingetragen und im /home/pat/.smbzugang die zugangsdaten

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            811
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            45
                                            5161
                                            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