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:

    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 Offline
      haus-automatisierungH Offline
      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 Offline
            haus-automatisierungH Offline
            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 Offline
                haus-automatisierungH Offline
                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 Offline
                      haus-automatisierungH Offline
                      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

                      477

                      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