Navigation

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

    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 38
    • Posts 115
    • Best 2
    • Groups 2

    Endurance

    @Endurance

    Starter

    2
    Reputation
    52
    Profile views
    115
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Endurance Follow
    Pro Starter

    Best posts made by Endurance

    • RE: Material Design Widgets: Alerts Widget

      Das wäre das Script, hab ich nicht unter Global laufen:
      6003b8b0-1a34-4e2d-8e37-f2fdaddbaf0b-image.png

      materialDesignWidgets.sendTo('0_userdata.0.Alerts.Alerts', message, color, bordercolor, icon, iconcolor, fontcolor);
      

      Das folgende läuft unter Global: (das hab ich aber auch nicht angepasst, kannst du eigentlich direkt so importieren)

      var materialDesignWidgets = {};
      materialDesignWidgets.sendTo = function (id, text, backgroundColor = '', borderColor = '', icon = '', iconColor = '', fontColor = '') {
          let json = getState(id).val;
       
          if (json) {
              try {
      
                  json = JSON.parse(json);
      
              } catch (e) {
                  json = [];
                  console.warn('Wert ist kein JSON string! Wert wird ersetzt!');
              }
          } else {
              json = [];
          }
      
          json.push(
              {
                  text: text,
                  backgroundColor: backgroundColor,
                  borderColor: borderColor,
                  icon: icon,
                  iconColor: iconColor,
                  fontColor: fontColor
              }
          )
          setState(id, JSON.stringify(json), true);
      }
      
      posted in Visualisierung
      Endurance
      Endurance
    • RE: Material Design Widgets: Alerts Widget

      @Tirador
      Jetzt läuft es, eventuell ist in der Doku (https://github.com/Scrounger/ioBroker.vis-materialdesign#alerts) was falsch:
      materialDesignWidgets.sendTo('datapoint_id', 'message', 'color');

      ich habs nun so, und dann funktioniert es (bei mir zumindest)
      materialDesignWidgets.sendTo('datapoint_id', message, color); #ohne die ' vor und nach message und color

      Keine Ahnung ob das nur bei mir ein Problem war, aber eventuell kann @Scrounger ja die Doku anpassen.

      posted in Visualisierung
      Endurance
      Endurance

    Latest posts made by Endurance

    • RE: Sonos mp3 abspielen

      ok, mein Fehler, Web Server war in den Settings des Sonos Adapters nicht aktiv.

      Bin nun einen Schritt weiter.
      gebe nun als Wert dem tts Datenpunkt folgendes mit:

      21;http://192.168.1.35:8082/files/sonos/ding-dong-81717.mp3
      

      Es wird nichts abgespielt...
      Log:

      sonos.0
      2025-08-24 13:22:30.963	info	try to control id sonos.0.root.192_168_1_40.tts with {"val":"22;http://192.168.1.35:8082/files/sonos/ding-dong-81717.mp3","ack":false,"ts":1756034550962,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1756034490264}
      

      nun ist mir aufgefallen, wenn ich über die Box bereits Musik abspiele, bsp Radio via Sonos iOS App, erhalte ich in der Sonos APP folgenden Fehler und die Wiedergabe der Musik stopt für ca. 45 Sekunden:

      7f815a16-e024-4ffd-aecf-926502622527-20250824_112233000_iOS.jpg

      posted in ioBroker Allgemein
      Endurance
      Endurance
    • Sonos mp3 abspielen

      Hallo zusammen,

      Habe ein mp3 File, das ich via Sonos Lautsprecher abspielen will. Am besten via TTS, richtig?
      64c521a1-2cb1-493f-b02a-6eefe1371a12-image.png

      Egal wie ich den Pfad angebe, ich erhalte immer folgenden Fehler im Log

      sonos.0
      2025-08-24 12:04:38.417	warn	Web server must be enabled to play local TTS files
      
      sonos.0
      2025-08-24 12:04:38.417	info	try to control id sonos.0.root.192_168_1_40.tts with {"val":"/opt/iobroker/iobroker-data/files/sonos/ding-dong-81717.mp3","ack":false,"ts":1756029878416,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1756029878416}
      

      Wie muss ich den Pfad genau angeben?
      4d95ddb1-3856-4a4f-a559-ef81f3071088-image.png

      /opt/iobroker/sonos/ding-dong-81717.mp3 ?

      posted in ioBroker Allgemein
      Endurance
      Endurance
    • RE: Ecowitt GW2000 MQTT Problem

      @endurance
      Habs herausgefunden, daten stecken alle in einem Objekt....
      Habs mit dem folgenden Skript auseinandergenommen:

      // === Einstellungen ===
      const MQTT_STATE = 'mqtt.0.ecowitt.3C8A1F2A63C7'; // <- DEINE State-ID hier eintragen
      const BASE = '0_userdata.0.ecowitt.';             // Zielordner
      
      // === Hilfsfunktionen ===
      function toNumber(x) { const n = Number(x); return isFinite(n) ? n : null; }
      function f2c(f){ const n = toNumber(f); return n==null ? null : (n-32)*5/9; }
      function inHg2hPa(h){ const n = toNumber(h); return n==null ? null : n*33.8638866667; }
      function mph2ms(m){ const n = toNumber(m); return n==null ? null : m*0.44704; }
      function inch2mm(i){ const n = toNumber(i); return n==null ? null : i*25.4; }
      
      // Einfacher Querystring‑Parser (ohne URLSearchParams)
      function parseQuery(q) {
        const out = {};
        if (typeof q !== 'string' || !q) return out;
        // WU-Style: '+' = Leerzeichen
        q = q.replace(/\+/g, ' ');
        // Teile erst an & und dekodiere dann key/value
        q.split('&').forEach(pair => {
          const idx = pair.indexOf('=');
          let k, v;
          if (idx >= 0) {
            k = decodeURIComponent(pair.slice(0, idx));
            v = decodeURIComponent(pair.slice(idx + 1));
          } else {
            k = decodeURIComponent(pair);
            v = '';
          }
          if (k) out[k] = v;
        });
        return out;
      }
      
      // State-Schreiber (legt State an, falls nicht vorhanden)
      async function put(id, val, unit='', type='number') {
        const full = BASE + id;
        if (!await existsStateAsync(full)) {
          await setObjectAsync(full, {type: 'state', common: {name: id, read: true, write: false, type, role: 'value', unit}, native: {}});
        }
        setState(full, val, true);
      }
      
      // === Subscriber: jedes Update parsen ===
      on({ id: MQTT_STATE, change: 'any' }, async obj => {
        try {
          if (!obj || !obj.state || typeof obj.state.val !== 'string') return;
      
          const params = parseQuery(obj.state.val);
      
          // Meta
          await put('meta.stationtype', params.stationtype || '', '', 'string');
          await put('meta.model',       params.model || '', '', 'string');
          await put('meta.dateutc',     params.dateutc || '', '', 'string');
          await put('meta.interval',    toNumber(params.interval));
      
          // Innen
          await put('inside.temp_C',        f2c(params.tempinf), '°C');
          await put('inside.humidity_pct',  toNumber(params.humidityin), '%');
          await put('pressure.rel_hPa',     inHg2hPa(params.baromrelin), 'hPa');
          await put('pressure.abs_hPa',     inHg2hPa(params.baromabsin), 'hPa');
      
          // Außen
          await put('outside.temp_C',       f2c(params.tempf), '°C');
          await put('outside.humidity_pct', toNumber(params.humidity), '%');
          await put('outside.vpd_kPa',      toNumber(params.vpd), 'kPa');
      
          // Wind
          await put('wind.dir_deg',         toNumber(params.winddir), '°');
          await put('wind.dir_avg10m_deg',  toNumber(params.winddir_avg10m), '°');
          await put('wind.speed_ms',        mph2ms(params.windspeedmph), 'm/s');
          await put('wind.gust_ms',         mph2ms(params.windgustmph), 'm/s');
          await put('wind.maxdailygust_ms', mph2ms(params.maxdailygust), 'm/s');
      
          // Solar/UV
          await put('solar.radiation_Wm2',  toNumber(params.solarradiation), 'W/m²');
          await put('uv.index',             toNumber(params.uv));
      
          // Regen (Zoll -> mm)
          await put('rain.rate_mmph',       inch2mm(params.rrain_piezo), 'mm/h');
          await put('rain.event_mm',        inch2mm(params.erain_piezo), 'mm');
          await put('rain.hour_mm',         inch2mm(params.hrain_piezo), 'mm');
          await put('rain.day_mm',          inch2mm(params.drain_piezo), 'mm');
          await put('rain.week_mm',         inch2mm(params.wrain_piezo), 'mm');
          await put('rain.month_mm',        inch2mm(params.mrain_piezo), 'mm');
          await put('rain.year_mm',         inch2mm(params.yrain_piezo), 'mm');
      
          // Batteries / Misc (Wittboy)
          await put('wittboy.cap_volt',     toNumber(params.ws90cap_volt), 'V');
          await put('wittboy.version',      toNumber(params.ws90_ver));
          await put('wittboy.batt_V',       toNumber(params.wh90batt), 'V');
      
          // Rohdaten ablegen (optional, hilfreich zum Debuggen)
          await put('raw.query', obj.state.val, '', 'string');
        } catch (e) {
          log(`Ecowitt parse error: ${e}`, 'error');
        }
      });
      
      
      posted in Einsteigerfragen
      Endurance
      Endurance
    • Ecowitt GW2000 MQTT Problem

      Hallo zusammen,

      Habe ein GW2000 mit WS90, und versuche Daten an meinen MQTT Broker zu senden (ikobroker Adapter)
      Es kommt aber nur die ID an, keine Daten
      b5b5465a-a125-4bc2-9a5a-d2ddba4eab6a-image.png

      Hier das Webinterface des GW2000:

      972955f7-f192-4d48-8118-e1be66e881f2-image.png

      Hat jemand eine Idee, woran das liegen kann?

      posted in Einsteigerfragen
      Endurance
      Endurance
    • RE: Shelly Temperaturfühler falsche Daten

      @homoran
      ah ok, dann werd ich mir Wohl eine andere Lösung suchen müssen, bsp via Script.
      Danke trotzdem

      posted in ioBroker Allgemein
      Endurance
      Endurance
    • RE: Shelly Temperaturfühler falsche Daten

      @homoran
      ja, an das dachte ich schon, aber irgendwie finde ich das setting nicht, bin ich blind?
      d8a601d2-5530-43e2-92fb-1aa22aeca6a5-image.png

      posted in ioBroker Allgemein
      Endurance
      Endurance
    • Shelly Temperaturfühler falsche Daten

      Hallo,

      Ich zeichne zb die Temperatur mittels Temperatursensor an einem Shelly AddOn auf.
      Leider kommt es hin und wieder vor, dass der Sensor efalsche Daten liefert, zwar nur einen Wert, aber in der Visualisierung sieht das dann so aus:
      f109e4fb-8c19-4337-8247-5245c9003074-image.png

      Bringe ich den Influx Adapter dazu, solche werte zu Ignorieren, oder gibt es da in Grafana ein Setting dazu?

      Hier das Query:

      from(bucket: "iobroker")
        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
        |> filter(fn: (r) => r["_measurement"] == "shelly.0.shellyplus1pm#4855199d8488#1.Ext.temperature100C")
        |> filter(fn: (r) => r["_field"] == "value")
        |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
        |> yield(name: "mean")
      
      posted in ioBroker Allgemein
      Endurance
      Endurance
    • RE: Ecowitt GW2001 in den iobroker bringen

      @easytj said in Ecowitt GW2001 in den iobroker bringen:

      t GW2001 Wetterstation in den iobroker einbinden kann. Ich finde in der Suche nur einen Thread "Shell

      Hast du sie mittlerweile eingebunden?

      posted in Einsteigerfragen
      Endurance
      Endurance
    • RE: Tesla Daten

      @haus-automatisierung
      Kann ich über diesen Weg, sprich von iobroker -> MQTT -> Teslamate -> Tesla, zb die Heizung einschalten?
      Hatte dafür bisher immer den Tesla Adapter genutzt, dieser geht ja dahingehend schon länger nicht mehr.

      posted in ioBroker Allgemein
      Endurance
      Endurance
    • RE: Grafana Werte zur gleichen Zeit

      @mickemup

      8b777640-5b13-4806-95e6-e9ded1ba91a8-image.png

      26c84938-2841-43cb-9ae2-59db1bd97e8c-image.png

      Bis auf Sekunden sind sie gleich, aber ms nicht. Sieht man nur, wenn man die Daten via Query inypector aufruft:

      b555fbbf-0d1d-4075-a374-23806b7a38f6-image.png

      f13adc99-f137-408a-93c6-f2de38104554-image.png

      mit den neuen Settings sieht es schon ganz gut aus, nur was passiert beim ersten Balken?

      9ab388d8-9689-4604-a271-590cfec61ab5-image.png

      allerdings sind die Balken in meinem ersten Screenshot noch breiter...

      posted in Grafana
      Endurance
      Endurance
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo