Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Fenstersensoren @ Sonoff RF Bridge & Tasmota

    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

    Fenstersensoren @ Sonoff RF Bridge & Tasmota

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

      Moin,

      ich habe nun meine ca. zwei Dutzend Tür/Fenstersensoren GS-WDS07 bekommen und möchte diese natürlich auch verwenden.

      Sie werden sich bei einer Sonoff RF-Bridge mit Tasmota melden.

      RF Bridge ist angeschlossen und mit dem Sonoff Adapter verbunden.

      Hat dazu jetztjemand eine geschickte Vorgehensweise, um mit etwas Geschick und wenig manuellen Klick-Aufwand diese vielen Sensoren als Objekte einzubinden mit Ihren Stati Open/Closed und eventuelles Battery_low im ioBroker auszuwerten?

      Das ich zunächst mal Ihre jeweiligen Codes ermitteln muss, ist mir klar.

      Aber nachdem ich die notiert habe und ihren zukünftigen Einsatzort festgelegt habe - was dann?

      Danke

      1 Reply Last reply Reply Quote 0
      • J
        Jan1 last edited by

        Die werden einfach alle im DP "sonoff.0.Sonoff-RF-Bridge.RfReceived_Data" mit ihrem spezifischen Code auftauchen und den wertest einfach mit nem Script aus. Damit kannst dann DPs erstellten.

        1 Reply Last reply Reply Quote 0
        • tcj
          tcj last edited by

          Das ist mir soweit natürlich klar

          Aber ich bekäme es nur mühsam einzeln hin

          Ich hoffe auf z. B. eine Scriptvorlage, die mir etwas Arbeit annimmt

          1 Reply Last reply Reply Quote 0
          • J
            Jan1 last edited by

            Was ist denn da mühsam sich für jeden Code was zu basteln? Zur Not baut man sich ne Funktion selber zusammen und verwendet die mehrfach.

            1 Reply Last reply Reply Quote 0
            • tcj
              tcj last edited by

              Ich hatte das Thema zunächst liegen gelassen, weil es andere Prioritäten gab.
              Aber jetzt krame ich es mal wieder hervor, denn im Sommer beziehe ich eine neue Wohnung mit mehr Möglichkeiten und Aufgaben, die ich nun auch "versmarten" will.

              Es gelten immer noch die gleichen Voraussetzungen.
              Und ich bräuchte immer noch etwas Hilfe oder Schubse in die richtige Richtung. 😉
              Denn ich zwar bin sehr technikaffin, habe (vor 28 Jahren) mal programmieren in heute nicht mehr genutzen Sprachen gelernt und kann auch Code weitgehend lesen - aber eben nicht Java und js "from scratch" schreiben.

              Ich habe also eine Tabelle - bzw. werde sie erstellen - mit den Codes der einzelnen Sensoren und ihrem Einsatzort wie z.b.

              Code
              2BD30 Tür_Wohnung
              1A2B3 Tür_Bad
              12345 Fenster_Bad

              Aber nicht nur drei sondern ca. 25 Zeilen 😞

              Bekannt ist ja auch, dass nach den Codes der Sensoren ein weiteres halbes Byte kommt mit der Bedeutung:
              [Code]E Close
              [Code]A Open
              [Code]6 Battery Low
              [Code]7 Tamper

              Mit diesem Wissen/Tabelle möchte ich ein Script erstellen, das mir zu den 25 Türen/Fenstern je drei Datenpunkte für Open/Close, Battery und Tamper erstellt.
              Notfalls auch mit einer Vorlage für ein paar Zeilen, die ich mit z.B. Excel-Mitteln zusammensetze - lieber wäre mir aber die Definitione eines Arrays/Tabelle, das ich dann per Schleife durchlaufe.

              Wenn diese 75 Datenpunkte dann vorhanden sind, soll ein weiteres Script auf den auf dem DP "sonoff.0.Sonoff-RF-Bridge.RfReceived_Data" empfangenen Code reagieren und den zugehörigen DP des Sensors setzen.
              d.h. den Status auf Open/Close, Battery auf Low oder Tamper auf True
              (Mal sehen, ob und wozu sich Tamper nutzen lässt)

              Wie gesagt, ich weiß genau, was ich will, kann es ohne Hilfe nur nicht selber ohne einen Mausarm vom "zusamenklicken" zu bekommen.
              Wenn das ganze einmal steht, dann können es sicherlich viele andere Anwender gebrauchen, die auch mehrere dieser Sensoren auf einmal an iobroker binden wollen.
              Und bei 25 Sensoren ist es meiner Meinung nicht egal, ob man 3,50 oder 10€ pro Sensor ausgibt (RF433 vs. Zigbee z.B.), wenn man mit den jeweiligen Vor- und Nachteilen leben kann.

              Erbarmt sich jemand meiner? 🙏

              1 Reply Last reply Reply Quote 0
              • K
                kamolus last edited by

                Hallo, hast du schon Hilfe bekommen?

                tcj 1 Reply Last reply Reply Quote 0
                • tcj
                  tcj @kamolus last edited by tcj

                  @kamolus Nein, konnte mir mittlerweile selber helfen.
                  Habe jetzt ein Script, das die Datenpunkte für die Tür/Fenster- und Wassersensoren anlegt und die Messages auswertet.

                  nicht schön, aber funktioniert:

                  /* 
                  
                  */
                  
                  const sensors = [
                          {id: '12DC0',   room: 'schlafzimmer',   typ: 'tuer',    name: 'Schlafzimmertür'},
                          {id: '129C0',   room: 'schlafzimmer',   typ: 'fenster', name: 'Schlafzimmerfenster'},
                          {id: '718B11',  room: 'keller',         typ: 'wasser',  name: 'Wasser im Keller'}
                      ];
                  
                  const dpRFBridge = 'mqtt.0.tasmota.sonoff_rf_bridge_1.tele.RESULT' // Datenpunkt RF Bridge
                  const fC = true; // forceCreation für createState
                  
                  // Ab hier nix mehr ändern ++++++++++++++++++++++
                  
                  var i;
                  var obj;
                  var code;
                  var index;
                  
                  function createStates() {
                      for (i=0; i<sensors.length; i++) {
                          obj = 'javascript.' + instance + '.wohnung.' + sensors[i].room + '.' + sensors[i].typ;
                          switch (sensors[i].typ) {
                              case 'tuer':
                                  createState(obj + '.open', undefined, fC, {
                                      name: sensors[i].name+ ' Offen',
                                      desc: 'GS-WDS07 Tür/Fenster Sensor',
                                      type: 'boolean',
                                      def: false,
                                      role: 'sensor.door'
                                    //  room: sensors[i].room
                                  });
                                  createState(obj + '.batterylow', undefined, fC, {
                                      name: sensors[i].name + ' Batterie schwach',
                                      desc: 'GS-WDS07 Tür/Fenster Batterie schwach',
                                      type: 'boolean',
                                      def: false,
                                      role: 'indicator.lowbat'
                                  });
                                  createState(obj + '.tamper', undefined, fC, {
                                      name: sensors[i].name + ' Tamper',
                                      desc: 'GS-WDS07 Tür/Fenster Tamper',
                                      type: 'boolean',
                                      def: false,
                                      role: 'sensor.alarm'
                                  });
                                  break;
                              case 'fenster': 
                                  createState(obj + '.open', undefined, fC, {
                                      name: sensors[i].name+ ' Offen',
                                      desc: 'GS-WDS07 Tür/Fenster Sensor',
                                      type: 'boolean',
                                      def: false,
                                      role: 'sensor.window'
                                    //  room: sensors[i].room
                                  });
                                  createState(obj + '.batterylow', undefined, fC, {
                                      name: sensors[i].name + ' Batterie schwach',
                                      desc: 'GS-WDS07 Tür/Fenster Batterie schwach',
                                      type: 'boolean',
                                      def: false,
                                      role: 'indicator.lowbat'
                                  });
                                  createState(obj + '.tamper', undefined, fC, {
                                      name: sensors[i].name + ' Tamper',
                                      desc: 'GS-WDS07 Tür/Fenster Tamper',
                                      type: 'boolean',
                                      def: false,
                                      role: 'sensor.alarm'
                                  });
                                  break;
                              case 'wasser':
                                  createState(obj + '.alarm', undefined, fC, {
                                      name: sensors[i].name,
                                      desc: 'Wasserleck Sensor',
                                      type: 'boolean',
                                      def: false,
                                      role: 'sensor.water'
                                  });
                          };    
                      };    
                  };
                  
                  function findSensorIndex(array, key, value) {
                      for (i = 0; i < array.length; i++) {
                          switch (array[i].typ) {
                              case 'tuer':
                              case 'fenster':
                                  newvalue = value.substr(0,5);
                                  break;
                              case 'wasser':
                                  newvalue=value;
                          };    
                          if (array[i].[key] === newvalue) {
                              return i;
                          }
                      }
                      return -1;
                  }
                  
                  // bei Skriptstart erst mal Datenpunkte anlegen
                  createStates();
                  
                  // wenn sich die empfangenen Daten der RFBridge ändern, dann auswerten und Status setzen
                  on({id: dpRFBridge, change: 'ne'}, function (obj) {
                      code = JSON.parse(obj.state.val).RfReceived.Data; 
                      index = findSensorIndex(sensors, 'id', code);
                      if (index >= 0 ) {
                          switch (sensors[index].typ) {
                              case 'wasser':
                                  setState('javascript.' + instance + '.wohnung.'+sensors[index].room+'.wasser.alarm', true);
                                  break;
                              case 'tuer':
                              case 'fenster':
                                  switch (code.substr(5,1)) {
                                      case 'E':
                                          setState('javascript.' + instance + '.wohnung.' + sensors[index].room + '.' + sensors[index].typ + '.open', false);
                                          break;
                                      case 'A':
                                          setState('javascript.' + instance + '.wohnung.' + sensors[index].room + '.' + sensors[index].typ + '.open', true);
                                          break;
                                      case '6':
                                          setState('javascript.' + instance + '.wohnung.' + sensors[index].room + '.' + sensors[index].typ + '.batterylow', true);
                                          break;
                                      case '7':
                                          setState('javascript.' + instance + '.wohnung.' + sensors[index].room + '.' + sensors[index].typ + '.tamper', true);
                                  }
                          }
                      }    
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • M
                    Matdos last edited by

                    Hallo, habe jetzt auch einen Fensterkontakt und zwei dreifach Taster über die Bridge laufen bzw. möchte ich laufen lassen aktuell ist nur der Fensterkontakt da.

                    Als ich mir das zugelegt habe dachte ich die Bridge schreibt einen Wert unter Objekte in zb Key 1 etwas rein bzw ändert den Wert wenn es als Key 1 angelernt wurde bei jedem mal wenn der Senor bzw taste gedrückt wird.
                    (So wie bei den Zigbee Tastern der Wert wird einmal kurz auf True gesetzt und geht dann gleich wieder auf false).

                    Jetzt ist es aber tatsächlich so das man ja nur den Code der vom Fensterkontakt kommt über ein Script auswerten kann, ich möchte aber das wenn der Code vom Key 1 empfangen wird mir unter Objekte der Wert von Key1 geändert wird und wenn es nur kurz auf true geht das reicht.

                    Aktuell steht da da nur "Learnd send" drin mehr nicht, damit ich aber unter Yahka einen Schalter einbinden kann, brauche ich ja unter Objekte ein True oder fals Wert wie kann ich das umsetzten?

                    Oder kann ich direkt in Yahka ein Script schreiben damit der "Schalter" den Code direkt auswertet?

                    Vielen Dank für euere Hilfe.

                    1.png

                    1 Reply Last reply Reply Quote 0
                    • M
                      Matdos last edited by

                      1.png

                      Habe das in einem anderen Forum gefunden, ich werde aber immer noch nicht schlau draus wie ich über den Code der von dem taster gesendet wird, unter Objekte einen neuen Datenpunkt erzeugt bekomme der beim Drücken vom taster "true" ist und ansonsten "false".

                      1 Reply Last reply Reply Quote 0
                      • Ralla66
                        Ralla66 Most Active last edited by Ralla66

                        Hi,
                        RFReceived_Data 9A9389 ist den was bei dir ?
                        Fenster auf ?

                        Wenn du 9A9389 empfängst möchtst du was machen ?

                        RF_22.jpg

                        Beispiel von mir:

                        RF_23.jpg

                        Die RF Key sind ja angelernte Codes die auch gesendet werden können.
                        Warum diese verarbeiten ?
                        Macht ja bei Fenster auf keinen Sinn.
                        Bild oben, brauchste nur mache setze RF Key 1 auf true oder false.
                        Binde mal die Dreifachtaster in der Bridge erst einmal ein.

                        1 Reply Last reply Reply Quote 0
                        • M
                          Matdos last edited by

                          Hay wenn der Code bei mir kommt ist das wenn ich einen Taster gedrückt habe.

                          Wenn ich den Taster gedrückt habe möchte ich nur das der Code nur kurz einen Datenpunkt auf true setzt und dann gleich wieder auf false zurckückgesetzt wird.

                          1 Reply Last reply Reply Quote 0
                          • M
                            Matdos last edited by

                            1.png 2.png

                            Habe ein Script gemacht und bereits herausgefunden wie ich einen Datenpukt anlege, hier mal "Test", habe es aber noch nicnt geschafft das wenn der Wert 1FE062 gesendet wird das mir der DatenPunkt auf True gesetzt wird, bzw habe auch schon versucht einen anderen Datenpunkt z.B. von einer Lampe auf True zu setzen, aber bis jetzt noch ohne Erfolg.

                            1 Reply Last reply Reply Quote 0
                            • M
                              Matdos last edited by Matdos

                              3.png

                              Ah ok ich habe den Fehler jetzt gefunden ich hatte hinten wert vom Objekt ID und dann den Wert hier hast du "nur den Text Baustein" drin jetzt wird mein Test Datenpunkt auf True gesezt aber ich bekomme unten vom Script Fehlermeldungen und das Pause Zeichen ist gelb das hatte ich bis jetzt noch nie.

                              Update von dem Script Fehler, habe ein neues Script erstellt und aus dem Test Script das Script Importiert, das neu erstellte Script ist jetzt grün ohne Fehlermeldung.

                              Habe ich den Datenpunkt Test richtig erstellt? Meine irgendwo hier im Forum gelesen zu haben das man nicht einfach so wie ich es jetzt gemacht habe in bestehende Ordner eigene Datenpunkte erstellen soll?

                              1 Reply Last reply Reply Quote 0
                              • M
                                Matdos last edited by

                                Script für Taster (wird nach 500ms auf false Zurückgesezt)

                                4.png

                                Hier setze ich den RFReceived Data Punkt auf 0, weil wenn ich einen Taster 2x betätige mit dem gleichen Code logischerweise, schreibt das Script den True wert nicht noch einmal in den erstellten Datenpunkt.
                                Erst wenn ich den Wert RFReceived ändere und erneut der Code von dem Taster kommt wird der erstellte Datenpunkt wieder auf True gesezt.

                                Ist das bei euch auch so, bzw wie habt Ihr das gelöst?

                                5.png

                                Hier habe ich jetzt in dem Sonoff Ordner mal einen eigen Channel erstellt mit 3 Datenpunkten, passt das so, denke nicht oder, weil wenn ich jetzt einen Taster drücke kommt immer eine Warnmeldung im LOG.
                                6.png
                                7.png

                                1 Reply Last reply Reply Quote 0
                                • Ralla66
                                  Ralla66 Most Active last edited by Ralla66

                                  @matdos1gmx-de
                                  Angelegte Datenpunkte sollten im falschen Ordner sein.
                                  Daher dein not connected Schalter 1.
                                  Lege mal RF Schalter 1 in den javascript.0 Ordner so:

                                  Datenpunkte_J.jpg

                                  Wurde geändert gehe auf wurde aktuallisiert.
                                  Sonst wird beim triggern mit dem gleichem Taster das Script nicht ausgeführt.

                                  RF_33.jpg

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    Matdos last edited by

                                    Ah Ok probier ich sofort aus.

                                    Vielen Dank!!

                                    1 Reply Last reply Reply Quote 0
                                    • Ralla66
                                      Ralla66 Most Active last edited by Ralla66

                                      @matdos1gmx-de
                                      Lösche aber RF Schalter 1 im Sonoff Adapter.
                                      Schreibe bitte @Ralla66 davor sonst sehe ich nicht ob du geantwortest hast.
                                      Danke.

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        Matdos @Ralla66 last edited by

                                        @Ralla66

                                        Hab es jetzt so

                                        1.png

                                        1 Reply Last reply Reply Quote 0
                                        • Ralla66
                                          Ralla66 Most Active last edited by

                                          @matdos1gmx-de
                                          Sollte so passen.

                                          M 1 Reply Last reply Reply Quote 0
                                          • M
                                            Matdos @Ralla66 last edited by

                                            @Ralla66
                                            Super vielen Dank für die Hilfe, jetzt kommen auch keine Meldungen mehr wenn die neu angelegten Datenpunkte geändert werden!!!

                                            Herzlichen Dank!!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            595
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            23
                                            4586
                                            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