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. Skripten / Logik
  4. Datenupload nach openSenseMap

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Datenupload nach openSenseMap

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 5 Kommentatoren 902 Aufrufe 4 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.
  • H Offline
    H Offline
    hfhausen
    schrieb am zuletzt editiert von Negalein
    #1

    Hallo,

    hier mal mein (erstes) Script, um Daten bei openSenseMap.org hochzuladen.

    Wer Außentemperatur, Luftfeuchte, Niederschlag und andere Werte im iobroker als Datenpunkte hat, kann diese mit dem Script bei openSenseMap hochladen.

    Man benötigt einen Account bei openSenseMap und muss darin eine senseBox registrieren. Dabei definiert man welche Werte erfasst werden sollen (Temp,Luftfeuchte,…).

    Im Dashboard unter Script kann man die SENSEBOX_ID und die IDs der Sensoren auslesen.

    Im Script muss folgendes ergänzt werden:

    SENSEBOX_ID

    ARRAY_ID

    Array_Objects

    Das Scriptbeispiel ist hat hier vier Sensoren.

    //  Upload data to opensensemap
    //  https://opensensemap.org/
    var http = require('http'); 
    var server = "ingress.opensensemap.org";
    // senseBox ID
    // hier aendern!!
    var SENSEBOX_ID  = "SENSEBOX_ID";
    // Array of Sensor_IDs
    // hier aendern!!
    var ARRAY_ID = [ "Sensor_ID1" ,
                     "Sensor_ID2" ,
                     "Sensor_ID3" ,
                     "Sensor_ID4" ];                  
     // Array of Dataobjects
     // hier aendern!!
    var Array_Objects  = [   "javascript.0.Messdaten.xxxxx1" ,
                             "javascript.0.Messdaten.xxxxx2" ,
                             "javascript.0.Messdaten.xxxxx3" ,
                             "javascript.0.Messdaten.xxxxx4" ];       
    
    var optionsTemplate = {
        host: server,
        port: 80,
        path: null,
        method: 'POST',
        headers: {
            'Content-Type': 'application/json;charset=UTF-8',
            'Connection': 'close'
        }
    };
    function httpPost(options)
    {
        log('INFO: OpenSenseMap Start' , 'info');
    
        var dataTemplate = "";
        for (i = 0; i < ARRAY_ID.length; i++)
        {
          optionsTemplate.path = "/boxes/" + SENSEBOX_ID + "/" + ARRAY_ID[i] ;
          dataTemplate =  '{ "value": ' +  getState(Array_Objects[i]).val  + ' }';
    
          log('path: ' + optionsTemplate.path  , 'info');
          log('data: ' + dataTemplate , 'info');
    
          httpSaveData(options, dataTemplate );
        }
    }
    function httpSaveData(options, data )
    {
        options.headers['Content-Length'] = data.length;
    
        var req = http.request(options, function(res) {
            log('http Status: ' + res.statusCode);
            log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 201 ? 'warn' : 'info'));
    
            var bodyChunks  = [];
            res.on('data', function(chunk) {
                bodyChunks.push(chunk);
            }).on('end', function() {
                var body = Buffer.concat(bodyChunks);
                log('body: ' + body);
            });
        });
    
        req.on('error', function(e) {
            log('ERROR: ' + e.message, 'warn');
        });
        req.write( data )  ;
        req.end();
    }
    // Alle 5 Minuten 
    schedule("*/5 * * * *", function(){ httpPost(optionsTemplate)});
    //httpPost(optionsTemplate );
    

    Gruß
    Harry[/i][/i]

    F M 2 Antworten Letzte Antwort
    0
    • H hfhausen

      Hallo,

      hier mal mein (erstes) Script, um Daten bei openSenseMap.org hochzuladen.

      Wer Außentemperatur, Luftfeuchte, Niederschlag und andere Werte im iobroker als Datenpunkte hat, kann diese mit dem Script bei openSenseMap hochladen.

      Man benötigt einen Account bei openSenseMap und muss darin eine senseBox registrieren. Dabei definiert man welche Werte erfasst werden sollen (Temp,Luftfeuchte,…).

      Im Dashboard unter Script kann man die SENSEBOX_ID und die IDs der Sensoren auslesen.

      Im Script muss folgendes ergänzt werden:

      SENSEBOX_ID

      ARRAY_ID

      Array_Objects

      Das Scriptbeispiel ist hat hier vier Sensoren.

      //  Upload data to opensensemap
      //  https://opensensemap.org/
      var http = require('http'); 
      var server = "ingress.opensensemap.org";
      // senseBox ID
      // hier aendern!!
      var SENSEBOX_ID  = "SENSEBOX_ID";
      // Array of Sensor_IDs
      // hier aendern!!
      var ARRAY_ID = [ "Sensor_ID1" ,
                       "Sensor_ID2" ,
                       "Sensor_ID3" ,
                       "Sensor_ID4" ];                  
       // Array of Dataobjects
       // hier aendern!!
      var Array_Objects  = [   "javascript.0.Messdaten.xxxxx1" ,
                               "javascript.0.Messdaten.xxxxx2" ,
                               "javascript.0.Messdaten.xxxxx3" ,
                               "javascript.0.Messdaten.xxxxx4" ];       
      
      var optionsTemplate = {
          host: server,
          port: 80,
          path: null,
          method: 'POST',
          headers: {
              'Content-Type': 'application/json;charset=UTF-8',
              'Connection': 'close'
          }
      };
      function httpPost(options)
      {
          log('INFO: OpenSenseMap Start' , 'info');
      
          var dataTemplate = "";
          for (i = 0; i < ARRAY_ID.length; i++)
          {
            optionsTemplate.path = "/boxes/" + SENSEBOX_ID + "/" + ARRAY_ID[i] ;
            dataTemplate =  '{ "value": ' +  getState(Array_Objects[i]).val  + ' }';
      
            log('path: ' + optionsTemplate.path  , 'info');
            log('data: ' + dataTemplate , 'info');
      
            httpSaveData(options, dataTemplate );
          }
      }
      function httpSaveData(options, data )
      {
          options.headers['Content-Length'] = data.length;
      
          var req = http.request(options, function(res) {
              log('http Status: ' + res.statusCode);
              log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 201 ? 'warn' : 'info'));
      
              var bodyChunks  = [];
              res.on('data', function(chunk) {
                  bodyChunks.push(chunk);
              }).on('end', function() {
                  var body = Buffer.concat(bodyChunks);
                  log('body: ' + body);
              });
          });
      
          req.on('error', function(e) {
              log('ERROR: ' + e.message, 'warn');
          });
          req.write( data )  ;
          req.end();
      }
      // Alle 5 Minuten 
      schedule("*/5 * * * *", function(){ httpPost(optionsTemplate)});
      //httpPost(optionsTemplate );
      

      Gruß
      Harry[/i][/i]

      F Offline
      F Offline
      Fabian82
      schrieb am zuletzt editiert von
      #2

      @hfhausen:
      Hallo,

      danke für deinen Beitrag. Das scheint, als wäre deine Beschreibung genau das was ich gesucht habe. Ich habe meine Wetterstation endlich stabil in Betrieb genommen, die Sensoren bei openSenseMap registriert und möchte die Daten nun dort auch bereitstellen.

      Ich bin bzgl. Linux und Skripten leider nicht ganz so fit und benötige an der Stelle etwas Starthilfe. Ich habe in der Vergangenheit (bei der Skriptprogrammierung) des öfteren meinen Raspi überhitzt durch Endlosschelifen mit Max-Geschwindigkeit, d.h. ich bin ein gebranntes Kind was Programmierung auf dem Live-System angeht. ;)
      Folgende Schwierigkeiten habe ich mit deinem Beitrag:

      • Schreibe ich alle deine Zeilen in ein Skript zusammen (natürlich müsste ich noch die ein oder andere Zeile auf meine Sensoren anpassen)?
      • Wird das alles in ein Javascript gepackt und ganz normal gestartet?
      • Hat das Skript eine kontinuierliche Ausführung und falls ja, in welcher Zyklenzeit wird der Upload ausgeführt?

      Vorab, schonmal besten Dank für deine Unterstützung.

      NegaleinN 1 Antwort Letzte Antwort
      0
      • H hfhausen

        Hallo,

        hier mal mein (erstes) Script, um Daten bei openSenseMap.org hochzuladen.

        Wer Außentemperatur, Luftfeuchte, Niederschlag und andere Werte im iobroker als Datenpunkte hat, kann diese mit dem Script bei openSenseMap hochladen.

        Man benötigt einen Account bei openSenseMap und muss darin eine senseBox registrieren. Dabei definiert man welche Werte erfasst werden sollen (Temp,Luftfeuchte,…).

        Im Dashboard unter Script kann man die SENSEBOX_ID und die IDs der Sensoren auslesen.

        Im Script muss folgendes ergänzt werden:

        SENSEBOX_ID

        ARRAY_ID

        Array_Objects

        Das Scriptbeispiel ist hat hier vier Sensoren.

        //  Upload data to opensensemap
        //  https://opensensemap.org/
        var http = require('http'); 
        var server = "ingress.opensensemap.org";
        // senseBox ID
        // hier aendern!!
        var SENSEBOX_ID  = "SENSEBOX_ID";
        // Array of Sensor_IDs
        // hier aendern!!
        var ARRAY_ID = [ "Sensor_ID1" ,
                         "Sensor_ID2" ,
                         "Sensor_ID3" ,
                         "Sensor_ID4" ];                  
         // Array of Dataobjects
         // hier aendern!!
        var Array_Objects  = [   "javascript.0.Messdaten.xxxxx1" ,
                                 "javascript.0.Messdaten.xxxxx2" ,
                                 "javascript.0.Messdaten.xxxxx3" ,
                                 "javascript.0.Messdaten.xxxxx4" ];       
        
        var optionsTemplate = {
            host: server,
            port: 80,
            path: null,
            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=UTF-8',
                'Connection': 'close'
            }
        };
        function httpPost(options)
        {
            log('INFO: OpenSenseMap Start' , 'info');
        
            var dataTemplate = "";
            for (i = 0; i < ARRAY_ID.length; i++)
            {
              optionsTemplate.path = "/boxes/" + SENSEBOX_ID + "/" + ARRAY_ID[i] ;
              dataTemplate =  '{ "value": ' +  getState(Array_Objects[i]).val  + ' }';
        
              log('path: ' + optionsTemplate.path  , 'info');
              log('data: ' + dataTemplate , 'info');
        
              httpSaveData(options, dataTemplate );
            }
        }
        function httpSaveData(options, data )
        {
            options.headers['Content-Length'] = data.length;
        
            var req = http.request(options, function(res) {
                log('http Status: ' + res.statusCode);
                log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 201 ? 'warn' : 'info'));
        
                var bodyChunks  = [];
                res.on('data', function(chunk) {
                    bodyChunks.push(chunk);
                }).on('end', function() {
                    var body = Buffer.concat(bodyChunks);
                    log('body: ' + body);
                });
            });
        
            req.on('error', function(e) {
                log('ERROR: ' + e.message, 'warn');
            });
            req.write( data )  ;
            req.end();
        }
        // Alle 5 Minuten 
        schedule("*/5 * * * *", function(){ httpPost(optionsTemplate)});
        //httpPost(optionsTemplate );
        

        Gruß
        Harry[/i][/i]

        M Offline
        M Offline
        m-behr
        schrieb am zuletzt editiert von
        #3

        @hfhausen

        Das Script lief sehr gut. Habe es immer genutz...
        Die Verbindung muss allerdings nun angepasst werden. -> SSl?

        Kann sich das noch jemand vornehmen... oder gibt es schon eine andere Lösung?

        vielen dank....

        1 Antwort Letzte Antwort
        0
        • F Fabian82

          @hfhausen:
          Hallo,

          danke für deinen Beitrag. Das scheint, als wäre deine Beschreibung genau das was ich gesucht habe. Ich habe meine Wetterstation endlich stabil in Betrieb genommen, die Sensoren bei openSenseMap registriert und möchte die Daten nun dort auch bereitstellen.

          Ich bin bzgl. Linux und Skripten leider nicht ganz so fit und benötige an der Stelle etwas Starthilfe. Ich habe in der Vergangenheit (bei der Skriptprogrammierung) des öfteren meinen Raspi überhitzt durch Endlosschelifen mit Max-Geschwindigkeit, d.h. ich bin ein gebranntes Kind was Programmierung auf dem Live-System angeht. ;)
          Folgende Schwierigkeiten habe ich mit deinem Beitrag:

          • Schreibe ich alle deine Zeilen in ein Skript zusammen (natürlich müsste ich noch die ein oder andere Zeile auf meine Sensoren anpassen)?
          • Wird das alles in ein Javascript gepackt und ganz normal gestartet?
          • Hat das Skript eine kontinuierliche Ausführung und falls ja, in welcher Zyklenzeit wird der Upload ausgeführt?

          Vorab, schonmal besten Dank für deine Unterstützung.

          NegaleinN Offline
          NegaleinN Offline
          Negalein
          Global Moderator
          schrieb am zuletzt editiert von
          #4

          @fabian82 sagte in Datenupload nach openSenseMap:

          Schreibe ich alle deine Zeilen in ein Skript zusammen (natürlich müsste ich noch die ein oder andere Zeile auf meine Sensoren anpassen)?

          Ja, kopieren, einfügen, anpassen.

          Wird das alles in ein Javascript gepackt und ganz normal gestartet?

          Ja

          Hat das Skript eine kontinuierliche Ausführung und falls ja, in welcher Zyklenzeit wird der Upload ausgeführt?

          Ja, ist ganz unten im Script zu finden.

          // Alle 5 Minuten

          schedule("*/5 * * * *", function(){ httpPost(optionsTemplate)});

          //httpPost(optionsTemplate );

          ° Node.js Update ---> iob nodejs-update
          ° Fixer ---> iob fix

          M 1 Antwort Letzte Antwort
          0
          • NegaleinN Negalein

            @fabian82 sagte in Datenupload nach openSenseMap:

            Schreibe ich alle deine Zeilen in ein Skript zusammen (natürlich müsste ich noch die ein oder andere Zeile auf meine Sensoren anpassen)?

            Ja, kopieren, einfügen, anpassen.

            Wird das alles in ein Javascript gepackt und ganz normal gestartet?

            Ja

            Hat das Skript eine kontinuierliche Ausführung und falls ja, in welcher Zyklenzeit wird der Upload ausgeführt?

            Ja, ist ganz unten im Script zu finden.

            // Alle 5 Minuten

            schedule("*/5 * * * *", function(){ httpPost(optionsTemplate)});

            //httpPost(optionsTemplate );

            M Offline
            M Offline
            m-behr
            schrieb am zuletzt editiert von
            #5

            ja, soweit so gut...

            Folgender Fehler tritt auf
            09:45:00.225 warn javascript.0 (1102) script.js.common.Wetter.openSenseMap_Kopieren: HEADERS: {"content-length":"94","content-type":"application/json; charset=utf-8","date":"Mon, 17 May 2021 07:45:00 GMT","deprecation-warning":"If your client supports TLS, please use https://ingress.opensensemap.org","connection":"close"}

            Kann sich das jemand ansehen ?

            NegaleinN 1 Antwort Letzte Antwort
            0
            • M m-behr

              ja, soweit so gut...

              Folgender Fehler tritt auf
              09:45:00.225 warn javascript.0 (1102) script.js.common.Wetter.openSenseMap_Kopieren: HEADERS: {"content-length":"94","content-type":"application/json; charset=utf-8","date":"Mon, 17 May 2021 07:45:00 GMT","deprecation-warning":"If your client supports TLS, please use https://ingress.opensensemap.org","connection":"close"}

              Kann sich das jemand ansehen ?

              NegaleinN Offline
              NegaleinN Offline
              Negalein
              Global Moderator
              schrieb am zuletzt editiert von
              #6

              @m-behr sagte in Datenupload nach openSenseMap:

              Kann sich das jemand ansehen ?

              vielleicht kann @SBorg helfen?
              In seinem Wetterstationen-Script läuft auch OSM. Das funktioniert perfekt.

              ° Node.js Update ---> iob nodejs-update
              ° Fixer ---> iob fix

              1 Antwort Letzte Antwort
              0
              • SBorgS Offline
                SBorgS Offline
                SBorg
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #7

                Das sind gleich zwei Probleme.

                @m-behr sagte in Datenupload nach openSenseMap:

                ..."deprecation-warning":"If your client supports TLS...

                Im Skript wird noch "request" benutzt, dass ist deprecated und wird von JavaSkript/node (zukünftig) nicht mehr unterstützt. Man müsste es also bspw. auf axios und HTTPS umstellen.

                LG SBorg ( SBorg auf GitHub)
                Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                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

                558

                Online

                32.6k

                Benutzer

                82.0k

                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