Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Boronsbruder

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 0
    • Topics 11
    • Posts 378
    • Best 55
    • Groups 2

    Boronsbruder

    @Boronsbruder

    69
    Reputation
    83
    Profile views
    378
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Boronsbruder Follow
    Pro Starter

    Best posts made by Boronsbruder

    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      Der Fehler liegt in der Berechnung des Meterologischen Sommers und tritt immer um 23:58 Uhr auf!

      Ich warte mal heute Nacht noch ab, aber der Fix sollte folgendes sein:

      @SBorg
      ein Tippfehler in der wetterstation.sub Zeile 1293 und 1294 -> +Y% in +%Y ändern!

      Falsch:

      local FLUXSTART=$(date +Y%-06-01)"T00:00:00Z"
      local FLUXENDE=$(date +Y%-08-31)"T23:59:59Z"
      

      Richtig:

      local FLUXSTART=$(date +%Y-06-01)"T00:00:00Z"
      local FLUXENDE=$(date +%Y-08-31)"T23:59:59Z"
      
      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • [Vorlage] Luftqualitätswerte abrufen

      Ich möchte euch mein Skript zum Abrufen der Luftqualitätsdaten über die Api des Umweltbundesamtes zur Verfügung stellen.
      Funktion:
      auf der SEITE des Umwelbundesamtes die StationsID raussuchen
      582e07dc-ceb1-4d47-8e50-73147c3d7d8b-grafik.png
      Es können auch mehrere Stationen durch Komma getrennt im Skript eingetragen werden.
      Dann werden die Daten (letzter Stündlicher Mittelwert) unter dem eingestellten Datenpunkt um **:10 gespeichert. (um 10, nach da ich festgestellt habe, dass manche Werte erst später kommen)

      c8ba31a0-117b-4283-8709-69b904c57a3a-grafik.png

      v2.1 - Datumsfix => Danke an @Sborg
      - Fehlerbehandlung für nicht abgerufene Daten eingebaut
      v2.2 - fix Clear Timeouts und Schedules beim Stoppen
      v2.3 - fix Fehlerbearbeitung
      v2.4 - Die API scheint keine Stunde 0 korrekt verarbeiten zu können, deswegen werden hier zwischen 23 Uhr und 1 Uhr keine Daten geliefert.
      Es wird nur noch "kein Datensatz" geloggt, anstatt einen Fehler auszulösen.
      v2.5 - Abfrage an API angepasst (1- 24 Uhr wird dort gefordert).
      v2.6 - Anpassung zu Sommerzeit-Problemen
      v2.7 - Schönheitskorrekturen im Code
      v2.8 - Werte werden mit ack=true gespeichert

      Hinweis:
      Um den Datumswechsel fehlen meist zwischen 0 und 2 Uhr immer mal wieder Daten, die von der API nicht geliefert werden. Später am Tag sind sie zwar vorhanden, aber das Skript ist nur für die letzten aktuellen Werte gedacht. Dies wird nur als normale Log-Meldung geführt.

      // Luftqualität v2.8
      // v1 - Erst-Version
      // v2 - Qualitätsindizes hinzugefügt
      // v2.1 - Datumsberechnung korrigiert => Danke an @SBorg
      //      - Fehlerbehandlung für nicht abgerufene Daten eingebaut
      // v2.2 - fix Clear Timeouts und Schedules
      // v2.3 - fix Fehlerbearbeitung
      // v2.4 - Die API scheint keine Stunde 0 korrekt verarbeiten zu können, deswegen werden hier zwischen 23 Uhr und 1 Uhr keine Daten geliefert.
      //        Es wird nur noch kein Datensatz gelogt anstatt einen Fehler auszulösen 
      // v2.5 - Abfrage an API angepasst (1- 24 Uhr wird dort gefordert).
      // v2.6 - Anpassung zu Sommerzeit-Problemen
      // v2.7 - Schönheitskorrekturen im Code
      // v2.8 - Werte werden mit ack=true gespeichert
      
      // User Einstellungen
      
      const stations = ["DEBW019", "DEBY052"]; // Stationen, können durch Komma getrennt werden z.B. ["DEBW019", "DEBY007"]
      const datenpunkt_pre ="0_userdata.0" // => wird in 0_userdata.0.Luftqualität gespeichert
      const debug = false;
      //  Abfrage findet um **:10 stündlich statt (um fehlende Daten eventl. nachzufüllen). Die Daten werden sowieso nur stündlich von der letzten Stunde zur Verfügung gestellt...
      
      // Datenverarbeitung 
      
      var dp_path = datenpunkt_pre + ".Luftqualität.";
      var timer;
      var components;
      var stations_list;
      var re_init = false;
      var re_init_timeout;
      
      const fetch = require('node-fetch');
      
      function createBaseFolder(ID, type, name)
      {
      /** geklaut bei grrfield
       * Erstellt Basisfolder und stellt den richtigen Typ ein
       * @param   {string}    ID          ID des Folders
       * @param   {any}       type        Typ des Folders
       * @param   {string}    [name]      (optional) Name des Folders
       */  
      
          createState(ID, function() {
              let obj=getObject(ID);
              obj.type=type;
              if(name != undefined) obj.common.name=name;
              obj.common.role='';
              setObject(ID, obj);
          });
      }
      
      const get_stations = async () => {
          const url_stations = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/stations/json?lang=de";
          var stations_json = fetch(url_stations)
              .then(response => response.json())
              .then(data => {
                  //if (debug) console.log(data);
                  return data})
              .catch ((err) => {
              console.error("failed fetch " + err);
              
          }
          );
          return stations_json;
      }
      
      const send_request = async (station_code) => {
              
              const d = new Date(); 
              if (debug) console.log ("TIMEZONE: " + d.getTimezoneOffset());
              if (d.getTimezoneOffset() == -120) d.setTime(d.getTime()-3600000);
              
              let month_to = (d.getMonth()+1) < 10 ? "0"+ (d.getMonth()+1) : (d.getMonth()+1);
              let day_to = (d.getDate()) < 10 ? "0"+ (d.getDate()) : (d.getDate());
              let date_to = d.getFullYear() +'-'+ month_to  +'-' + day_to;
              let hour_to = d.getHours();
              
              if (debug) console.log ("to => " + date_to + " " + hour_to);
              
              const now_round = new Date (date_to +' '+ hour_to + ":00");       
              
              let now = now_round.getTime()-3600000;
              
              d.setTime(now);
              
              let month_from = (d.getMonth()+1) < 10 ? "0"+ (d.getMonth()+1) : (d.getMonth()+1);
              let day_from = (d.getDate() < 10) ? "0"+ (d.getDate()) : d.getDate();
              let date_from = d.getFullYear() +'-'+ month_from +'-' + day_from;
              let hour_from = d.getHours();
              if (debug) console.log ("from => " + date_from + " " + hour_from);
      
              if (hour_to == 0){
                  hour_to =24;
                  date_to = date_from
                  if (debug) console.warn ("STUNDE 0 => to => " + date_to + " " + hour_to);
              }
              else if (hour_from == 0){
                  let fixed_now = d.getTime()-3600000;
                  d.setTime(fixed_now);
      
                  month_from = (d.getMonth()+1) < 10 ? "0"+ (d.getMonth()+1) : (d.getMonth()+1);
                  day_from = (d.getDate() < 10) ? "0"+ (d.getDate()) : d.getDate();
                  date_from = d.getFullYear() +'-'+ month_from +'-' + day_from;
                  hour_from = 24;
                  if (debug) console.warn ("STUNDE 0 => from => " + date_from + " " + hour_from);
              }
      
              
              const url_server = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/airquality/json?date_from=" + date_from + "&time_from=" + hour_from + "&date_to=" +date_to +"&time_to=" + hour_to + "&station=" + station_code + "&lang=de";
              
              if (debug) console.log("SERVER-URL: "+ url_server);
      
              var request = fetch(url_server)
              .then(response => response.json())
              .then(data => {
                  if (debug) console.log(data);
                  return data})
              .catch ((err) => {
              console.error("failed fetch " + err);
        
          }
          );
          return request;
      
      };
      
      const get_components = async () => {
              var list = fetch("https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/components/json?lang=de&index=id")
              .then(response => response.json())
              .then(data => {
                  if (debug) console.log(data);
                  return data})
              .catch ((err) => {
              console.error("failed fetch " + err);
              
          }
          );
          return list;
      };
      
      async function get_data (station_code) {
          if (re_init) return;
          
         var data = await send_request(station_code);
      
         if (Object.keys(data.data).length == 0){
             let time_req = new Date();
              if (time_req.getHours() == 0 || time_req.getHours() == 1) console.log ('Keine Daten Empfangen (evtl. "Stunde 0" - BUG)');
              else console.log ('Keine Daten Empfangen');
              return;
          }
         
          else if (typeof components === 'undefined'){
              console.warn ("Keine components geladen => Neue Initialisierung in 15 Sekunden");
              clearSchedule(timer);
              re_init = true;
              re_init_timeout = setTimeout(function(){
                  re_init = false;
                  init();
              },15000);
      
              return;
          }
          else if (typeof stations_list === 'undefined'){
              console.warn ("Keine Stationsliste geladen => Neue Initialisierung in 15 Sekunden");
              re_init = true;
              re_init_timeout = setTimeout(function(){
                  re_init = false;
                  init();
              },15000);
              return;
          }
      
          if (!existsObject(dp_path + station_code)){
              if (debug) console.warn("not exist => " +  stations_list.data[data.request.station][2]);
              createBaseFolder(dp_path + station_code, "folder", stations_list.data[data.request.station][2]);
          }
          
          var measure_set = data.data[data.request.station][data.request.datetime_from];
      
          for (let i = 3 ; i < measure_set.length; i++) {
          
              var id = dp_path + station_code + "." + components[measure_set[i][0]][1];
              if (debug) console.log ("ID: " + id);
              
              // Roh-Wert anlegen/speichern
              existsState(id, (err, isExists) => {
                  var idwork = dp_path + station_code + "." + components[measure_set[i][0]][1];
                  if (debug){
                      console.log ("IDwork: " + idwork);
                      console.log ("initval: " + measure_set[i][1]);
                      console.log ("Name: " + components[measure_set[i][0]][4] + "(" + components[measure_set[i][0]][1] + ")");
                      console.log ("unit: " + components[measure_set[i][0]][3]);
                  }
                  if (err) console.error (err);
              
                  if (isExists) {
                      if (debug) console.log ("Exists writing new value");
                      setState(idwork,  measure_set[i][1], true);
                  }
              
                  else{
                      if (debug) console.log ("Not Exists - creating State");
                      createState(idwork, measure_set[i][1], { name: components[measure_set[i][0]][4] + " (" + components[measure_set[i][0]][2] + ")", unit: components[measure_set[i][0]][3], type: "number", role: "value", read: true, write: true} , () => { log('Dp '+ idwork + ' erstellt!'); });
                  }
              });
      
              // Qualitätsindex anlegen/speichern gerundet
              let id_index = id + "_index";
              existsState(id_index, (err, isExists) => {
                  let id_index_work = id_index;
                  if (debug){
                      console.log ("ID_index_work: " + id_index_work);
                      console.log ("initval: " + measure_set[i][2]);
                      console.log ("Name: Qualitätsindex " + components[measure_set[i][0]][4]);
                  }
      
                  if (err) console.error (err);
      
                  if (isExists) {
                      if (debug) console.log ("Exists writing new value");
                      setState(id_index_work,  measure_set[i][2], true);
                  }
              
                  else{
                      if (debug) console.log ("Not Exists - creating State");
                      createState(id_index_work, measure_set[i][2], { name: "Qualitätsindex " + components[measure_set[i][0]][4], type: "number", role: "indicator", read: true, write: true} , () => { log('Dp '+ id_index_work + ' erstellt!'); });
                  }
              });
      
              // Roh-Wert Qualitätsindex anlegen/speichern gerundet
              let id_index_val = id + "_index_val";
              existsState(id_index_val, (err, isExists) => {
                  let id_index_val_work = id_index_val;
                  if (debug){
                      console.log ("IDwork: " + id_index_val_work);
                      console.log ("initval: " + measure_set[i][3]);
                      console.log ("Name: Qualitätsindex (roh)" + components[measure_set[i][0]][4]);
                  }
      
                  if (err) console.error (err);
      
                  if (isExists) {
                      if (debug) console.log ("Exists writing new value");
                      setState(id_index_val_work,  parseFloat(measure_set[i][3]), true);
                  }
              
                  else{
                      if (debug) console.log ("Not Exists - creating State");
                      createState(id_index_val_work, parseFloat(measure_set[i][3]), { name: "Qualitätsindex " + components[measure_set[i][0]][4] + " (roh)", type: "number", role: "indicator", read: true, write: true} , () => { log('Dp '+ id_index_val_work + ' erstellt!'); });
                  }
      
              });
          }
      
          // timestamp
          let id_ts = dp_path + station_code + ".ts";
          existsState(id_ts, (err, isExists) => {
              let id_ts_work = id_ts;
              if (debug){
                  console.log ("IDwork: " + id_ts);
                  console.log ("initval: " + measure_set[0]);
              }
      
              if (err) console.error (err);
      
                  let ts = new Date(measure_set[0]+"Z");
                  let string_ts = ts.getDate()+ "." + (ts.getMonth()+1) + "." + ts.getFullYear() + " " + ts.getHours() + ":" + (ts.getMinutes() < 10 ? "0" + ts.getMinutes() : ts.getMinutes());
      
              if (isExists) {
                      if (debug) console.log ("Exists writing new value");
                      setState(id_ts_work,  string_ts, true);
              }
              else {
                  if (debug) console.log ("Not Exists - creating State");
            
                  createState(id_ts, string_ts, { name: "Ende der Messung", type: "string", role: "value", read: true, write: true} , () => { log('Dp '+ id_ts + ' erstellt!'); });
              }
          });
      
      }
      onStop (() => {
          clearSchedule(timer);
          clearTimeout(re_init_timeout);
      });
      
      async function init(){
          stations_list = await get_stations();
          components = await get_components();
          stations.forEach (get_data); // init für sofortige Datenverfügbarkeit
      }
      
      init();
      
      // timer um */10
      timer = schedule({minute: [10]}, () => {
          stations.forEach (get_data);
      });
      
      posted in Skripten / Logik
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @SBorg
      FIX ist wahrscheinlich

      Zeile 1320 PREDP in PRE_DP ändern

      Richtig:

      --data 'from(bucket: "'${INFLUX_BUCKET}'") |> range(start: '${FLUXSTART}', stop: '${FLUXENDE}') |> filter(fn: (r) => r._measurement == "'${PRE_DP}'.Regen_Tag" and r._field == "value") |> aggregateWindow(every: 1d, fn: max) |> sum()')
      
       ./wetterstation.sh --metsommer
      
       Daten vom 01.06.2023 bis 31.08.2023 wurden ermittelt...
      
               Ø-Temperatur: 19.47 °C
               Regenmenge  : 0 l/m²
      
      
      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Vorlage] Luftqualitätswerte abrufen

      @siggi0904

      v2.8 online
      Änderung => Daten werden mit ack=true gespeichert

      posted in Skripten / Logik
      Boronsbruder
      Boronsbruder
    • RE: VIS editor Sprache und Darstellung

      @skvarel
      Ich weiß, ich weiß... hab ich auch zu oft in meinen Skripts...
      Aber Lösung ist ja schon in Arbeit 👍

      posted in ioBroker Allgemein
      Boronsbruder
      Boronsbruder
    • RE: Test Adapter TrashSchedule

      Es gibt Probleme mit Version 0.0.7 (siehe hier)!

      Die Version setzt die Übersetzungen im Vis Editor ausser Kraft und die Überschriften zeigen nur noch die Systemnamen!

      Ein Issue wurde bei Git-Hub schon von einem User erstellt

      Edit:

      Die Version 0.0.8 wurde veröffentlicht! Dort ist der Fehler behoben!

      posted in Tester
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @rene55
      Adapter kann ich nicht.
      Skripten ein bischen, deswegen hab ich für euch/uns Daten-Fetischisten mal mit nem Skript angefangen:

      // Luftqualität v1
      
      // User Einstellungen
      
      const stations = ["DEBW019"]; // Stationen, können durch Komma getrennt werden z.B. ["DEBW019", "DEBY007"]
      const datenpunkt_pre ="0_userdata.0" // => wird in 0_userdata.0.Luftqualität gespeichert
      const debug = false;
      //  Abfrage findet um **:05 und **:10 stündlich statt (um fehlende Daten eventl. nachzufüllen). Die Daten werden sowieso nur stündlich von der letzten Stunde zur Verfügung gestellt...
      
      // Datenverarbeitung 
      
      var dp_path = datenpunkt_pre + ".Luftqualität.";
      var timer;
      var components;
      var stations_list;
      
      const fetch = require('node-fetch');
      
      function createBaseFolder(ID, type, name)
      {
      /** geklaut bei grrfield
       * Erstellt Basisfolder und stellt den richtigen Typ ein
       * @param   {string}    ID          ID des Folders
       * @param   {any}       type        Typ des Folders
       * @param   {string}    [name]      (optional) Name des Folders
       */  
      
          createState(ID, function() {
              let obj=getObject(ID);
              obj.type=type;
              if(name != undefined) obj.common.name=name;
              obj.common.role='';
              setObject(ID, obj);
          });
      }
      
      const get_stations = async () => {
          const url_stations = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/stations/json?lang=de";
          var stations_json = fetch(url_stations)
              .then(response => response.json())
              .then(data => {
                  //if (debug) console.log(data);
                  return data})
              .catch ((err) => {
              console.error("failed fetch " + err);
              
          }
          );
          return stations_json;
      }
      
      const send_request = async (station_code) => {
              const d = new Date();
      
      let hour = d.getHours()-1;
      let date = d.getFullYear + "-" + d.getMonth + "-" + d.getDay;
      
              const url_server = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/airquality/json?date_from=" + date + "&time_from=" + hour + "&date_to=" +date +"&time_to=" + (hour +1) + " &station=" + station_code + "&lang=de";
              var request = fetch(url_server)
              .then(response => response.json())
              .then(data => {
                  if (debug) console.log(data);
                  return data})
              .catch ((err) => {
              console.error("failed fetch " + err);
        
          }
          );
          return request;
      
      };
      
      const get_components = async () => {
              var list = fetch("https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/components/json?lang=de&index=id")
              .then(response => response.json())
              .then(data => {
                  if (debug) console.log(data);
                  return data})
              .catch ((err) => {
              console.error("failed fetch " + err);
              
          }
          );
          return list;
      };
      
      async function get_data (station_code) {
            
          var data = await send_request(station_code);
      
          if (!existsObject(dp_path + station_code)){
              if (debug) console.warn("not exist => " +  stations_list.data[data.request.station][2]);
              createBaseFolder(dp_path + station_code, "folder", stations_list.data[data.request.station][2]);
          }
          var measure_set = data.data[data.request.station][data.request.datetime_from];
          
          for (let i = 3 ; i < measure_set.length; i++) {
          
              var id = dp_path + station_code + "." + components[measure_set[i][0]][1];
              if (debug) console.log ("ID: " + id);
              existsState(id, (err, isExists) => {
                  var idwork = dp_path + station_code + "." + components[measure_set[i][0]][1];
                  if (debug){
                      console.log ("IDwork: " + idwork);
                      console.log ("initval: " + measure_set[i][1]);
                      console.log ("Name: " + components[measure_set[i][0]][4] + "(" + components[measure_set[i][0]][1] + ")");
                      console.log ("unit: " + components[measure_set[i][0]][3]);
                  }
                  if (err) console.error (err);
              
                  if (isExists) {
                      if (debug) console.log ("Exists writing new value");
                      setState(idwork,  measure_set[i][1]);
                  }
              
                  else{
                      if (debug) console.log ("Not Exists - creating State");
                      createState(idwork, measure_set[i][1], { name: components[measure_set[i][0]][4] + " (" + components[measure_set[i][0]][2] + ")", unit: components[measure_set[i][0]][3], type: "number", role: "value", read: true, write: true} , () => { log('Dp '+ idwork + ' erstellt!'); });
                  }
              });
          }
      }
      onStop (() => {
          clearSchedule(timer);
      });
      async function init(){
          stations_list = await get_stations();
          components = await get_components();
          stations.forEach (get_data); // init für sofortige Datenverfügbarkeit
      
          // timer um */5 und */10
          timer = schedule({minute: [5,10]}, () => {
          stations.forEach (get_data);
      });
      }
      
      init();
      

      Funktion:
      auf der SEITE des Umwelbundesamtes die StationsID raussuchen
      582e07dc-ceb1-4d47-8e50-73147c3d7d8b-grafik.png
      Es können auch mehrere Stationen durch Komma getrennt im Skript eingetragen werden.
      Dann werden die Daten (letzter Stündlicher Mittelwert) unter dem eingestellten Datenpunkt um **:05 und **:10 gespeichert.

      f026f669-f3ef-431f-a141-8cc9ae77705a-grafik.png

      Ich plane noch die "Airquality indexes" hinzuzufügen.

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: Test Adapter Husqvarna Automower v0.3.x

      @opossum @Kaschi68
      Das liegt daran, dass es 2 verschiedene Arten gibt, wie die Daten übertragen werden:

      1. Der Websocket:
        Hier wird eine Verbindung aufgebaut und er der Husqvarna-Server sendet die Paket mit den Daten an den Adapter.
        Daten wie z.B. die "Totals" sind hier nicht enthalten.
      2. Die Api:
        Die Daten müssen vom Adapter gehohlt werden und werden nicht geliefert.
        Hier sind die Daten wie die Totals enthalten, AAABER die Anzahl der möglichen Abrufe ist beschränkt.
      Limits
      
      The following limitations currently apply to the Automower® Connect API:
      
          Max 1 request per second and appKey.
          Max 10 000 request per month and appKey.
      
      Any additional requests above these limits will be throttled.
      

      Im Adapter von @ice987 werden, meines Wissens nach, die Daten beim Start per API abgerufen und dann mit den Daten, die der Websocket liefert, aktualisiert.

      Eine Möglichkeit wäre, dass @ice987 eine regelmäßige API-Abfrage einbaut. Die muss aber zeitlich beschränkt sein, da sie sonst zu einer Drosselung führt.

      Am besten auf GitHub eine Anfrage auf Erweiterung stellen?

      posted in Tester
      Boronsbruder
      Boronsbruder
    • RE: Meldungen seit controller v3.3 zu falschem Datentyp

      @apollon77 said in Meldungen seit controller v3.3 zu falschem Datentyp:

      @boronsbruder Warte noch paar Stunden, das Repo wird gerade verschoben. Dann bitte dort anlegen

      So hier der Issue

      https://github.com/iobroker-community-adapters/iobroker.kodi/issues/1

      ist aber nicht zu kodi.0.seek der ist ja schon gefixed.
      sondern zu:

      State value to set for "kodi.0.info.audio_channels" has to be type "number" but received type "string"
      State value to set for "kodi.0.info.audio_bitrate" has to be type "string" but received type "number"
      
      State value to set for "kodi.1.info.genre" has to be type "string" but received type "boolean"
      

      letzterer erscheint nur beim Adapter-Neustart

      Boronsbruder created this issue in iobroker-community-adapters/iobroker.kodi

      closed State Value -> Wrong Type #1

      posted in ioBroker Allgemein
      Boronsbruder
      Boronsbruder
    • RE: [Vorlage] Luftqualitätswerte abrufen

      Version 2.3 eingestellt

      // v2.2 - fix Clear Timeouts und Schedules beim Stoppen
      // v2.3 - fix Fehlerbearbeitung

      !!! Sollte das Skript vor den Fixes nicht mehr gestoppt werden können (tritt normalerweise nur bei einem Fehler beim Abrufen der Daten auf), dann bitte die Javascript-Instanz neustarten: Dann werden alle nicht gelöschten Timeouts gestoppt

      posted in Skripten / Logik
      Boronsbruder
      Boronsbruder

    Latest posts made by Boronsbruder

    • RE: Neuer Robonect HX Adapter

      @iobrokermike
      kannst du mal die Einstellungen deiner Instanz posten?
      Ich habe zum Beispiel
      ad984793-cd8a-4d1e-966c-1fe75ff2808e-grafik.png
      aktiviert.
      Evtl. verhindert das Timeouts?

      Achja, führt bei mir aber immer mal wieder zu

      	warn	No connection to lawn mower (Not able to ping it). Check network connection.
      

      Einträgen, was aber wahrscheinlich an meinem Setup mit einer WLAN-Brücke liegt

      posted in ioBroker Allgemein
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @quinti
      Welche InfluxDB Version benutzt du?
      benötigt logging per InfluxDB V2.x + Aktivierung in der wetterstation.conf

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @shakira1972
      probier doch mal die angehängte
      wetterstation.sub

      Es waren 2 Tippfehler drin

      @SBorg Kauf dir mal ne neue Brille 🤣 P.S.: Hab dir ein Issue auf Github gemacht

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @shakira1972
      Da haben wir den Fehler:
      Die SimpleAPI-Instanz des Iobroker ist nicht unter 192.168.1.3 auf Port 8087 erreichbar

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @shakira1972
      Was sagt denn ? (Bei gestopptem Dienst)

      ./wetterstation.sh --debug
      
      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @stefan81-0
      Das Problem ist, dass ich nichts finde auf welchem Port gesendet wird...
      Warte mal auf Antwort von @Mugel80 wenn er die selbe Station hat.
      Vielleicht gibt es nur die Möglichkeit über die Variante DNS-Umleitung

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @stefan81-0
      Die IP-des Rechners auf dem das Wetterstation-Skript läuft

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @stefan81-0

      Für die Station gibt es doch eine intere Setup-Seite (zumindest laut Betriebsanleitung):

      339e3c31-09f4-4082-b344-68db86d6513c-grafik.png

      Was hast du hier eingetragen?

      Da muss man aber mal schaun, wie die Daten gesendet werden. Wahrscheinlich Wunderground-Protokoll.

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @shakira1972
      Lösche doch mal den Ordner 16.
      Dann das "wetterstation.js"-Skript benutzen.
      Achtung!! Die User-Einstellungen im Skript anpassen!

      //Wetterstation Datenpunkte anlegen V3.5.0
      let DP = "0_userdata.0.Wetterstation.";
      let WH31 = 0;    // Anzahl der WH31/WH25 Sensoren     (max. 1 Stück)
      let WS90 = 0;    // Anzahl der WS90 Sensoren          (max. 1 Stück)
      let DP10 = 0;    // Anzahl der DP10/WN35 Sensoren     (max. 8 Stück)
      let DP35 = 0;    // Anzahl der DP35/WN34 Sensoren     (max. 8 Stück)
      let DP40 = 0;    // Anzahl der DP40/WH32 Sensoren     (max. 1 Stück)
      let DP50 = 0;    // Anzahl der DP50/WH31 Sensoren     (max. 8 Stück)
      let DP60 = 0;    // Anzahl der DP60/WH57 Sensoren     (max. 1 Stück)
      let DP70 = 0;    // Anzahl der DP70/WH55 Sensoren     (max. 4 Stück)
      let DP100 = 0;   // Anzahl der DP100/WH51[L] Sensoren (max. 16 Stück)
      let DP200 = 0;   // Anzahl der DP200/WH43 Sensoren    (max. 4 Stück)
      let DP250 = 0;   // Anzahl der DP250/WH45 Sensoren    (max. 1 Stück)
      let DP300 = 0;   // Anzahl der DP300/WS68 Sensoren    (max. 1 Stück)
      let BR7009999 = 0; // Anzahl der Thermo-Hygro-7Ch-Sensoren (max. 4 Stück)
      let FT0300 = 0;  // Anzahl der FT0300 Sensoren        (max. 1 Stück)
      //Ende der User-Einstellungen -------------------
      

      Das Skript einmal starten - es sollte dann die fehlenden Datenpunkte anlegen.

      Die Fehlermeldungen sagen nur aus, dass der Datenpunkt für Zahlen angelegt ist, aber das Skript aber eine Zeichenkette reinschreiben will.

      Hast du nach dem Ersetzen den Dienst neugestartet?

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @shakira1972
      von Github die 3.5.0 herunterladen und die wetterstation.sh und die wetterstation.sub ersetzen

      posted in Praktische Anwendungen (Showcase)
      Boronsbruder
      Boronsbruder
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo