Navigation

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

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    K
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 12
    • Best 0
    • Groups 1

    kubax

    @kubax

    Starter

    0
    Reputation
    6
    Profile views
    12
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    kubax Follow
    Starter

    Latest posts made by kubax

    • RE: Test Adapter wireless-mbus v0.10.x

      @thomas-braun

      Mag sein. ABER, wenn du mit einem Formular zum Finanzamt gehst, weil du fragen hast die du nicht selber beantworten kannst, willst du dann das der Beamte dich dafür rügt das du das Formular mit einem Schwarzen Kuli ausgefüllt hast, was man aber nicht macht, oder möchtest du Hilfe von ihm beim ausfüllen des Formulars?

      Ich meinte ja nicht das der Hinweiß komplett falsch ist, meine Kritik bestand lediglich daran das es der einzige Kommentar war. Jemanden freundlich auf einen Fehler hinzuweisen und ihm dennoch zu helfen, ist wohl besser, als ihn nur darauf hinzuweisen das er etwas komplett anderes falsch gemacht hat.

      Genau das ist leider der Grund dafür, das viele sich mit Linux schwer tuen. Man kommt mit irgendwas nicht weiter, fragt nach Hilfe, und dann wird einem mit Arroganz begegnet, oder einem wird ein Fehler vorgehalten der überhaupt nichts mit dem Problem zu tun hat.

      Wenn ich mit dem Auto in die Werkstadt fahre möchte ich auch nicht hören "dann fahren sie halt nicht zu schnell" wenn der Motor beim schnell fahren laut wird 😉

      Egal, back to topic...

      posted in Tester
      K
      kubax
    • RE: Test Adapter wireless-mbus v0.10.x

      @felidsche
      Sicher das du alle Baudraten durchprobiert hast?

      Der Nanocul sollte mit 38400 bps laufen. Ansonsten probier es vorher mal mit

      screen /dev/ttyUSB0 38400
      

      Wenn er verbindet müsstest du dort mit "V<enter>" die Versionsnummer angezeigt bekommen.

      Direkt mit root zu arbeiten mag nicht optimal sein, der hinweiß hilft aber nicht wirklich bei der Problemlösung 😉

      posted in Tester
      K
      kubax
    • RE: Test Adapter wireless-mbus v0.10.x

      Hallo,

      wir sollen nächste Woche auch einen "Smarten" Wasserzähler bekommen.

      Noch weiß ich weder welches Modell noch ob ich überhaupt den Key bekomme. Ich hab mich aber gerade ein wenig eingelesen, und plane sobald ich (hoffentlich morgen) etwas mehr weiß, die Komponenten schon mal zu organisieren.

      Ich hab meinen Zigbee Adapter per LAN angeschlossen, da meine IObroker instanz zwischen zwei Docker Hosts hin und her wechselt. Im Zigbee Adapter konnte ich dann am COM Port einfach z.B. tcp://127.0.0.01:1337 eintragen.

      Nun zur eigentlichen frage. Würde das mit diesem Adapter ähnlich funktionieren? Dann würde ich mir einen nanoCUL und einen USR-TCP232-T2 besorgen.

      Anderenfalls müsste ich wohl einen Raspi mit IObroker als zweiten Host aufsetzen, der nur den Wasserzähler ausließt...

      Ich hoffe ja das es über TCP auch geht 🙂

      posted in Tester
      K
      kubax
    • RE: Hardware such hilfe (Taster "adapter" wie Shelly I3)

      @pete0815

      Theoretisch gesehen würde das ja auch in Tasmota funktionieren.

      Aber genau diese Funktion klappt nicht vernünftig beim I3 weil es scheinbar keine Unterscheidung der 3 Taster gibt. Das wird dann über eine Regel gelöst, die diese Funktion aushebelt.

      Aber ESPeasy hatte ich nicht auf den plan, hatte nur nach ESPhome geschaut... Ich schau es mir mal an. Dann aber nur noch interessehalber. Hab es ja jetzt gelöst 🙂

      posted in Hardware
      K
      kubax
    • RE: Hardware such hilfe (Taster "adapter" wie Shelly I3)

      Kurzes zwischenfazit.

      Ich hatte meinen Anfang mit dem Script den ich weit vor diesem Post verfolgt hatte glaub ich zu früh verworfen.

      Eure Motivation zu dem Thema hat glaub ich ein bisher ganz gut funktionierendes Script hervorgebracht. Im Moment fehlt mir eigentlich nur noch der Hold Modus. Das ist so aber glaub ich auch kein Problem mehr...

      Hier mal der POC bis auf die Hold action.... Doof wenn man beim Programmieren auf einmal die Anouncer aus Unreal Tournament hört xD

      // Objecttree for Shelly I3
      const shelly_i3 = 'mqtt.0.stat.tasmota_243EBA';
      // timeframe for multipress actions
      const multipress_time = 300;
      // Debug flag to increase verbosity
      var DEBUG = false;
      
      var timer1 = null;
      var timer2 = null;
      var timer3 = null;
      var timer1_count = 0;
      var timer2_count = 0;
      var timer3_count = 0;
      
      
      
      on({ id: shelly_i3 + '.SWITCH1', change: "any" }, async function (obj) {
          if (!existsState('0_userdata.0.' + obj.id + '_timestamp')) {
            createState('0_userdata.0.' + obj.id + '_timestamp', 0,{
                    type: 'number',
                }); 
          }
          if (!existsState('0_userdata.0.' + obj.id + '_multipress_count')) {
            createState('0_userdata.0.' + obj.id + '_multipress_count', 0,{
                    type: 'number',
                }); 
          }
          if (!existsState('0_userdata.0.' + obj.id + '_hold')) {
            createState('0_userdata.0.' + obj.id + '_hold', false,{
                    type: 'boolean',
                }); 
          }
          if (getState(obj.id).val == "1") {
          setState('0_userdata.0.' + obj.id + '_timestamp', getState(obj.id).ts);
          setState('0_userdata.0.' + obj.id + '_multipress_count',getState('0_userdata.0.' + obj.id + '_multipress_count').val + 1);
          var diff = getState(obj.id).ts - getState('0_userdata.0.' + obj.id + '_timestamp').val;
          clearInterval(timer1);
          timer1_count = 0;
          if (DEBUG == true) console.log('Switch1: Starte Timer...');
          timer1 = setInterval(function() {
                if (timer1_count != 0) {
                    if (getState(obj.id).val == "1") {
                        setState('0_userdata.0.' + obj.id + '_hold',true);
                        switch (getState('0_userdata.0.' + obj.id + '_multipress_count').val) {
                          case 1:
                            if (DEBUG == true) console.log('Switch1: HOLD!!!!');
                            break;
                          case 2:
                            if (DEBUG == true) console.log('Switch1: Double press HOLD!!!!');
                            break;
                          case 3:
                            if (DEBUG == true) console.log('Switch1: Triple press HOLD!!!!');
                            break;
                          case 4:
                            if (DEBUG == true) console.log('Switch1: MULTI press HOLD!!!!');
                            break;
                          case 5:
                            if (DEBUG == true) console.log('Switch1: MO MO MO MO MONSTER PRESS HOLD!!!!');
                            break;
                          default:
                            if (DEBUG == true) console.log('Switch1: pressed ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val + ' times and held...');
                            break;
                        }
                        setState('0_userdata.0.' + obj.id + '_multipress_count',0);
                        clearInterval(timer1);
                        return;
                    }
                  if (DEBUG == true) console.log('Switch1: ' + obj.id + ': ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val)
                  setState('0_userdata.0.' + obj.id + '_multipress_count',0);
                  switch (getState('0_userdata.0.' + obj.id + '_multipress_count').val) {
                    case 1:
                      if (DEBUG == true) console.log('Switch1: Single press');
                      break;
                    case 2:
                      if (DEBUG == true) console.log('Switch1: Double press');
                      break;
                    case 3:
                      if (DEBUG == true) console.log('Switch1: Triple press');
                      break;
                    case 4:
                      if (DEBUG == true) console.log('Switch1: MULTI press');
                      break;
                    case 5:
                      if (DEBUG == true) console.log('Switch1: MO MO MO MO MONSTER PRESS!!!');
                      break;
                    default:
                      if (DEBUG == true) console.log('Switch1: pressed ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val + ' times...');
                      break;
                  }
                  if (DEBUG == true) console.log('Switch1: Stoppe Timer...');
                  clearInterval(timer1);
                }
                timer1_count++;
              }, multipress_time / 2);
          if (DEBUG == true) console.log('Switch1: Time between presses on ' + obj.id + ': ' + diff);
      
          } else {
              if (getState('0_userdata.0.' + obj.id + '_hold').val == true) {
                setState('0_userdata.0.' + obj.id + '_hold',false);
                if (DEBUG == true) console.log('Switch1: Hold released...');
              }
          }
      });
      
      on({ id: shelly_i3 + '.SWITCH2', change: "any" }, async function (obj) {
          if (!existsState('0_userdata.0.' + obj.id + '_timestamp')) {
            createState('0_userdata.0.' + obj.id + '_timestamp', 0,{
                    type: 'number',
                }); 
          }
          if (!existsState('0_userdata.0.' + obj.id + '_multipress_count')) {
            createState('0_userdata.0.' + obj.id + '_multipress_count', 0,{
                    type: 'number',
                }); 
          }
          if (!existsState('0_userdata.0.' + obj.id + '_hold')) {
            createState('0_userdata.0.' + obj.id + '_hold', false,{
                    type: 'boolean',
                }); 
          }
          if (getState(obj.id).val == "1") {
          setState('0_userdata.0.' + obj.id + '_timestamp', getState(obj.id).ts);
          setState('0_userdata.0.' + obj.id + '_multipress_count',getState('0_userdata.0.' + obj.id + '_multipress_count').val + 1);
          var diff = getState(obj.id).ts - getState('0_userdata.0.' + obj.id + '_timestamp').val;
          clearInterval(timer2);
          timer2_count = 0;
          if (DEBUG == true) console.log('Switch2: Starte Timer...');
          timer2 = setInterval(function() {
                if (timer2_count != 0) {
                    if (getState(obj.id).val == "1") {
                        setState('0_userdata.0.' + obj.id + '_hold',true);
                        switch (getState('0_userdata.0.' + obj.id + '_multipress_count').val) {
                          case 1:
                            if (DEBUG == true) console.log('Switch2: HOLD!!!!');
                            break;
                          case 2:
                            if (DEBUG == true) console.log('Switch2: Double press HOLD!!!!');
                            break;
                          case 3:
                            if (DEBUG == true) console.log('Switch2: Triple press HOLD!!!!');
                            break;
                          case 4:
                            if (DEBUG == true) console.log('Switch2: MULTI press HOLD!!!!');
                            break;
                          case 5:
                            if (DEBUG == true) console.log('Switch2: MO MO MO MO MONSTER PRESS HOLD!!!!');
                            break;
                          default:
                            if (DEBUG == true) console.log('Switch2: pressed ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val + ' times and held...');
                            break;
                        }
                        setState('0_userdata.0.' + obj.id + '_multipress_count',0);
                        clearInterval(timer2);
                        return;
                    }
                  if (DEBUG == true) console.log('Switch2: ' + obj.id + ': ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val)
                  setState('0_userdata.0.' + obj.id + '_multipress_count',0);
                  switch (getState('0_userdata.0.' + obj.id + '_multipress_count').val) {
                    case 1:
                      if (DEBUG == true) console.log('Switch2: Single press');
                      break;
                    case 2:
                      if (DEBUG == true) console.log('Switch2: Double press');
                      break;
                    case 3:
                      if (DEBUG == true) console.log('Switch2: Triple press');
                      break;
                    case 4:
                      if (DEBUG == true) console.log('Switch2: MULTI press');
                      break;
                    case 5:
                      if (DEBUG == true) console.log('Switch2: MO MO MO MO MONSTER PRESS!!!');
                      break;
                    default:
                      if (DEBUG == true) console.log('Switch2: pressed ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val + ' times...');
                      break;
                  }
                  if (DEBUG == true) console.log('Switch2: Stoppe Timer...');
                  clearInterval(timer2);
                }
                timer2_count++;
              }, multipress_time / 2);
          if (DEBUG == true) console.log('Switch2: Time between presses on ' + obj.id + ': ' + diff);
      
          } else {
              if (getState('0_userdata.0.' + obj.id + '_hold').val == true) {
                setState('0_userdata.0.' + obj.id + '_hold',false);
                if (DEBUG == true) console.log('Switch2: Hold released...');
              }
          }
      });
      
      on({ id: shelly_i3 + '.SWITCH3', change: "any" }, async function (obj) {
          if (!existsState('0_userdata.0.' + obj.id + '_timestamp')) {
            createState('0_userdata.0.' + obj.id + '_timestamp', 0,{
                    type: 'number',
                }); 
          }
          if (!existsState('0_userdata.0.' + obj.id + '_multipress_count')) {
            createState('0_userdata.0.' + obj.id + '_multipress_count', 0,{
                    type: 'number',
                }); 
          }
          if (!existsState('0_userdata.0.' + obj.id + '_hold')) {
            createState('0_userdata.0.' + obj.id + '_hold', false,{
                    type: 'boolean',
                }); 
          }
          if (getState(obj.id).val == "1") {
          setState('0_userdata.0.' + obj.id + '_timestamp', getState(obj.id).ts);
          setState('0_userdata.0.' + obj.id + '_multipress_count',getState('0_userdata.0.' + obj.id + '_multipress_count').val + 1);
          var diff = getState(obj.id).ts - getState('0_userdata.0.' + obj.id + '_timestamp').val;
          clearInterval(timer3);
          timer3_count = 0;
          if (DEBUG == true) console.log('Switch3: Starte Timer...');
          timer3 = setInterval(function() {
                if (timer3_count != 0) {
                    if (getState(obj.id).val == "1") {
                        setState('0_userdata.0.' + obj.id + '_hold',true);
                        switch (getState('0_userdata.0.' + obj.id + '_multipress_count').val) {
                          case 1:
                            if (DEBUG == true) console.log('Switch3: HOLD!!!!');
                            break;
                          case 2:
                            if (DEBUG == true) console.log('Switch3: Double press HOLD!!!!');
                            break;
                          case 3:
                            if (DEBUG == true) console.log('Switch3: Triple press HOLD!!!!');
                            break;
                          case 4:
                            if (DEBUG == true) console.log('Switch3: MULTI press HOLD!!!!');
                            break;
                          case 5:
                            if (DEBUG == true) console.log('Switch3: MO MO MO MO MONSTER PRESS HOLD!!!!');
                            break;
                          default:
                            if (DEBUG == true) console.log('Switch3: pressed ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val + ' times and held...');
                            break;
                        }
                        setState('0_userdata.0.' + obj.id + '_multipress_count',0);
                        clearInterval(timer3);
                        return;
                    }
                  if (DEBUG == true) console.log('Switch3: ' + obj.id + ': ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val)
                  setState('0_userdata.0.' + obj.id + '_multipress_count',0);
                  switch (getState('0_userdata.0.' + obj.id + '_multipress_count').val) {
                    case 1:
                      if (DEBUG == true) console.log('Switch3: Single press');
                      break;
                    case 2:
                      if (DEBUG == true) console.log('Switch3: Double press');
                      break;
                    case 3:
                      if (DEBUG == true) console.log('Switch3: Triple press');
                      break;
                    case 4:
                      if (DEBUG == true) console.log('Switch3: MULTI press');
                      break;
                    case 5:
                      if (DEBUG == true) console.log('Switch3: MO MO MO MO MONSTER PRESS!!!');
                      break;
                    default:
                      if (DEBUG == true) console.log('Switch3: pressed ' + getState('0_userdata.0.' + obj.id + '_multipress_count').val + ' times...');
                      break;
                  }
                  if (DEBUG == true) console.log('Switch3: Stoppe Timer...');
                  clearInterval(timer3);
                }
                timer3_count++;
              }, multipress_time / 2);
          if (DEBUG == true) console.log('Switch3: Time between presses on ' + obj.id + ': ' + diff);
      
          } else {
              if (getState('0_userdata.0.' + obj.id + '_hold').val == true) {
                setState('0_userdata.0.' + obj.id + '_hold',false);
                if (DEBUG == true) console.log('Switch3: Hold released...');
              }
          }
      });
      

      EDIT: In der Zwischenzeit hab ich Hold (als kleines Gimmick noch double press + Hold usw. da ich schon mal dabei war) auch noch eingebaut.

      Macht es sinn das ganze hier im Forum als Plug and Play Lösung anzubieten? Vllt. auch erweitert um States im 0_userdata die jeweilige Aktionen nur auf true setzen, damit man es mit anderen Skripten leichter auswerten kann?

      Und ja, ich weiß eigentlich könnte ich das ganze noch in weitere Funktionen aufbrechen. Mir reicht es so aber, und die arbeit in schöneren code möchte ich mir (zumindest heute) nicht mehr machen...

      posted in Hardware
      K
      kubax
    • RE: Hardware such hilfe (Taster "adapter" wie Shelly I3)

      @mickym ich schau einfach jetzt am Wochenende nochmal ob ich den Shelly I3 so eingestellt bekomme das er zumindest vernünftig pro taster den true / false liefert..

      Ich brauch in Javascript nur einen trigger auf das event, den kann ich dann ja so gestalten das er bei true / false jeweils anders reagiert. Ich bin nicht so der Fan von "Programmierung" mit dem verknüpfen von Elementen wie bei NodeRed und Blockly, auch wenn es sicherlich einfacher ist.

      Vllt. so ne art Fetisch xD oder selbst Geißelung. Vor allem wenn man zwar in der lage ist zu programmieren (bin Fachinformatiker von Beruf) aber nicht so fest drin ist, das man ohne stundenlang googeln sowas wie Timer vernünftig hin bekommt 🙂

      Aber ich schau nochmal. Vllt. hatte ich mich auch nur verrant damit das ich es unbedingt in Tasmota über Rules lösen wollte.

      posted in Hardware
      K
      kubax
    • RE: Hardware such hilfe (Taster "adapter" wie Shelly I3)

      @mickym ja, das ist in der tat ein großes problem. Mit Rules kenn ich mich auch so gut wie gar nicht aus. Ich hab zwar welche angepasst, aber bin dann immer irgendwo gegen eine wand gelaufen.

      @Muchul ich hatte schon mehrere Taster gefunden, allerdings nirgendwo vernünftige informationen gefunden welche daten per zigbee weitergegeben würden. Wobei, wenn ich hier nen false -> true -> false event bekomme wenn ich den taster drücke, bzw. ein false -> true wenn ich gedrückt halt, ließe sich das ja dann im script abfangen. bisher hatte ich nur geschaut ob die taster single, double oder hold weiterleiten können.

      Edit: ah, ne, ich hatte das glaub ich schon probiert, und war daran gescheiter das ich in Javascript keinen timer für das checken des statuses hin bekommen habe. Sondern lediglich auf änderung des objekts reagiert habe.

      Im falle einer hold aktion würde aber kein weiteres event kommen.

      posted in Hardware
      K
      kubax
    • RE: Hardware such hilfe (Taster "adapter" wie Shelly I3)

      @homoran bliebe noch das problem, das ich dann die Knopfzelle "ständig" wechseln müsste. 3D Drucker hätte ich auch keinen. (leider)

      @mickym also wenn Tasmota in der einstellung alle x ms einen neuen status schicken würde, wäre das ja evtl. sogar ne lösung.... dann wäre halt die ganze logick im javascript adapter... ist zwar etwas fummeliger, aber zumindest nicht unmöglich... hmmm... wobei da dann wieder das spezielle problem mit dem I3 uns Tasmota zu tragen kommt, ohne rule schickt er nur an einen datenpunkt die info das einer der taster gedrückt wurde. quasi egal welcher der 3 taster..

      Wäre das beim Shelly Dimmer 2 evtl. anders? Hat der immer zwei Datenpunkte die triggern bei tastendruck?

      posted in Hardware
      K
      kubax
    • RE: Hardware such hilfe (Taster "adapter" wie Shelly I3)

      @mickym ich habe es in Tasmota bisher mit Rules versucht, da fehlt mir aber eine art if für den check ob der Taster noch gedrückt ist bei der hold Aktion.

      Das zweite Problem ist, das dadurch das der I3 über die normale Stromleitung schaltet, er entweder beim Drücken, oder beim nicht drücken keine Verbindung hat.

      In der Default Einstellung war mein Taster, und der Shelly I3 als NO schalter konfiguriert, also nur wenn der Taster gedrückt wird, liegt ein "Signal" an. Was wiederum zu ghost eingaben geführt hat. Das bin ich umgangen in dem ich die Feder an dem Taster getauscht hab, und ihn zu einem NC Taster umgebaut habe. Also normalerweise liegt ein "Signal" an, welches bei Tastendruck unterbrochen wird. Das funktioniert auch gut für single, double usw. Sobald man aber Hold, hat man das gleiche Problem wie vorher. Durch den undefinierten zustand hat man Fehleingaben.

      Das könnte aber durchaus ein Problem sein, das ich in jedem fall habe. Deshalb hatte ich mich auch schon nach kompletten Schaltern umgeschaut. Da ist das Feld aber leider auch recht dünn, vor allem wenn man zwei in einem Doppelrahmen übereinander haben möchte...

      Alles nicht so einfach 😅

      Am besten funktioniert bisher eine Ikea Fernbedienung, ich würd allerdings eine Wandmontage bevorzugen.

      posted in Hardware
      K
      kubax
    • RE: Hardware such hilfe (Taster "adapter" wie Shelly I3)

      @mickym schade, ich hab grad fast einen bestellt, in der Hoffnung das es damit dann geht xD

      Trotzdem danke für den vorschlag 🙂

      posted in Hardware
      K
      kubax
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo