Navigation

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

    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

    M
    • Profile
    • Following 0
    • Followers 0
    • Topics 75
    • Posts 897
    • Best 53
    • Groups 2

    martinschm

    @martinschm

    60
    Reputation
    199
    Profile views
    897
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    martinschm Follow
    Pro Starter

    Best posts made by martinschm

    • RE: Überwachungskameralösung gesucht

      Ich nutze die Xiaomi Xiofang S1 für 18€ mit dafang hack um es ohne China Cloud zu nutzen.

      Dazu kannst du noch motioneye nutzen um sie in iobroker einzubinden.

      posted in Hardware
      M
      martinschm
    • RE: PH-Messung

      Hi,

      habe gerade durch Zufall gesehen, das es den PH-803W bei Amazon gerade für 71€ bei einem Händler gibt. Da der Preis bei Aliexpress auch bei gut 110€ liegt ist das wohl ein ziemliches Schnäppchen.

      Versand läuft über Prime, daher wohl eher gefahrlos, falls was nicht klappt.
      Hier der Link als Affiliate-Link und hier einmal ohne Affiliate-Code

      posted in ioBroker Allgemein
      M
      martinschm
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      Hi,

      gibt es eigentlich einen Thread wo mal Anregungen für die Visualisierung mit/in iQontrol gepostet wurden/werden?

      Bin immer wieder baff, was @dslraser alles umgesetzt hat, es gibt wahrscheinlich noch einige Power User mehr die was interessantes zu zeigen haben.

      Wäre doch cool wenn das mal an einer Stelle zu sehen wäre.

      posted in Tester
      M
      martinschm
    • RE: Usertreffen: Karlsruhe am 16.01.25

      @booosesthasnipper said in Usertreffen: 76689 Karlsdorf- Neuthardt am 16.01.25:

      Hi zusammen,
      hätte auch Interesse, leider klappt der Januar Termin bei mir nicht. Komme aus Waghäusel, beruflich bin jedoch in Karlsruhe verankert.

      Was waren den so die Themen das letzte Mal? Habs leider zu spät gelesen.

      Viele Grüße

      Hi,
      das letzte mal war unser initales Treffen. Da ging es um gegenseitiges Kennenlernen, außerdem haben zwei Teilnehmer ihr Smart Home mit allen Komponenten und Adaptern vorgestellt. Dabei gab es zahlreiche Diskussionen und Rückfragen.

      Du und @vowill seid herzlich willkommen dazu zu kommen.

      posted in Usergroups
      M
      martinschm
    • Zeigt her eure iQontrol Visualisierung

      Hi zusammen,

      bin selber großer iQontrol Fan und stetig dabei meine Visualisierung zu erweitern und anzupassen.

      Etliche Ideen kamen auch beim Anschauen von Screenshots anderer Nutzer in irgendwelchen Diskussionen. Daher kam mir die Idee in einem Thread mal Anregungen für die Umsetzung der Visualisierung zu sammeln. Wäre cool wenn viele mitmachen (@dslraser , @s-bormann, @Roberto-Gresia, @astrakid, @siggi85 , @muuulle , @BBTown .)

      posted in Visualisierung
      M
      martinschm
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      @dslraser probier es mal damit

      3b3053da-636e-460d-91c6-dc24f52493a1-image.png

      Da kannst du eigentlich alles ersetzen lassen. 0 und 1 wären dann die Keys und aktiv und inaktiv die Werte.

      posted in Tester
      M
      martinschm
    • RE: Usertreffen: Karlsruhe am 16.01.25

      Hi,

      Vorschlag für den nächsten Post, lasst es uns Usertreffen Karlsruhe nennen.

      Karlsdorf kennen bestimmt weniger Leute und können es nicht richtig verorten wenn sie nur den Titel lesen.

      posted in Usergroups
      M
      martinschm
    • RE: iQontrol Vis Support Thread

      @memphispdm said in iQontrol Vis Support Thread:

      Hello zusammen,

      finde?

      EDITH: Okay ich bin doof. Hab´s gefunden. Frage die sich nun noch ergibt: Jetzt wird "0 Aus" angezeigt in er Kachel. Wie bekomme ich die 0 da raus?

      Wenn du auf die Custom Einstellungen für die Eigenschaften gehst und dann bei Key Value eigene Werte anlegst solltest du bei Key 0 eintragen und bei Value "Aus". Dann sollte da nur noch Aus stehen.

      Hast du vielleicht Mal mit Strg F5 aktualisiert?

      posted in Visualisierung
      M
      martinschm
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      Hi,

      ich versuche mich grade dabei Flot Charts bei den Temp Sensoren zu hinterlegen. Daten werden bei mir in influx geloggt. Leider hab ich immer nur eine flache Linie:

      538cbed8-75ba-4ee8-83f9-69054877abcb-image.png

      Im Flot Editor sieht es auch so aus, wenn ich nicht einen längeren Zeitraum auswähle. Hab jetzt bei den Kacheln auch mal 2880 bzw 1440 min hinterlegt, das Ergebnis ist leider das gleiche.

      Das sind meine Einstellungen
      f86fe50b-0f96-41b4-a838-899297a7bdfb-image.png

      Und wie man sieht, sind die Werte durchaus unterschiedlich über Zeit:
      58d7ddc9-9c70-4450-ac44-6179615de9f3-image.png

      Wenn ich bei Min Temp einen Wert eintrage verschwindet der Balken übrigens komplett. Auch wenn ich die Seite mit den Kacheln öffne, werden die Balken erst angezeigt und verschwinden dann nach einigen Sekunden.

      Wie bekomme ich den so schöne Charts hin, wie es im iQontrol Wiki zu sehen ist?

      Lösung gefunden
      Ich hab mir die URL des Flot Chart Widgets mal geholt und rumexperimentiert und URL Parameter ergänzt. Erfolg hatte ich als ich &l%5B0%5D%5Binstance%5D=influxdb.0 angehängt habe.

      Kann es sein, das iQontrol bei mehr als einer History Instance nicht weiß welche es nehmen soll @s-bormann ?

      ciao
      Martin

      posted in Tester
      M
      martinschm
    • RE: [Vorlage] Multi Ereignislisten Skript

      Hi @arteck, was ist der Grund dafür ?

      Hab zwei javascript Instanzen, eine auf der ich Skripte teste und eine wo die produktiven laufen. Dachte wenn ich teste und der Adapter mal abstürzt läuft der Rest trotzdem weiter.

      Daher schien es mir klug, die Datenpunkte unabhängig vom Adapter abzulegen

      posted in Skripten / Logik
      M
      martinschm

    Latest posts made by martinschm

    • RE: KI-Erkennung in Home Assistant mit Kameras

      @haselchen schau dir mal frigate an. Ist ein Videosystem in das du Kameras einbindest und das Objekte wie Mensch oder Katze erkennen kann. Es gibt einen Adapter für iobroker der dann Telegram Nachrichten triggern kann.

      posted in Plauderecke
      M
      martinschm
    • RE: [Vorlage] Alarmanlage mit erweiterten Funktionen

      Hi,

      Es gibt auch einen Alarm Adapter für iobroker. Reicht der dir nicht aus?

      Vielleicht könntet ihr ja eure Anstrengungen kombinieren um ein noch besseres "Produkt" zu erzeugen.

      posted in Skripten / Logik
      M
      martinschm
    • RE: PV Überwachung hoymiles

      @beowolf said in PV Überwachung hoymiles:

      @martinschm sagte in PV Überwachung hoymiles:

      nutze aktuell dieses Skript

      wr.jpg

      Wo kommen diese 78,2 W her? Wo wird das berechnet?

      Hi, ja wird berechnet aus den Werten der anderen Module.

      posted in ioBroker Allgemein
      M
      martinschm
    • RE: PV Überwachung hoymiles

      @beowolf said in PV Überwachung hoymiles:

      @martinschm
      Noch eine Frage.

      Warum baust du die Konstante "minProduction = 5" ein, die dann später nicht verwendet wird?

      Ist da noch etwas geplant?

      Hi, nein das ist ein Überbleibsel aus der ersten Version.

      posted in ioBroker Allgemein
      M
      martinschm
    • RE: PV Überwachung hoymiles

      @ralf-2 said in PV Überwachung hoymiles:

      @martinschm
      Wäre zwar schön aber bestimmt nicht zwingend nötig.
      Ich würde einfach die Erträge der einzelnen Module Module für einen Tag aufsummieren und dann bei Abweichung von x Prozent eine Meldung geben.
      Bedenke dabei, das vielleicht auch etwas ein Modul mal verschatten kann (Handwerkeraute, oder so etwas). Ich würde das einfach mal eine Woche ohne Alarm laufen lassen und dann den Grenzwert in Prozent daraus ableiten.
      Das bekommen wir schon als Teamarbeit hier im Forum hin. Daten solltest du mal im Vorfeld sammeln.

      Ich hab mal mit perplexity.ai ein paar Runden gedreht und nutze aktuell dieses Skript

      const wrThreshold = 0.7;
      const moduleThreshold = 0.7;
      const minProduction = 5;
      const telegramInstance = 'telegram.0';
      const warnDelay = 15 * 60 * 1000; // 15 Minuten in ms
      
      // Gruppen-Konfiguration wie gehabt
      const groups = [
        {
          name: "Zaun",
          wrs: [
            { id: "xx", name: "WR1", moduleCount: 6 },
            { id: "xx", name: "WR2", moduleCount: 6 },
            { id: "xx", name: "WR3", moduleCount: 6 }
          ]
        },
        {
          name: "Gartenhütte",
          wrs: [
            { id: "xx", name: "WR4", moduleCount: 4 },
            { id: "xx", name: "WR5", moduleCount: 4 }
          ]
        }
      ];
      
      // Statusspeicher
      if (!globalThis.wrStatus) globalThis.wrStatus = {};
      
      function checkWRs() {
          let now = Date.now();
      
          groups.forEach(group => {
              let wrPowers = [];
              let activeWRs = [];
      
              // 1. Prüfe, welche WR produzieren
              group.wrs.forEach((wr, i) => {
                  const producingState = getState(`opendtu.0.${wr.id}.producing`).val;
                  const isProducing = producingState === true || producingState === 'true';
                  if (isProducing) {
                      let wrPower = getState(`opendtu.0.${wr.id}.power_dc`).val;
                      wrPowers[i] = wrPower;
                      activeWRs.push({ index: i, ...wr, wrPower });
                  } else {
                      wrPowers[i] = 0;
                  }
              });
      
              // 2. WR-Vergleich (nur aktive WRs und erst nach 15 Minuten)
              if (activeWRs.length > 1) {
                  let avgWR = activeWRs.reduce((sum, wr) => sum + wr.wrPower, 0) / activeWRs.length;
                  activeWRs.forEach(wr => {
                      let status = globalThis.wrStatus[wr.name] || { warnSince: null, warned: false };
                      if (wr.wrPower < avgWR * wrThreshold) {
                          if (!status.warnSince) status.warnSince = now;
                          if (!status.warned && (now - status.warnSince) >= warnDelay) {
                              sendTo(telegramInstance, 'send', {
                                  text: `⚠️ *WR-Warnung (${group.name})*: ${wr.name} liefert seit 15 Minuten nur ${wr.wrPower} W (Durchschnitt: ${avgWR.toFixed(1)} W)`
                              });
                              status.warned = true;
                          }
                      } else {
                          if (status.warned) {
                              sendTo(telegramInstance, 'send', {
                                  text: `✅ *Entwarnung (${group.name})*: ${wr.name} liefert wieder ausreichend Leistung.`
                              });
                          }
                          status.warnSince = null;
                          status.warned = false;
                      }
                      globalThis.wrStatus[wr.name] = status;
                  });
              }
      
              // 3. Modulvergleich je WR (nur bei aktiven WRs, erst nach 15 Minuten)
              activeWRs.forEach(wr => {
                  let modulePowers = [];
                  for (let m = 1; m <= wr.moduleCount; m++) {
                      let modPower = getState(`opendtu.0.${wr.id}.dc.input_${m}.power`).val;
                      modulePowers[m - 1] = modPower;
                  }
                  let avgModule = modulePowers.reduce((a, b) => a + b, 0) / wr.moduleCount;
                  modulePowers.forEach((mp, idx) => {
                      let key = `${wr.name}_modul${idx+1}`;
                      let status = globalThis.wrStatus[key] || { warnSince: null, warned: false };
                      if (mp < avgModule * moduleThreshold) {
                          if (!status.warnSince) status.warnSince = now;
                          if (!status.warned && (now - status.warnSince) >= warnDelay) {
                              sendTo(telegramInstance, 'send', {
                                  text: `⚠️ *Modul-Warnung (${wr.name})*: Modul ${idx + 1} liefert seit 15 Minuten nur ${mp} W (Durchschnitt: ${avgModule.toFixed(1)} W)`
                              });
                              status.warned = true;
                          }
                      } else {
                          if (status.warned) {
                              sendTo(telegramInstance, 'send', {
                                  text: `✅ *Entwarnung (${wr.name})*: Modul ${idx + 1} liefert wieder ausreichend Leistung.`
                              });
                          }
                          status.warnSince = null;
                          status.warned = false;
                      }
                      globalThis.wrStatus[key] = status;
                  });
              });
      
              // 4. Überwachung nicht-produzierender WRs (wie gehabt, ggf. auch mit 15min-Verzögerung anpassen)
              group.wrs.forEach((wr, i) => {
                  const producingState = getState(`opendtu.0.${wr.id}.producing`).val;
                  const isProducing = producingState === true || producingState === 'true';
                  let status = globalThis.wrStatus[wr.name + "_prod"] || { warnSince: null, warned: false };
                  if (!isProducing) {
                      let anyOtherProducing = group.wrs.some((otherWr, otherIdx) => {
                          if (otherIdx !== i) {
                              const otherProducingState = getState(`opendtu.0.${otherWr.id}.producing`).val;
                              return otherProducingState === true || otherProducingState === 'true';
                          }
                          return false;
                      });
                      if (anyOtherProducing) {
                          if (!status.warnSince) status.warnSince = now;
                          if (!status.warned && (now - status.warnSince) >= warnDelay) {
                              sendTo(telegramInstance, 'send', {
                                  text: `🔴 *Ausfall (${group.name})*: ${wr.name} produziert seit 15 Minuten nichts, obwohl andere laufen!`
                              });
                              status.warned = true;
                          }
                      } else {
                          status.warnSince = null;
                          status.warned = false;
                      }
                  } else {
                      if (status.warned) {
                          sendTo(telegramInstance, 'send', {
                              text: `✅ *Entwarnung (${group.name})*: ${wr.name} produziert wieder!`
                          });
                      }
                      status.warnSince = null;
                      status.warned = false;
                  }
                  globalThis.wrStatus[wr.name + "_prod"] = status;
              });
          });
      }
      
      schedule('*/2 * * * *', checkWRs);
      
      

      Das ist die zweite Version, die erste hat zu viele Meldungen in den Morgen- und Abendstunden gebracht wenn einzelne Module kurz verschattet sind.

      Das Skript vergleicht die Module eines WRs miteinander und warnt wenn ein Module nach 15 min immer noch hinter den anderen herhinkt. Außerdem vergleicht es die WRs innerhalb von zwei Gruppen (wo die Module jeweils gleich ausgerichtet sind) miteinander.

      posted in ioBroker Allgemein
      M
      martinschm
    • RE: PV Überwachung hoymiles

      @beowolf said in PV Überwachung hoymiles:

      Der Opendtu Adapter zeigt doch bei jedem WR die Datenpunkte "producing" und "last_update" aus. Den Datenpunkt "available" gibt es auch noch.

      Da ist doch alles vorhanden was man braucht.

      Leider nicht ganz. producing bezieht sich halt nur auf einen WR, aber wenn mal ein Modul ausfällt bekommst du es so nicht mit.

      posted in ioBroker Allgemein
      M
      martinschm
    • RE: PV Überwachung hoymiles

      @ralf-2 said in PV Überwachung hoymiles:

      @martinschm sagte in PV Überwachung hoymiles:

      Über eine openDTU ist die Anlage in iobroker eingebunden.

      Ich weiß nicht, was OpenDPU an weiteren Datenpunkten liefert, ggf. kann man hier auch noch irgendwelche Fehlerstatus auslesen und mit berücksichtigen. Aber dein Ansatz ist erst einmal gut und wohl richtig.

      Fehlerstatus wird aktuell leider nicht mitgeliefert. Hab ich schon ein Feature requests zu aufgemacht.

      posted in ioBroker Allgemein
      M
      martinschm
    • PV Überwachung hoymiles

      Hi,

      Ich habe Ende letzten Jahres eine Zaun PV mit 26 Modulen und 5 hoymiles Wechselrichtern selber gebaut.

      Über eine openDTU ist die Anlage in iobroker eingebunden.

      Jetzt ist mir letztens eher zufällig aufgefallen, das ein PV Modul keine Leistung bringt. Der Gesamtbetrag war knapp ein Drittel niedriger als der der benachbarten Module. Schien also schon eine Weile ein Problem vorzuliegen.

      Heute ist mir dann aufgefallen das ein WR hing und der Ertrag fast null war.

      Ich würde das ganze gerne automatisch überwachen. Da der Ertrag stark vom Wetter abhängig ist machen dynamische Grenzwerte wahrscheinlich am meisten Sinn.

      Wie würdet ihr das überwachen?
      Hab überlegt den Durchschnitt über die anderen Module am gleichen WR zu bilden und dann ein Alarm wenn der Wert mehr als 10% oder so drunter liegt.

      Und auf Ebene der WRs schauen ob einer mehr als 10% hinter den anderen herhinkt.

      Gibt es andere Ideen?

      posted in ioBroker Allgemein
      M
      martinschm
    • RE: Tester für Zigbee Adapter 2.0.x gesucht

      @arteck said in Tester für Zigbee Adapter 2.0.x gesucht:

      @martinschm sagte in Tester für Zigbee Adapter 2.0.x gesucht:

      @asgothian said in Tester für Zigbee Adapter 2.0.x gesucht:

      @martinschm 'die' ist gut. 6 von 70 geräten. Gib denen Zeit.

      A.

      Wenn ich auf den Pairing Button klicke bekomme ich noch diese MEldung

      Error: Failed to open the network: AssertionError [ERR_ASSERTION]: Cannot permit join for more than 254 seconds.
          at Controller.permitJoin (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/controller.js:245:39)
          at ZigbeeController.permitJoin (/opt/iobroker/node_modules/iobroker.zigbee/lib/zigbeecontroller.js:659:33)
          at Commands.letsPairing (/opt/iobroker/node_modules/iobroker.zigbee/lib/commands.js:217:31)
          at Commands.onMessage (/opt/iobroker/node_modules/iobroker.zigbee/lib/commands.js:63:34)
          at Zigbee.<anonymous> (/opt/iobroker/node_modules/iobroker.zigbee/lib/commands.js:20:48)
          at Zigbee.emit (node:events:530:35)
          at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7262:20)
          at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/build/esm/lib/states/statesInRedisClient.js:291:37)
          at process.processImmediate (node:internal/timers:483:21). undefined
      

      im ernst... stell de timer auf 240.. dann läuft es

      Ja im Ernst. Verstehe den Kommentar ehrlicherweise auch gar nicht.

      Mir, wird an einer Stelle, an der dies bisher nicht auftrat eine für technische Laien kryptische Fehlermeldung gebraucht. Die hab ich hier gemeldet und nach einer Lösung gefragt.

      Nicht mehr nicht weniger. Es war auch keine Kritik dabei oder eine Forderung nach einem sofortigen Fix.

      Da stell ich mir im Ernst die Frage ob das der richtige Ton im Forum ist.

      posted in Tester
      M
      martinschm
    • RE: Tester für Zigbee Adapter 2.0.x gesucht

      @asgothian said in Tester für Zigbee Adapter 2.0.x gesucht:

      @martinschm 'die' ist gut. 6 von 70 geräten. Gib denen Zeit.

      A.

      Wenn ich auf den Pairing Button klicke bekomme ich noch diese MEldung

      Error: Failed to open the network: AssertionError [ERR_ASSERTION]: Cannot permit join for more than 254 seconds.
          at Controller.permitJoin (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/controller.js:245:39)
          at ZigbeeController.permitJoin (/opt/iobroker/node_modules/iobroker.zigbee/lib/zigbeecontroller.js:659:33)
          at Commands.letsPairing (/opt/iobroker/node_modules/iobroker.zigbee/lib/commands.js:217:31)
          at Commands.onMessage (/opt/iobroker/node_modules/iobroker.zigbee/lib/commands.js:63:34)
          at Zigbee.<anonymous> (/opt/iobroker/node_modules/iobroker.zigbee/lib/commands.js:20:48)
          at Zigbee.emit (node:events:530:35)
          at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7262:20)
          at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/build/esm/lib/states/statesInRedisClient.js:291:37)
          at process.processImmediate (node:internal/timers:483:21). undefined
      
      posted in Tester
      M
      martinschm
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo