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. ioBroker Allgemein
  4. History Adapter CSV versenden

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

History Adapter CSV versenden

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
14 Beiträge 2 Kommentatoren 1.2k Aufrufe 2 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

    @sören sagte in History Adapter CSV versenden:

    Am besten wäre eine Lösung mit Blockly, da ich mit Javascript noch nicht zu Recht komme.

    Für die getHistory Funktion gibt es keinen Blockly-Baustein soweit ich weiß. Daher wird das nichts ohne JavaScript.

    Wie genau soll die CSV-Datei denn aufgebaut sein?

    Siehe https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#gethistory

    SörenS Offline
    SörenS Offline
    Sören
    schrieb am zuletzt editiert von
    #3

    @haus-automatisierung Danke für die schnelle Reaktion. Eigentlich reicht mir die manuell generierte CSV Datei im Datenpunkt völlig aus. Diese soll einfach automatisch an eine E-Mailadresse versendet werden, damit ich nicht immer im Datenpunkt nachsehen muss. Es muss nur der Timestamp und der Wert des Datenpunktes aufgeführt sein.

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • SörenS Sören

      @haus-automatisierung Danke für die schnelle Reaktion. Eigentlich reicht mir die manuell generierte CSV Datei im Datenpunkt völlig aus. Diese soll einfach automatisch an eine E-Mailadresse versendet werden, damit ich nicht immer im Datenpunkt nachsehen muss. Es muss nur der Timestamp und der Wert des Datenpunktes aufgeführt sein.

      haus-automatisierungH Online
      haus-automatisierungH Online
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von
      #4

      @sören sagte in History Adapter CSV versenden:

      Es muss nur der Timestamp und der Wert des Datenpunktes aufgeführt sein.

      Über welchen Zeitraum? Jeden Tag eine Mail mit dem Inhalt der letzten 24 Stunden?

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

      SörenS 1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

        @sören sagte in History Adapter CSV versenden:

        Es muss nur der Timestamp und der Wert des Datenpunktes aufgeführt sein.

        Über welchen Zeitraum? Jeden Tag eine Mail mit dem Inhalt der letzten 24 Stunden?

        SörenS Offline
        SörenS Offline
        Sören
        schrieb am zuletzt editiert von
        #5

        @haus-automatisierung 1 Mal pro Woche die Daten der letzten Woche. Der Datenpunkt wird nur ca. 4 mal am Tag aktualisiert.

        haus-automatisierungH 1 Antwort Letzte Antwort
        0
        • SörenS Sören

          @haus-automatisierung 1 Mal pro Woche die Daten der letzten Woche. Der Datenpunkt wird nur ca. 4 mal am Tag aktualisiert.

          haus-automatisierungH Online
          haus-automatisierungH Online
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von haus-automatisierung
          #6

          @sören sagte in History Adapter CSV versenden:

          @haus-automatisierung 1 Mal pro Woche die Daten der letzten Woche. Der Datenpunkt wird nur ca. 4 mal am Tag aktualisiert.

          Dann bitte mal so testen

          • objId muss den Datenpunkt enthalten, für welchen History aktiviert ist
          • Bitte deine Mailadresse und Absender anpassen

          Das Ganze startet ein Cron, welcher Montags um 00:00 läuft und die Mail sendet.

          Die Mail-Funktion habe ich nur aus der Doku so abgetippt - nicht getestet

          const objId = 'yr.0.forecastHourly.0h.air_temperature';
          
          const fileName = `${objId}.csv`;
          const filePath = `/opt/iobroker/iobroker-data/${fileName}`;
          
          var fs = require('fs');
          
          schedule("0 0 * * 1", async () => {
              const end = new Date().getTime();
              const start = end - (60 * 60 * 24 * 7 * 1000); // letzte 7 Tage;
          
              getHistory('history.0', {
                  id: objId,
                  start: start,
                  end: end,
                  aggregate: 'none',
                  timeout: 2000
              }, (err, result) => {
                  if (err) {
                      console.error(`Unable to get history of ${objId}: ${err}`);
                  } else if (result) {
                      let csvData = ['timestamp;value'];
          
                      for (var i = 0; i < result.length; i++) {
                          csvData.push(`${new Date(result[i].ts).toISOString()};${result[i].val}`);
                      }
          
                      fs.writeFileSync(filePath, csvData.join("\n"));
          
                      sendTo('email.0', {
                          from: 'iobroker@mydomain.com',
                          to: 'yourmail@mydomain.com',
                          subject: `History-Daten von ${objId}`,
                          text: `Hier sind die History-Daten von ${start.toLocaleString()} bis ${end.toLocaleString()}`,
                          attachments: [
                              {
                                  path: filePath
                              }
                          ]
                      }, (err, result) => {
                          if (err) {
                              console.error(`Unable to send email: ${err}`);
                          }
                          fs.unlinkSync(filePath);
                      });
                  }
              });
          });
          

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

          SörenS 2 Antworten Letzte Antwort
          1
          • haus-automatisierungH haus-automatisierung

            @sören sagte in History Adapter CSV versenden:

            @haus-automatisierung 1 Mal pro Woche die Daten der letzten Woche. Der Datenpunkt wird nur ca. 4 mal am Tag aktualisiert.

            Dann bitte mal so testen

            • objId muss den Datenpunkt enthalten, für welchen History aktiviert ist
            • Bitte deine Mailadresse und Absender anpassen

            Das Ganze startet ein Cron, welcher Montags um 00:00 läuft und die Mail sendet.

            Die Mail-Funktion habe ich nur aus der Doku so abgetippt - nicht getestet

            const objId = 'yr.0.forecastHourly.0h.air_temperature';
            
            const fileName = `${objId}.csv`;
            const filePath = `/opt/iobroker/iobroker-data/${fileName}`;
            
            var fs = require('fs');
            
            schedule("0 0 * * 1", async () => {
                const end = new Date().getTime();
                const start = end - (60 * 60 * 24 * 7 * 1000); // letzte 7 Tage;
            
                getHistory('history.0', {
                    id: objId,
                    start: start,
                    end: end,
                    aggregate: 'none',
                    timeout: 2000
                }, (err, result) => {
                    if (err) {
                        console.error(`Unable to get history of ${objId}: ${err}`);
                    } else if (result) {
                        let csvData = ['timestamp;value'];
            
                        for (var i = 0; i < result.length; i++) {
                            csvData.push(`${new Date(result[i].ts).toISOString()};${result[i].val}`);
                        }
            
                        fs.writeFileSync(filePath, csvData.join("\n"));
            
                        sendTo('email.0', {
                            from: 'iobroker@mydomain.com',
                            to: 'yourmail@mydomain.com',
                            subject: `History-Daten von ${objId}`,
                            text: `Hier sind die History-Daten von ${start.toLocaleString()} bis ${end.toLocaleString()}`,
                            attachments: [
                                {
                                    path: filePath
                                }
                            ]
                        }, (err, result) => {
                            if (err) {
                                console.error(`Unable to send email: ${err}`);
                            }
                            fs.unlinkSync(filePath);
                        });
                    }
                });
            });
            
            SörenS Offline
            SörenS Offline
            Sören
            schrieb am zuletzt editiert von
            #7

            @haus-automatisierung Super, vielen Dank das probiere ich mal aus.

            1 Antwort Letzte Antwort
            0
            • haus-automatisierungH haus-automatisierung

              @sören sagte in History Adapter CSV versenden:

              @haus-automatisierung 1 Mal pro Woche die Daten der letzten Woche. Der Datenpunkt wird nur ca. 4 mal am Tag aktualisiert.

              Dann bitte mal so testen

              • objId muss den Datenpunkt enthalten, für welchen History aktiviert ist
              • Bitte deine Mailadresse und Absender anpassen

              Das Ganze startet ein Cron, welcher Montags um 00:00 läuft und die Mail sendet.

              Die Mail-Funktion habe ich nur aus der Doku so abgetippt - nicht getestet

              const objId = 'yr.0.forecastHourly.0h.air_temperature';
              
              const fileName = `${objId}.csv`;
              const filePath = `/opt/iobroker/iobroker-data/${fileName}`;
              
              var fs = require('fs');
              
              schedule("0 0 * * 1", async () => {
                  const end = new Date().getTime();
                  const start = end - (60 * 60 * 24 * 7 * 1000); // letzte 7 Tage;
              
                  getHistory('history.0', {
                      id: objId,
                      start: start,
                      end: end,
                      aggregate: 'none',
                      timeout: 2000
                  }, (err, result) => {
                      if (err) {
                          console.error(`Unable to get history of ${objId}: ${err}`);
                      } else if (result) {
                          let csvData = ['timestamp;value'];
              
                          for (var i = 0; i < result.length; i++) {
                              csvData.push(`${new Date(result[i].ts).toISOString()};${result[i].val}`);
                          }
              
                          fs.writeFileSync(filePath, csvData.join("\n"));
              
                          sendTo('email.0', {
                              from: 'iobroker@mydomain.com',
                              to: 'yourmail@mydomain.com',
                              subject: `History-Daten von ${objId}`,
                              text: `Hier sind die History-Daten von ${start.toLocaleString()} bis ${end.toLocaleString()}`,
                              attachments: [
                                  {
                                      path: filePath
                                  }
                              ]
                          }, (err, result) => {
                              if (err) {
                                  console.error(`Unable to send email: ${err}`);
                              }
                              fs.unlinkSync(filePath);
                          });
                      }
                  });
              });
              
              SörenS Offline
              SörenS Offline
              Sören
              schrieb am zuletzt editiert von
              #8

              @haus-automatisierung Habe nun ja meine erste Mail erhalten. Dies hat auch gut funktioniert. Die CSV Datei ist im Anhang. LEider haben die Timestamps einen Versatz von -2 Stunden. In der Tabelle im ioBroker werden die Zeiten richtig angezeigt. Weißt du wo der Fehler liegen könnte? SOnst finde ich das schon irgendwie raus,

              Danke nochmal!

              haus-automatisierungH 1 Antwort Letzte Antwort
              0
              • SörenS Sören

                @haus-automatisierung Habe nun ja meine erste Mail erhalten. Dies hat auch gut funktioniert. Die CSV Datei ist im Anhang. LEider haben die Timestamps einen Versatz von -2 Stunden. In der Tabelle im ioBroker werden die Zeiten richtig angezeigt. Weißt du wo der Fehler liegen könnte? SOnst finde ich das schon irgendwie raus,

                Danke nochmal!

                haus-automatisierungH Online
                haus-automatisierungH Online
                haus-automatisierung
                Developer Most Active
                schrieb am zuletzt editiert von
                #9

                @sören Ja, ich habe die als ISO-String (UTC) ausgegeben im CSV. Siehe new Date(result[i].ts).toISOString(). Wie genau möchtest Du die Daten denn weiter verarbeiten?

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

                SörenS 1 Antwort Letzte Antwort
                0
                • haus-automatisierungH haus-automatisierung

                  @sören Ja, ich habe die als ISO-String (UTC) ausgegeben im CSV. Siehe new Date(result[i].ts).toISOString(). Wie genau möchtest Du die Daten denn weiter verarbeiten?

                  SörenS Offline
                  SörenS Offline
                  Sören
                  schrieb am zuletzt editiert von
                  #10

                  @haus-automatisierung ich möchte dir in ein Tool importieren. Klappt auch nur der Zeitversatz von zwei Stunden war mir aufgefallen. Aber wenn das leicht anzupassen wäre? Funktioniert alles.

                  haus-automatisierungH 1 Antwort Letzte Antwort
                  0
                  • SörenS Sören

                    @haus-automatisierung ich möchte dir in ein Tool importieren. Klappt auch nur der Zeitversatz von zwei Stunden war mir aufgefallen. Aber wenn das leicht anzupassen wäre? Funktioniert alles.

                    haus-automatisierungH Online
                    haus-automatisierungH Online
                    haus-automatisierung
                    Developer Most Active
                    schrieb am zuletzt editiert von haus-automatisierung
                    #11

                    @sören sagte in History Adapter CSV versenden:

                    ich möchte dir in ein Tool importieren

                    Jetzt müsste ich also raten, in welchem Format das Tool gerne das Datum hätte. Wir machen das so: Hier gibt es ein angepasstes Script, und Du kannst das Format für das Datum selbst bestimmen.

                    const objId = 'yr.0.forecastHourly.0h.air_temperature';
                    const csvDateFormat = 'DD.MM.YYYY hh:mm:ss';
                    
                    const fileName = `${objId}.csv`;
                    const filePath = `/opt/iobroker/iobroker-data/${fileName}`;
                    
                    var fs = require('fs');
                    
                    schedule("0 0 * * 1", async () => {
                        const end = new Date().getTime();
                        const start = end - (60 * 60 * 24 * 7 * 1000); // letzte 7 Tage;
                    
                        getHistory('history.0', {
                            id: objId,
                            start: start,
                            end: end,
                            aggregate: 'none',
                            timeout: 2000
                        }, (err, result) => {
                            if (err) {
                                console.error(`Unable to get history of ${objId}: ${err}`);
                            } else if (result) {
                                let csvData = ['timestamp;value'];
                    
                                for (var i = 0; i < result.length; i++) {
                                    csvData.push(`${formatDate(new Date(result[i].ts), csvDateFormat)};${result[i].val}`);
                                }
                    
                                fs.writeFileSync(filePath, csvData.join("\n"));
                    
                                sendTo('email.0', {
                                    from: 'iobroker@mydomain.com',
                                    to: 'yourmail@mydomain.com',
                                    subject: `History-Daten von ${objId}`,
                                    text: `Hier sind die History-Daten von ${formatDate(new Date(start), csvDateFormat)} bis ${formatDate(new Date(end), csvDateFormat)}`,
                                    attachments: [
                                        {
                                            path: filePath
                                        }
                                    ]
                                }, (err, result) => {
                                    if (err) {
                                        console.error(`Unable to send email: ${err}`);
                                    }
                                    fs.unlinkSync(filePath);
                                });
                            }
                        });
                    });
                    

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

                    SörenS 2 Antworten Letzte Antwort
                    0
                    • haus-automatisierungH haus-automatisierung

                      @sören sagte in History Adapter CSV versenden:

                      ich möchte dir in ein Tool importieren

                      Jetzt müsste ich also raten, in welchem Format das Tool gerne das Datum hätte. Wir machen das so: Hier gibt es ein angepasstes Script, und Du kannst das Format für das Datum selbst bestimmen.

                      const objId = 'yr.0.forecastHourly.0h.air_temperature';
                      const csvDateFormat = 'DD.MM.YYYY hh:mm:ss';
                      
                      const fileName = `${objId}.csv`;
                      const filePath = `/opt/iobroker/iobroker-data/${fileName}`;
                      
                      var fs = require('fs');
                      
                      schedule("0 0 * * 1", async () => {
                          const end = new Date().getTime();
                          const start = end - (60 * 60 * 24 * 7 * 1000); // letzte 7 Tage;
                      
                          getHistory('history.0', {
                              id: objId,
                              start: start,
                              end: end,
                              aggregate: 'none',
                              timeout: 2000
                          }, (err, result) => {
                              if (err) {
                                  console.error(`Unable to get history of ${objId}: ${err}`);
                              } else if (result) {
                                  let csvData = ['timestamp;value'];
                      
                                  for (var i = 0; i < result.length; i++) {
                                      csvData.push(`${formatDate(new Date(result[i].ts), csvDateFormat)};${result[i].val}`);
                                  }
                      
                                  fs.writeFileSync(filePath, csvData.join("\n"));
                      
                                  sendTo('email.0', {
                                      from: 'iobroker@mydomain.com',
                                      to: 'yourmail@mydomain.com',
                                      subject: `History-Daten von ${objId}`,
                                      text: `Hier sind die History-Daten von ${formatDate(new Date(start), csvDateFormat)} bis ${formatDate(new Date(end), csvDateFormat)}`,
                                      attachments: [
                                          {
                                              path: filePath
                                          }
                                      ]
                                  }, (err, result) => {
                                      if (err) {
                                          console.error(`Unable to send email: ${err}`);
                                      }
                                      fs.unlinkSync(filePath);
                                  });
                              }
                          });
                      });
                      
                      SörenS Offline
                      SörenS Offline
                      Sören
                      schrieb am zuletzt editiert von
                      #12

                      @haus-automatisierung klasse, danke für deine tolle Unterstützung. Ja das Tool ist nicht von mir sondern von meiner Firma. Weiß das also auch nicht so genau. Ich probiere das nochmal aus und melde mich.

                      1 Antwort Letzte Antwort
                      0
                      • haus-automatisierungH haus-automatisierung

                        @sören sagte in History Adapter CSV versenden:

                        ich möchte dir in ein Tool importieren

                        Jetzt müsste ich also raten, in welchem Format das Tool gerne das Datum hätte. Wir machen das so: Hier gibt es ein angepasstes Script, und Du kannst das Format für das Datum selbst bestimmen.

                        const objId = 'yr.0.forecastHourly.0h.air_temperature';
                        const csvDateFormat = 'DD.MM.YYYY hh:mm:ss';
                        
                        const fileName = `${objId}.csv`;
                        const filePath = `/opt/iobroker/iobroker-data/${fileName}`;
                        
                        var fs = require('fs');
                        
                        schedule("0 0 * * 1", async () => {
                            const end = new Date().getTime();
                            const start = end - (60 * 60 * 24 * 7 * 1000); // letzte 7 Tage;
                        
                            getHistory('history.0', {
                                id: objId,
                                start: start,
                                end: end,
                                aggregate: 'none',
                                timeout: 2000
                            }, (err, result) => {
                                if (err) {
                                    console.error(`Unable to get history of ${objId}: ${err}`);
                                } else if (result) {
                                    let csvData = ['timestamp;value'];
                        
                                    for (var i = 0; i < result.length; i++) {
                                        csvData.push(`${formatDate(new Date(result[i].ts), csvDateFormat)};${result[i].val}`);
                                    }
                        
                                    fs.writeFileSync(filePath, csvData.join("\n"));
                        
                                    sendTo('email.0', {
                                        from: 'iobroker@mydomain.com',
                                        to: 'yourmail@mydomain.com',
                                        subject: `History-Daten von ${objId}`,
                                        text: `Hier sind die History-Daten von ${formatDate(new Date(start), csvDateFormat)} bis ${formatDate(new Date(end), csvDateFormat)}`,
                                        attachments: [
                                            {
                                                path: filePath
                                            }
                                        ]
                                    }, (err, result) => {
                                        if (err) {
                                            console.error(`Unable to send email: ${err}`);
                                        }
                                        fs.unlinkSync(filePath);
                                    });
                                }
                            });
                        });
                        
                        SörenS Offline
                        SörenS Offline
                        Sören
                        schrieb am zuletzt editiert von
                        #13

                        @haus-automatisierung Habe gestern die neue Mail erhalten. Das Datumsformat ist korrekt, allerdings wird immernoch ein Versatz von 2 Stunden ausgegeben. Wie kann ich hier die richtige Zeitzone einstellen? In der Ausgabe des History Adapters wird die korrekte Zeit für den Timestamp angezeigt.

                        Besten Dank
                        Sören

                        haus-automatisierungH 1 Antwort Letzte Antwort
                        0
                        • SörenS Sören

                          @haus-automatisierung Habe gestern die neue Mail erhalten. Das Datumsformat ist korrekt, allerdings wird immernoch ein Versatz von 2 Stunden ausgegeben. Wie kann ich hier die richtige Zeitzone einstellen? In der Ausgabe des History Adapters wird die korrekte Zeit für den Timestamp angezeigt.

                          Besten Dank
                          Sören

                          haus-automatisierungH Online
                          haus-automatisierungH Online
                          haus-automatisierung
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #14

                          @sören sagte in History Adapter CSV versenden:

                          Wie kann ich hier die richtige Zeitzone einstellen?

                          Ich habe das gerade noch einmal getestet. Bei mir stimmt das Datum / Uhrzeit. Hast Du auf dem System die richtige Zeitzone konfiguriert?

                          sudo timedatectl set-timezone Europe/Berlin
                          

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

                          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
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          492

                          Online

                          32.7k

                          Benutzer

                          82.4k

                          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