Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Datenupload nach openSenseMap

    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

    Datenupload nach openSenseMap

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      hfhausen last edited by Negalein

      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 Replies Last reply Reply Quote 0
      • F
        Fabian82 @hfhausen last edited by

        @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.

        Negalein 1 Reply Last reply Reply Quote 0
        • M
          m-behr @hfhausen last edited by

          @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 Reply Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator @Fabian82 last edited by

            @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 1 Reply Last reply Reply Quote 0
            • M
              m-behr @Negalein last edited by

              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 ?

              Negalein 1 Reply Last reply Reply Quote 0
              • Negalein
                Negalein Global Moderator @m-behr last edited by

                @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.

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

                  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.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  911
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  5
                  7
                  766
                  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