Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Zigbee Response aus JS oder Blockly schicken?

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Zigbee Response aus JS oder Blockly schicken?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 4 Kommentatoren 1.9k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • O Offline
    O Offline
    olixAtiobroker
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich würde gerne eine Zigbee Nachricht aus einem JS/Blockly schicken.
    Hintergrund: ich habe ein Linkind ZS130000078 Security Key Pad.
    Dieses schickt ein "Panel Status Request" auf das ich gerne per JS Script mit einer "Get Panel Status Response" aus dem IAS ACE Cluster antworten würde, da das Keypad sonst nicht richtig funktioniert.

    Das Script ist auf die "msg_from_zigbee" registriert und wird getriggered.

    Der Panel Status Reuest sieht wie folgt aus:
    {"type":"commandGetPanelStatus","data":{},"linkquality":255,"groupID":null,"cluster":"ssIasAce","meta":{"zclTransactionSequenceNumber":4,"manufacturerCode":null,"frameControl":{"frameType":1,"manufacturerSpecific":false,"direction":0,"disableDefaultResponse":false,"reservedBits":0}},"endpoint_id":1}

    Jetzt würde ich die Response gerne mit
    sendTo("zigbee.0", "sendToZigbee", {...}); oder einer Alternative(?) verschicken.

    Leider verstehe ich die Syntax für die Payload nicht und weiß auch nicht, wie ich die zclTransactionSequenceNumber bei der Response angeben kann? Kann mir jemand helfen?

    Dem Zigbee Standard habe ich folgende "Fragmente" für die Response entnommen und mal versucht sie zu mappen:
    "cid": "ssIasAce",
    "cmd": "readRsp",
    "cmdType": "foundation",
    "zclData": { "getPanelStatusRsp": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"}}

    Danke für Eure Hilfe.
    Oliver

    AsgothianA 1 Antwort Letzte Antwort
    0
    • O olixAtiobroker

      Hallo,
      ich würde gerne eine Zigbee Nachricht aus einem JS/Blockly schicken.
      Hintergrund: ich habe ein Linkind ZS130000078 Security Key Pad.
      Dieses schickt ein "Panel Status Request" auf das ich gerne per JS Script mit einer "Get Panel Status Response" aus dem IAS ACE Cluster antworten würde, da das Keypad sonst nicht richtig funktioniert.

      Das Script ist auf die "msg_from_zigbee" registriert und wird getriggered.

      Der Panel Status Reuest sieht wie folgt aus:
      {"type":"commandGetPanelStatus","data":{},"linkquality":255,"groupID":null,"cluster":"ssIasAce","meta":{"zclTransactionSequenceNumber":4,"manufacturerCode":null,"frameControl":{"frameType":1,"manufacturerSpecific":false,"direction":0,"disableDefaultResponse":false,"reservedBits":0}},"endpoint_id":1}

      Jetzt würde ich die Response gerne mit
      sendTo("zigbee.0", "sendToZigbee", {...}); oder einer Alternative(?) verschicken.

      Leider verstehe ich die Syntax für die Payload nicht und weiß auch nicht, wie ich die zclTransactionSequenceNumber bei der Response angeben kann? Kann mir jemand helfen?

      Dem Zigbee Standard habe ich folgende "Fragmente" für die Response entnommen und mal versucht sie zu mappen:
      "cid": "ssIasAce",
      "cmd": "readRsp",
      "cmdType": "foundation",
      "zclData": { "getPanelStatusRsp": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"}}

      Danke für Eure Hilfe.
      Oliver

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      @olixatiobroker

      Du solltest versuchen dir über den Entwickler Tab im Expertenmodus die Nachricht zusammen zu bauen und abzuschicken. Sofern es da keine Fehlermeldung / Warnmeldung gibt kannst du genau das was da angegeben ist als Payload bei sendToZigbee angeben.

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      O 2 Antworten Letzte Antwort
      0
      • AsgothianA Asgothian

        @olixatiobroker

        Du solltest versuchen dir über den Entwickler Tab im Expertenmodus die Nachricht zusammen zu bauen und abzuschicken. Sofern es da keine Fehlermeldung / Warnmeldung gibt kannst du genau das was da angegeben ist als Payload bei sendToZigbee angeben.

        A.

        O Offline
        O Offline
        olixAtiobroker
        schrieb am zuletzt editiert von
        #3

        @asgothian Besten Dank, probiere ich mal. Oliver

        1 Antwort Letzte Antwort
        0
        • AsgothianA Asgothian

          @olixatiobroker

          Du solltest versuchen dir über den Entwickler Tab im Expertenmodus die Nachricht zusammen zu bauen und abzuschicken. Sofern es da keine Fehlermeldung / Warnmeldung gibt kannst du genau das was da angegeben ist als Payload bei sendToZigbee angeben.

          A.

          O Offline
          O Offline
          olixAtiobroker
          schrieb am zuletzt editiert von
          #4

          @asgothian
          Hallo,
          habe versucht über den Experten Modus eine Read Response auf das getPanelStatus Command zusammenzubauen, aber das wird da wohl nicht unterstützt.
          Wie gesagt, mein Problem ist, dass ich die Syntax für den Payload (vermutl. in zclData) nicht kenne und über die GUI kann ich maximal den "äußeren Rahmen" der Message zusammenbauen:
          {
          "devId": "zigbee.0.680ae2fffee571be",
          "ep": "1",
          "cid": "ssIasAce",
          "cmd": "readRsp",
          "cmdType": "foundation",
          "zclData": {
          "null": 0
          },
          "cfg": null
          }
          Inhaltlich müßte da "getPanelStatusRsp": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} rein, aber wie gesagt, ich verstehe die Syntax leider nicht.
          Gibt es irgendwo Beispiele?
          Danke, Oliver

          AsgothianA O 2 Antworten Letzte Antwort
          0
          • O olixAtiobroker

            @asgothian
            Hallo,
            habe versucht über den Experten Modus eine Read Response auf das getPanelStatus Command zusammenzubauen, aber das wird da wohl nicht unterstützt.
            Wie gesagt, mein Problem ist, dass ich die Syntax für den Payload (vermutl. in zclData) nicht kenne und über die GUI kann ich maximal den "äußeren Rahmen" der Message zusammenbauen:
            {
            "devId": "zigbee.0.680ae2fffee571be",
            "ep": "1",
            "cid": "ssIasAce",
            "cmd": "readRsp",
            "cmdType": "foundation",
            "zclData": {
            "null": 0
            },
            "cfg": null
            }
            Inhaltlich müßte da "getPanelStatusRsp": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} rein, aber wie gesagt, ich verstehe die Syntax leider nicht.
            Gibt es irgendwo Beispiele?
            Danke, Oliver

            AsgothianA Offline
            AsgothianA Offline
            Asgothian
            Developer
            schrieb am zuletzt editiert von
            #5

            @olixatiobroker Ich vermute mal der Post auf Github ist von Dir - versuch mal die da vorgeschlagene Lösung.

            A.

            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

            1 Antwort Letzte Antwort
            0
            • O olixAtiobroker

              @asgothian
              Hallo,
              habe versucht über den Experten Modus eine Read Response auf das getPanelStatus Command zusammenzubauen, aber das wird da wohl nicht unterstützt.
              Wie gesagt, mein Problem ist, dass ich die Syntax für den Payload (vermutl. in zclData) nicht kenne und über die GUI kann ich maximal den "äußeren Rahmen" der Message zusammenbauen:
              {
              "devId": "zigbee.0.680ae2fffee571be",
              "ep": "1",
              "cid": "ssIasAce",
              "cmd": "readRsp",
              "cmdType": "foundation",
              "zclData": {
              "null": 0
              },
              "cfg": null
              }
              Inhaltlich müßte da "getPanelStatusRsp": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} rein, aber wie gesagt, ich verstehe die Syntax leider nicht.
              Gibt es irgendwo Beispiele?
              Danke, Oliver

              O Offline
              O Offline
              olixAtiobroker
              schrieb am zuletzt editiert von
              #6

              @Asgothian
              Hallo, ja der andere Post ist auch von mir.
              Habe noch etwas weiter mit dem Expertmode rumprobiert und kann jetzt mein Problem hoffentlich besser beschreiben.

              In der Expert GUI kann ich jetzt schon mal die "richtige Anfrage" zusammenstellen auf die ich antworten möchte (Payload/zclData mal egal):

              {
                  "devId": "zigbee.0.680ae2fffee571be",
                  "ep": "1",
                  "cid": "ssIasAce",
                  "cmd": "getPanelStatus",
                  "cmdType": "functional",
                  "zclData": {
                      "null": {}
                  },
                  "cfg": null
              }
              

              Darauf basierend habe ich mir folgende CommandResponse "zusammengebastelt" mit der ich gerne antworten würde:

              { "id": "zigbee.0.680ae2fffee571be", 
              "ep": "1", 
              "cid": "ssIasAce", 
              "cmd": "getPanelStatusRsp", 
              "cmdType": "functional", 
              "zclData": {"panelstatus": "0","secondsremain":"10","audiblenotif":"1","alarmstatus":"0"} 
              }
              

              Verschicke ich die aus einem Script bekomme ich dann immer einen:

              Error: Cluster 'ssIasAce' has no command 'getPanelStatusRsp'
              
              

              Was ja auch stimmt, da ich ja kein Command sonder ein CommandResponse schicken will.
              "Ursache" dürfte in zclFrame.js in Zeile 327 liegen. Da frameControl.direction == CLIENT_TO_SERVER statt SERVER_TO_CLIENT ruft er getCommand() statt getCommandResponse() auf:

              command = this.Header.frameControl.direction === definition_1.Direction.CLIENT_TO_SERVER ?
              this.Cluster.getCommand(this.Header.commandIdentifier) :
              this.Cluster.getCommandResponse(this.Header.commandIdentifier);
              

              Frage wäre, wie kann ich beim folgenden Aufruf aus dem Script die frameControl.direction ändern? Dann wäre ich wohl mindestens mal einen Schritt weiter.

              sendTo("zigbee.0", "sendToZigbee", { "id": "zigbee.0.680ae2fffee571be", "ep": "1", "cid": "ssIasAce", "cmd": "getPanelStatusRsp", "cmdType": "functional", "zclData": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} });
              

              Nochmal vielen Dank und Grüße,
              Oliver

              1 Antwort Letzte Antwort
              0
              • AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von Asgothian
                #7

                @olixatiobroker sagte in Zigbee Response aus JS oder Blockly schicken?:

                @Asgothian
                Hallo, ja der andere Post ist auch von mir.
                Habe noch etwas weiter mit dem Expertmode rumprobiert und kann jetzt mein Problem hoffentlich besser beschreiben.

                Was ja auch stimmt, da ich ja kein Command sonder ein CommandResponse schicken will.
                "Ursache" dürfte in zclFrame.js in Zeile 327 liegen. Da frameControl.direction == CLIENT_TO_SERVER statt SERVER_TO_CLIENT ruft er getCommand() statt getCommandResponse() auf:

                command = this.Header.frameControl.direction === definition_1.Direction.CLIENT_TO_SERVER ?
                this.Cluster.getCommand(this.Header.commandIdentifier) :
                this.Cluster.getCommandResponse(this.Header.commandIdentifier);
                

                Frage wäre, wie kann ich beim folgenden Aufruf aus dem Script die frameControl.direction ändern? Dann wäre ich wohl mindestens mal einen Schritt weiter.

                sendTo("zigbee.0", "sendToZigbee", { "id": "zigbee.0.680ae2fffee571be", "ep": "1", "cid": "ssIasAce", "cmd": "getPanelStatusRsp", "cmdType": "functional", "zclData": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} });
                

                Nochmal vielen Dank und Grüße,
                Oliver

                Ich gehe davon aus das das nicht geht. Deswegen die Frage ob die bei zigbee2mqtt.io beschriebenen Telegramme unter "Arming/Disarming from Keypad" das leisten was du zu erreichen versuchst. Wenn ja., dann kannst du ganz einfach über die Funktion SendToDevice arbeiten, die 2 Parameter erwartet.

                Ein Beispiel wie die genutzt werden findest du hier. Der notwendige Payload ist auf der Zigbee2mqtt Seite beschrieben.

                A.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                O 1 Antwort Letzte Antwort
                0
                • AsgothianA Asgothian

                  @olixatiobroker sagte in Zigbee Response aus JS oder Blockly schicken?:

                  @Asgothian
                  Hallo, ja der andere Post ist auch von mir.
                  Habe noch etwas weiter mit dem Expertmode rumprobiert und kann jetzt mein Problem hoffentlich besser beschreiben.

                  Was ja auch stimmt, da ich ja kein Command sonder ein CommandResponse schicken will.
                  "Ursache" dürfte in zclFrame.js in Zeile 327 liegen. Da frameControl.direction == CLIENT_TO_SERVER statt SERVER_TO_CLIENT ruft er getCommand() statt getCommandResponse() auf:

                  command = this.Header.frameControl.direction === definition_1.Direction.CLIENT_TO_SERVER ?
                  this.Cluster.getCommand(this.Header.commandIdentifier) :
                  this.Cluster.getCommandResponse(this.Header.commandIdentifier);
                  

                  Frage wäre, wie kann ich beim folgenden Aufruf aus dem Script die frameControl.direction ändern? Dann wäre ich wohl mindestens mal einen Schritt weiter.

                  sendTo("zigbee.0", "sendToZigbee", { "id": "zigbee.0.680ae2fffee571be", "ep": "1", "cid": "ssIasAce", "cmd": "getPanelStatusRsp", "cmdType": "functional", "zclData": {"panelstatus": "0","secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} });
                  

                  Nochmal vielen Dank und Grüße,
                  Oliver

                  Ich gehe davon aus das das nicht geht. Deswegen die Frage ob die bei zigbee2mqtt.io beschriebenen Telegramme unter "Arming/Disarming from Keypad" das leisten was du zu erreichen versuchst. Wenn ja., dann kannst du ganz einfach über die Funktion SendToDevice arbeiten, die 2 Parameter erwartet.

                  Ein Beispiel wie die genutzt werden findest du hier. Der notwendige Payload ist auf der Zigbee2mqtt Seite beschrieben.

                  A.

                  O Offline
                  O Offline
                  olixAtiobroker
                  schrieb am zuletzt editiert von
                  #8

                  Hallo @asgothian,
                  erstmal nochmal danke, für Deine Unterstützung. Ich denke ich konnte mein Problem jetzt lösen. Dazu habe ich im iobroker.zigbee Adapter zwei kleine Änderungen an developer.js und zigbeecontroller.js vorgenommen. Der Adapter sollte jetzt auch das Versender von commandResponses aus Scripten unterstützen - da der zigbee-herdsman das bereits kann.
                  Damit lassen sich dann auch IAS ACE Devices (also Security Keyfobs und Security Panel) durch "Simulation" einer Alarmanlage per Script unterstützen.
                  Zum Beispiel:

                  • Linkind ZS130000078 Security keypad battery
                  • Linkind ZS130000178 Security system key fob
                  • Immax Neo 07046L 4 Buttons
                  • dürfte auch mit Centralite security keypads funktionieren

                  Gibt aber bestimmt noch weitere Anwednungsfälle.
                  Ich würde Dir dafür gerne einen Pull Request stellen, wenn Du das generell unterstützen würdest?
                  Anbei auch das Script an dem Du die kleinen Erweiterungen an der sendToZigbee, die jetzt "cmdType": "functionalResp", und einen optionalen "zclSeqNum": Parameter unterstützt, sehen kannst.
                  Danke für Dein Feedback zu einem Pull Request,
                  Oliver

                  var armMode = 0; //disarmed
                  
                  // register all devices added to iasace_keyfob or iasace_panel enum.function
                  // note: msg_from_zigbee must be tagged
                  on({enumId: /^enum\.functions\.iasace_(keyfob|panel)$/, change: "ne"}, function(obj) 
                  {
                      var msg_rcvd; 
                      var senderId = obj.id.replace(".msg_from_zigbee", "");
                      console.log('ZID:' + senderId);
                      
                      msg_rcvd = (function () { try {return JSON.parse(getState(obj.id).val);} catch(e) {return {};}})();
                      console.log((' ID:' + obj.id + ' Msg:' + msg_rcvd.type + " SeqNum:" + msg_rcvd.meta.zclTransactionSequenceNumber + " ZoneID:" + msg_rcvd.data.zoneID));
                  
                      switch(msg_rcvd.type)
                      {
                          case "commandGetPanelStatus":
                              console.log(('Respond to commandGetPanelStatus\n'));
                              sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "getPanelStatusRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"panelstatus": armMode,"secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} });
                              break;
                          case "commandArm":
                          // for now don't check PIN and just respond success
                              console.log(('Respond to commandArm for Zone: ' + msg_rcvd.data.armmode + ' PIN:' + msg_rcvd.data.code));
                              armMode = msg_rcvd.data.armmode;
                              sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "armRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"armnotification": msg_rcvd.data.armmode} });
                          break;
                    }
                  });
                  
                  
                  AsgothianA 1 Antwort Letzte Antwort
                  0
                  • O olixAtiobroker

                    Hallo @asgothian,
                    erstmal nochmal danke, für Deine Unterstützung. Ich denke ich konnte mein Problem jetzt lösen. Dazu habe ich im iobroker.zigbee Adapter zwei kleine Änderungen an developer.js und zigbeecontroller.js vorgenommen. Der Adapter sollte jetzt auch das Versender von commandResponses aus Scripten unterstützen - da der zigbee-herdsman das bereits kann.
                    Damit lassen sich dann auch IAS ACE Devices (also Security Keyfobs und Security Panel) durch "Simulation" einer Alarmanlage per Script unterstützen.
                    Zum Beispiel:

                    • Linkind ZS130000078 Security keypad battery
                    • Linkind ZS130000178 Security system key fob
                    • Immax Neo 07046L 4 Buttons
                    • dürfte auch mit Centralite security keypads funktionieren

                    Gibt aber bestimmt noch weitere Anwednungsfälle.
                    Ich würde Dir dafür gerne einen Pull Request stellen, wenn Du das generell unterstützen würdest?
                    Anbei auch das Script an dem Du die kleinen Erweiterungen an der sendToZigbee, die jetzt "cmdType": "functionalResp", und einen optionalen "zclSeqNum": Parameter unterstützt, sehen kannst.
                    Danke für Dein Feedback zu einem Pull Request,
                    Oliver

                    var armMode = 0; //disarmed
                    
                    // register all devices added to iasace_keyfob or iasace_panel enum.function
                    // note: msg_from_zigbee must be tagged
                    on({enumId: /^enum\.functions\.iasace_(keyfob|panel)$/, change: "ne"}, function(obj) 
                    {
                        var msg_rcvd; 
                        var senderId = obj.id.replace(".msg_from_zigbee", "");
                        console.log('ZID:' + senderId);
                        
                        msg_rcvd = (function () { try {return JSON.parse(getState(obj.id).val);} catch(e) {return {};}})();
                        console.log((' ID:' + obj.id + ' Msg:' + msg_rcvd.type + " SeqNum:" + msg_rcvd.meta.zclTransactionSequenceNumber + " ZoneID:" + msg_rcvd.data.zoneID));
                    
                        switch(msg_rcvd.type)
                        {
                            case "commandGetPanelStatus":
                                console.log(('Respond to commandGetPanelStatus\n'));
                                sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "getPanelStatusRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"panelstatus": armMode,"secondsremain": "10","audiblenotif":"1","alarmstatus":"0"} });
                                break;
                            case "commandArm":
                            // for now don't check PIN and just respond success
                                console.log(('Respond to commandArm for Zone: ' + msg_rcvd.data.armmode + ' PIN:' + msg_rcvd.data.code));
                                armMode = msg_rcvd.data.armmode;
                                sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "armRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"armnotification": msg_rcvd.data.armmode} });
                            break;
                      }
                    });
                    
                    
                    AsgothianA Offline
                    AsgothianA Offline
                    Asgothian
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @olixatiobroker

                    Hast du versucht ob der Weg über das SendToDevice funktioniert ? Eine Anpassung in dieser Tiefe ist für die meisten Anwender nur bedingt nutzbar. Da ich selber kein entsprechendes Gerät habe kann ich das nicht selber testen.

                    A.

                    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                    O 1 Antwort Letzte Antwort
                    0
                    • AsgothianA Asgothian

                      @olixatiobroker

                      Hast du versucht ob der Weg über das SendToDevice funktioniert ? Eine Anpassung in dieser Tiefe ist für die meisten Anwender nur bedingt nutzbar. Da ich selber kein entsprechendes Gerät habe kann ich das nicht selber testen.

                      A.

                      O Offline
                      O Offline
                      olixAtiobroker
                      schrieb am zuletzt editiert von
                      #10

                      Hallo @asgothian ,
                      sendToDevice() hat das selbe Problem, dass keine CommandResponse Nachrichten mit ZclSeqNumber geschickt werden können. Geht also meiner Meinung nach nicht.
                      Die Änderungen wären nach aussen absolut rückwärtskompatibel, da es ja nur einen erweiterter cmdType und einen optionalen Parameter zclSeqNum geben würde.
                      Merkt also keiner, der es nicht braucht.
                      Wie gesagt, die Änderungen sind fertig und seeehr überschaubar. Ich werde mal einen Pull Request erstellen und dann kannst Du mal schauen.
                      Danke, Oliver

                      O 1 Antwort Letzte Antwort
                      0
                      • O olixAtiobroker

                        Hallo @asgothian ,
                        sendToDevice() hat das selbe Problem, dass keine CommandResponse Nachrichten mit ZclSeqNumber geschickt werden können. Geht also meiner Meinung nach nicht.
                        Die Änderungen wären nach aussen absolut rückwärtskompatibel, da es ja nur einen erweiterter cmdType und einen optionalen Parameter zclSeqNum geben würde.
                        Merkt also keiner, der es nicht braucht.
                        Wie gesagt, die Änderungen sind fertig und seeehr überschaubar. Ich werde mal einen Pull Request erstellen und dann kannst Du mal schauen.
                        Danke, Oliver

                        O Offline
                        O Offline
                        olixAtiobroker
                        schrieb am zuletzt editiert von
                        #11

                        Hallo @asgothian ,
                        ich habe jetzt einen Pull Request angelegt: https://github.com/ioBroker/ioBroker.zigbee/pull/1283 . Schau mal, ob das passen könnte. Falls ein Device für Tests bei Dir notwendig ist, dann könnte ich das ggf. sponsorn.
                        Grüße, Oliver

                        AsgothianA 1 Antwort Letzte Antwort
                        0
                        • O olixAtiobroker

                          Hallo @asgothian ,
                          ich habe jetzt einen Pull Request angelegt: https://github.com/ioBroker/ioBroker.zigbee/pull/1283 . Schau mal, ob das passen könnte. Falls ein Device für Tests bei Dir notwendig ist, dann könnte ich das ggf. sponsorn.
                          Grüße, Oliver

                          AsgothianA Offline
                          AsgothianA Offline
                          Asgothian
                          Developer
                          schrieb am zuletzt editiert von Asgothian
                          #12

                          @olixatiobroker ich würde Dich bitten zu versuchen per
                          JS via

                          
                          sendTo('zigbee.0', 'SendToDevice', {'device':'yy', 'payload':{
                              "arm_mode": {
                                  "transaction": xx, // Transaction number (this must be the same as the keypad request `action_transaction`)
                                  "mode": "arm_all_zones" // Mode (this must be the same as the keypad request `action`)
                              }},, function(res) {
                              if (res.success)
                                console.log("success")
                              else
                                console.log(res.error);
                              });
                          

                          zu versuchen die benötigte Antwort zu senden,

                          wobei yy die ID deines Devices ist, und xx die von Dir gewünschte Transaction Number.

                          Anstelle von "arm_all_zones" geht auch "disarm", "arm_day_zones", "invalid_code", "not_ready", "already_disarmed"

                          A.

                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                          O 1 Antwort Letzte Antwort
                          0
                          • AsgothianA Asgothian

                            @olixatiobroker ich würde Dich bitten zu versuchen per
                            JS via

                            
                            sendTo('zigbee.0', 'SendToDevice', {'device':'yy', 'payload':{
                                "arm_mode": {
                                    "transaction": xx, // Transaction number (this must be the same as the keypad request `action_transaction`)
                                    "mode": "arm_all_zones" // Mode (this must be the same as the keypad request `action`)
                                }},, function(res) {
                                if (res.success)
                                  console.log("success")
                                else
                                  console.log(res.error);
                                });
                            

                            zu versuchen die benötigte Antwort zu senden,

                            wobei yy die ID deines Devices ist, und xx die von Dir gewünschte Transaction Number.

                            Anstelle von "arm_all_zones" geht auch "disarm", "arm_day_zones", "invalid_code", "not_ready", "already_disarmed"

                            A.

                            O Offline
                            O Offline
                            olixAtiobroker
                            schrieb am zuletzt editiert von
                            #13

                            Hallo @asgothian,
                            ich habe mein Script mal entsprechend umgebaut und bekomme auch ein "success" allerdings, empfängt das Device scheinbar nichts/ nicht das Richtige. Ich werde mir das nochmal mit dem Debugger ansehen, wo es im Stack schiefgeht - allerdings schaffe ich das nicht am WE. Wie sähe die Nachricht für die GetPanelStatus Response aus?
                            Danke nochmal und Grüße,
                            Oliver

                            1 Antwort Letzte Antwort
                            0
                            • N Offline
                              N Offline
                              NewPaint2
                              schrieb am zuletzt editiert von NewPaint2
                              #14

                              Hallo wir haben was geschafft was auch sehr gut funktioniert um das Tastenfeld zum Leben zu erwecken. Grundlage waren eure tollen Vorarbeiten, jeden zu benennen wäre jetzt zu viel.
                              Mit meinem Mitstreiter Steve (failsystem) ist folgendes Script entstanden:

                              // Erstellen lokaler Variablen //
                              var varPIN, varPStatus, varAStatus, varWPin;
                              // Datenpunkte erstellen //
                              createState("Alarmanlage.PIN", { name: 'PIN', type: 'number', read: true, write: true,}); 
                              createState("Alarmanlage.PanelStatus", { name: 'PanelStatus', type: 'number', read: true, write: true,}); 
                              createState("Alarmanlage.AlarmStatus", { name: 'AlarmStatus', type: 'number', read: true, write: true,}); 
                              createState("Alarmanlage.WrongPin", { name: 'WrongPin', type: 'boolean', read: true, write: true,}); 
                              createState("Alarmanlage.MPin", { name: 'MPin', type: 'number', read: true, write: false,}); 
                              //Trigger für alle Änderungen im msg_rcvd.type.commandGetPanelStatus//
                              
                              //Funktionsgruppe mit "iasace_keyforb" unter Aufzählungen anlegen!//
                              on({enumId: /^enum\.functions\.iasace_(keyfob|panel)$/, change: "ne"}, function(obj) 
                              {
                                  // Trigger Variablen erstellen//
                                  var msg_rcvd; 
                                  var senderId = obj.id.replace(".msg_from_zigbee", "");
                                  //Logeintrag SenderID//
                                  //console.log('ZID:' + senderId);
                                  //JSON String Ordnen und in Variable Ablegen//
                                  msg_rcvd = (function () { try {return JSON.parse(getState(obj.id).val);} catch(e) {return {};}})();
                                  //Geordneten String in Log Anzeigen//
                                  //console.log((' ID:' + obj.id + ' Msg:' + msg_rcvd.type + " SeqNum:" + msg_rcvd.meta.zclTransactionSequenceNumber + " ZoneID:" + msg_rcvd.data.zoneID));
                                  // Auswahl treffen welche Aktion ausgeführt wird//
                                  switch(msg_rcvd.type)
                                  {
                                      //Panel Status Updaten//
                                      case "commandGetPanelStatus":
                                          //Log eintrag erzeugen das Panel Update erzeugt wird//
                                          //console.log(('Respond to commandGetPanelStatus\n'));
                                          //Global zu Intern schreiben//
                                          varAStatus = getState("Alarmanlage.AlarmStatus").val; //Alarmstatus
                                          varPStatus = getState("Alarmanlage.PanelStatus").val; //armMode
                                          // Response ausführen -->//
                              //--> Zigbee-Adapter benennen! (zigbee.0 oder zigbee.1)//
                                          sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "getPanelStatusRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"panelstatus": varPStatus,"secondsremain": "30","audiblenotif":"1","alarmstatus": varAStatus} });
                                          break;
                                      //Sicherheitszone Updaten//
                                      case "commandArm":
                                          //Global zu Intern//
                                          varPIN = getState("Alarmanlage.PIN").val; //Gespeicherter Pin
                                          //Logeintrag mit Übersendeten Daten anlegen//
                                          //console.log(('Respond to commandArm for Zone: ' + msg_rcvd.data.armmode + ' PIN:' + msg_rcvd.data.code));
                                          //Abfrage des PIN´s//
                                          if(varPIN == msg_rcvd.data.code || getState("Alarmanlage.MPin").val == msg_rcvd.data.code){
                                              //Globale Variable Schreiben//
                                              setState("Alarmanlage.PanelStatus", msg_rcvd.data.armmode);//Armmode Einrichten
                                              //Interne Variable für Response vorbereiten//
                                              varPStatus = msg_rcvd.data.armmode;
                                              //Globale Variable Beschreiben//
                                              setState("Alarmanlage.WrongPin", false);//WrongPin auf false setzten
                                              //Response ausführen --> Netzwerkfehler vermeiden//
                              //--> hier Zigbee-Adapter benennen (wie oben)//
                                              sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "armRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"armnotification": varPStatus} });
                                          }else{
                                              //Globale Variable Beschreiben//
                                              setState("Alarmanlage.WrongPin", true);
                                              //Logeintrag erzeugen
                                              //console.log(('Fehlerhafte PIN eingegeben!!'))
                                              //Freilauf mit Netzwerkfehler
                                              // Platzhalter für Negative Response //
                                          }
                                      break;
                                }
                              });
                              

                              bitte vergesst nicht die in Aufzählung die "Funktionsgruppe" anzulegen und sie auf den Datenpunkt "Message from zigbee" zu legen. Desweiteren müsst ihr den Adapter der Zigbee-Schnittstelle eintragen (zigbee.0 oder zigbee.x) Siehe Kommentare im Script.
                              Wer noch Vorschläge zur Verbesserung am Script hat gern hier mit dazu stellen. Die Tastatur bekommt den Pincode von eurem Datenpunkt gesendet und reagiert somit auf die Vorgaben vom Iobroker, sie ist jetzt nur noch ein Eingabegerät! Probiert es mal aus und sendet einen Daumen hoch dafür!
                              Viele Grüße aus Zwickau
                              René und Steve

                              M 1 Antwort Letzte Antwort
                              1
                              • N NewPaint2

                                Hallo wir haben was geschafft was auch sehr gut funktioniert um das Tastenfeld zum Leben zu erwecken. Grundlage waren eure tollen Vorarbeiten, jeden zu benennen wäre jetzt zu viel.
                                Mit meinem Mitstreiter Steve (failsystem) ist folgendes Script entstanden:

                                // Erstellen lokaler Variablen //
                                var varPIN, varPStatus, varAStatus, varWPin;
                                // Datenpunkte erstellen //
                                createState("Alarmanlage.PIN", { name: 'PIN', type: 'number', read: true, write: true,}); 
                                createState("Alarmanlage.PanelStatus", { name: 'PanelStatus', type: 'number', read: true, write: true,}); 
                                createState("Alarmanlage.AlarmStatus", { name: 'AlarmStatus', type: 'number', read: true, write: true,}); 
                                createState("Alarmanlage.WrongPin", { name: 'WrongPin', type: 'boolean', read: true, write: true,}); 
                                createState("Alarmanlage.MPin", { name: 'MPin', type: 'number', read: true, write: false,}); 
                                //Trigger für alle Änderungen im msg_rcvd.type.commandGetPanelStatus//
                                
                                //Funktionsgruppe mit "iasace_keyforb" unter Aufzählungen anlegen!//
                                on({enumId: /^enum\.functions\.iasace_(keyfob|panel)$/, change: "ne"}, function(obj) 
                                {
                                    // Trigger Variablen erstellen//
                                    var msg_rcvd; 
                                    var senderId = obj.id.replace(".msg_from_zigbee", "");
                                    //Logeintrag SenderID//
                                    //console.log('ZID:' + senderId);
                                    //JSON String Ordnen und in Variable Ablegen//
                                    msg_rcvd = (function () { try {return JSON.parse(getState(obj.id).val);} catch(e) {return {};}})();
                                    //Geordneten String in Log Anzeigen//
                                    //console.log((' ID:' + obj.id + ' Msg:' + msg_rcvd.type + " SeqNum:" + msg_rcvd.meta.zclTransactionSequenceNumber + " ZoneID:" + msg_rcvd.data.zoneID));
                                    // Auswahl treffen welche Aktion ausgeführt wird//
                                    switch(msg_rcvd.type)
                                    {
                                        //Panel Status Updaten//
                                        case "commandGetPanelStatus":
                                            //Log eintrag erzeugen das Panel Update erzeugt wird//
                                            //console.log(('Respond to commandGetPanelStatus\n'));
                                            //Global zu Intern schreiben//
                                            varAStatus = getState("Alarmanlage.AlarmStatus").val; //Alarmstatus
                                            varPStatus = getState("Alarmanlage.PanelStatus").val; //armMode
                                            // Response ausführen -->//
                                //--> Zigbee-Adapter benennen! (zigbee.0 oder zigbee.1)//
                                            sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "getPanelStatusRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"panelstatus": varPStatus,"secondsremain": "30","audiblenotif":"1","alarmstatus": varAStatus} });
                                            break;
                                        //Sicherheitszone Updaten//
                                        case "commandArm":
                                            //Global zu Intern//
                                            varPIN = getState("Alarmanlage.PIN").val; //Gespeicherter Pin
                                            //Logeintrag mit Übersendeten Daten anlegen//
                                            //console.log(('Respond to commandArm for Zone: ' + msg_rcvd.data.armmode + ' PIN:' + msg_rcvd.data.code));
                                            //Abfrage des PIN´s//
                                            if(varPIN == msg_rcvd.data.code || getState("Alarmanlage.MPin").val == msg_rcvd.data.code){
                                                //Globale Variable Schreiben//
                                                setState("Alarmanlage.PanelStatus", msg_rcvd.data.armmode);//Armmode Einrichten
                                                //Interne Variable für Response vorbereiten//
                                                varPStatus = msg_rcvd.data.armmode;
                                                //Globale Variable Beschreiben//
                                                setState("Alarmanlage.WrongPin", false);//WrongPin auf false setzten
                                                //Response ausführen --> Netzwerkfehler vermeiden//
                                //--> hier Zigbee-Adapter benennen (wie oben)//
                                                sendTo("zigbee.0", "sendToZigbee", { "id": senderId, "ep": "1", "cid": "ssIasAce", "cmd": "armRsp", "cmdType": "functionalResp", "zclSeqNum": msg_rcvd.meta.zclTransactionSequenceNumber, "zclData": {"armnotification": varPStatus} });
                                            }else{
                                                //Globale Variable Beschreiben//
                                                setState("Alarmanlage.WrongPin", true);
                                                //Logeintrag erzeugen
                                                //console.log(('Fehlerhafte PIN eingegeben!!'))
                                                //Freilauf mit Netzwerkfehler
                                                // Platzhalter für Negative Response //
                                            }
                                        break;
                                  }
                                });
                                

                                bitte vergesst nicht die in Aufzählung die "Funktionsgruppe" anzulegen und sie auf den Datenpunkt "Message from zigbee" zu legen. Desweiteren müsst ihr den Adapter der Zigbee-Schnittstelle eintragen (zigbee.0 oder zigbee.x) Siehe Kommentare im Script.
                                Wer noch Vorschläge zur Verbesserung am Script hat gern hier mit dazu stellen. Die Tastatur bekommt den Pincode von eurem Datenpunkt gesendet und reagiert somit auf die Vorgaben vom Iobroker, sie ist jetzt nur noch ein Eingabegerät! Probiert es mal aus und sendet einen Daumen hoch dafür!
                                Viele Grüße aus Zwickau
                                René und Steve

                                M Offline
                                M Offline
                                Much2k 0
                                schrieb am zuletzt editiert von
                                #15

                                @newpaint2 Hallo. Dürfte ich eine Frage stellen. Habe auch das Alarmpaneel. Also die Anmeldung bei Bewegung funktiniert. Wenn ich einen Modus ändere bekomme ich immer einen Timout und die LED Leuchtet rot. Funktniert bei dir die Eingabe. Vielen Dank

                                15:40:18.207	info	javascript.0 (31092) script.js.Sicherheit.Alarm: Tastatur Wert :{"type":"commandGetPanelStatus","data":{},"linkquality":83,"groupID":0,"cluster":"ssIasAce","meta":{"zclTransactionSequenceNumber":49,"manufacturerCode":null,"frameControl":{"frameType":1,"manufacturerSpecific":false,"direction":0,"disableDefaultResponse":false,"reservedBits":0}},"endpoint_id":1}
                                15:40:18.207	info	javascript.0 (31092) script.js.Sicherheit.Alarm: Tastatur Kanal ID: zigbee.0.ec1bbdfffe715503
                                15:40:18.208	info	javascript.0 (31092) script.js.Sicherheit.Alarm: Tastatur Seqenz: 49
                                15:40:18.208	info	javascript.0 (31092) script.js.Sicherheit.Alarm: CommadnGetPaneelStatus
                                15:40:18.209	info	javascript.0 (31092) script.js.Sicherheit.Alarm: sendTo(adapter=zigbee.0, cmd=sendToZigbee, msg={"id":"ec1bbdfffe715503","ep":"1","cid":"ssIasAce","cmd":"getPanelStatusRsp","cmdType":"functionalResp","zclSeqNum":49,"zclData":{"panelstatus":"1","secondsremain":"30","audiblenotif":"1","alarmstatus":"1"}})
                                
                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                511

                                Online

                                32.5k

                                Benutzer

                                81.7k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe