Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX node for node-red

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Hello Alex
    V. 1.2.2 is out with 249.600.
    This is my gift for you, for the end of this "crazy" 2020.
    Please warm color the life of all us with this new datapoint.
    Zuletzt geändert von TheMax74; 31.12.2020, 09:31.

    Kommentar


      Zitat von TheMax74 Beitrag anzeigen
      Hello Alex
      V. 1.2.2 is out with 249.600.
      This is my gift for you, for the end of this "crazy" 2020.
      Please warm color the life of all us with this new datapoint.
      That was fast.
      It seems that byte 5 and 6 are reversed (bitmask byte is brightness byte and vice versa). Lines 45 and 46 in dpt249.js should probably read:
      Code:
      bufferTotal[4] = absoluteBrightness[1];
      bufferTotal[5] = absoluteBrightness[0];

      Kommentar


        Hello
        i have no devices to try for it, but i’ve tested with est and it’s seems to be fine.
        Have you tried with a real knx device?
        But for what i read, yes, you shoud be right..
        Working on that.
        Zuletzt geändert von TheMax74; 31.12.2020, 10:47.

        Kommentar


          Zitat von TheMax74 Beitrag anzeigen
          Hello
          No, the connection part hasn't be touched since.
          Have you already seen here?
          https://github.com/Supergiovane/node...mate/issues/39
          With this device, i suggest to use the multicast IP 224.0.23.12.
          Thanks,
          I'll give it a try. I already experimented with the filter preferences.
          I also had deactivated secure tunneling ever since, but I'll try it without secure commissioning, too.

          Kommentar


            Zitat von atbs Beitrag anzeigen

            That was fast.
            It seems that byte 5 and 6 are reversed (bitmask byte is brightness byte and vice versa). Lines 45 and 46 in dpt249.js should probably read:
            Code:
            bufferTotal[4] = absoluteBrightness[1];
            bufferTotal[5] = absoluteBrightness[0];
            V. 1.2.3 is out. Sorry for the byteswap.

            Kommentar


              Zitat von TheMax74 Beitrag anzeigen

              V. 1.2.3 is out. Sorry for the byteswap.
              It works. Mille grazie!

              Kommentar



                Zitat von Elektroarzt Beitrag anzeigen

                Hi Strobel2k ... you don't have to decide whether to use relative or absolute dimming. I also have HomeKit running with my existing KNX installation in relative dimming mode. Just add some GAs for the absolute dimming from HomeKit or any other Visu in your ETS project. Both works beside each other as this is the advantage of the separate "Rückmeldeobjekt".
                Best regards
                It works perfect now
                Thansk Elektroarzt and special thanks to you @TheMax74!!!

                Kommentar


                  Congrats 😉

                  Kommentar


                    I implemented WindowCovering (Homekit) and it works well. I copy/paste some code from your example for LightBulb -> function on/off - dimming. And I think I dont need the full code in this function because I only use absolute position with 0-100% for window covering. But when I delete the first part in the function it doesnt work anymore.Iam a totally noob in programming. So maybe someone can explain to me how to improve this code? Thank you very much!

                    This part:
                    [
                    "52de455f.0fcc7c"
                    ]
                    ]
                    },
                    {
                    "id": "52de455f.0fcc7c",
                    "type": "function",
                    "z": "e4ae5a9f.4596d8",
                    "name": "Überprüfe ob ON/OFF oder Dimmen",
                    "func": "// Überprüfe ob ON oder Dimmen\nif (msg.payload.On!==undefined) {\n if (Boolean(msg.payload.On)===true) {\n return [{payload:true},null];\n }\n else if (Boolean(msg.payload.On)===false)\n {\n return [{payload:false},null];\n }\n}else if (msg.payload.TargetPosition!==undefined)\n{\n return [null,{payload:msg.payload.TargetPosition}]; \n}\n",
                    "outputs": 2,
                    "noerr": 0,
                    "initialize": "",
                    "finalize": "",
                    "x": 1190,
                    "y": 180,
                    "wires": [
                    [],
                    [
                    "d57b6901.802d78"
                    ]
                    ],
                    "outputLabels": [
                    "Switch",
                    "Brightness"
                    ]

                    And here is my full code...
                    [
                    {
                    "id": "e4ae5a9f.4596d8",
                    "type": "tab",
                    "label": "Jalousien",
                    "disabled": false,
                    "info": ""
                    },
                    {
                    "id": "19ed9a41.5e4b66",
                    "type": "homekit-service",
                    "z": "e4ae5a9f.4596d8",
                    "isParent": true,
                    "bridge": "6182d5a4.3c886c",
                    "parentService": "",
                    "name": "Arbeitszimmer Rollladen",
                    "serviceName": "WindowCovering",
                    "topic": "",
                    "filter": false,
                    "manufacturer": "Default Manufacturer",
                    "model": "Default Model",
                    "serialNo": "Default Serial Number",
                    "firmwareRev": "",
                    "hardwareRev": "",
                    "softwareRev": "",
                    "cameraConfigVideoProcessor": "",
                    "cameraConfigSource": "",
                    "cameraConfigStillImageSource": "",
                    "cameraConfigMaxStreams": "",
                    "cameraConfigMaxWidth": "",
                    "cameraConfigMaxHeight": "",
                    "cameraConfigMaxFPS": "",
                    "cameraConfigMaxBitrate": "",
                    "cameraConfigVideoCodec": "",
                    "cameraConfigAudioCodec": "",
                    "cameraConfigAudio": false,
                    "cameraConfigPacketSize": "",
                    "cameraConfigVerticalFlip": false,
                    "cameraConfigHorizontalFlip": false,
                    "cameraConfigMapVideo": "",
                    "cameraConfigMapAudio": "",
                    "cameraConfigVideoFilter": "",
                    "cameraConfigAdditionalCommandLine": "",
                    "cameraConfigDebug": false,
                    "cameraConfigInterfaceName": "",
                    "characteristicProperties": "{ "TargetPosition": { "minStep":20 }, "TargetHorizontalTiltAngle": false, "TargetVerticalTiltAngle": false}",
                    "waitForSetupMsg": false,
                    "outputs": 2,
                    "x": 210,
                    "y": 300,
                    "wires": [
                    [
                    "d396d7ca.e9ea88"
                    ],
                    []
                    ]
                    },
                    {
                    "id": "ef099875.03d208",
                    "type": "knxUltimate",
                    "z": "e4ae5a9f.4596d8",
                    "server": "db15a516.948c58",
                    "topic": "3/3/15",
                    "outputtopic": "",
                    "dpt": "5.001",
                    "initialread": false,
                    "notifyreadrequest": false,
                    "notifyresponse": false,
                    "notifywrite": true,
                    "notifyreadrequestalsorespondtobus": false,
                    "notifyreadrequestalsorespondtobusdefaultvalue ifno tinitialized": "0",
                    "listenallga": false,
                    "name": "Arbeitszimmer Rollladen Absolute Position",
                    "outputtype": "write",
                    "outputRBE": false,
                    "inputRBE": false,
                    "formatmultiplyvalue": 1,
                    "formatnegativevalue": "leave",
                    "formatdecimalsvalue": 999,
                    "passthrough": "no",
                    "x": 1300,
                    "y": 300,
                    "wires": [
                    [
                    "e9d87d8b.f2e5e"
                    ]
                    ]
                    },
                    {
                    "id": "e9d87d8b.f2e5e",
                    "type": "function",
                    "z": "e4ae5a9f.4596d8",
                    "name": "Absolute Position 0-100",
                    "func": "// Absolute Position 0-100\nreturn {payload:{"TargetPosition":msg.payload}};",
                    "outputs": 1,
                    "noerr": 0,
                    "initialize": "",
                    "finalize": "",
                    "x": 1430,
                    "y": 440,
                    "wires": [
                    []
                    ]
                    },
                    {
                    "id": "d57b6901.802d78",
                    "type": "function",
                    "z": "e4ae5a9f.4596d8",
                    "name": "Filter null",
                    "func": "\nif (msg.payload!==undefined) {\n return msg;\n}",
                    "outputs": 1,
                    "noerr": 0,
                    "initialize": "",
                    "finalize": "",
                    "x": 880,
                    "y": 280,
                    "wires": [
                    [
                    "93c95158.cccc7"
                    ]
                    ]
                    },
                    {
                    "id": "d396d7ca.e9ea88",
                    "type": "function",
                    "z": "e4ae5a9f.4596d8",
                    "name": "Filter only commands coming from HAP",
                    "func": "// Filter only commands coming from homekit node\nif (msg.hap.context!==undefined) {\n // Die Nachricht kann durchkommen\n return msg;\n}else{\n // Die Nachricht darf nicht durchgehen\n}\n",
                    "outputs": 1,
                    "noerr": 0,
                    "initialize": "",
                    "finalize": "",
                    "x": 620,
                    "y": 120,
                    "wires": [
                    [
                    "52de455f.0fcc7c"
                    ]
                    ]
                    },
                    {
                    "id": "52de455f.0fcc7c",
                    "type": "function",
                    "z": "e4ae5a9f.4596d8",
                    "name": "Überprüfe ob ON/OFF oder Dimmen",
                    "func": "// Überprüfe ob ON oder Dimmen\nif (msg.payload.On!==undefined) {\n if (Boolean(msg.payload.On)===true) {\n return [{payload:true},null];\n }\n else if (Boolean(msg.payload.On)===false)\n {\n return [{payload:false},null];\n }\n}else if (msg.payload.TargetPosition!==undefined)\n{\n return [null,{payload:msg.payload.TargetPosition}]; \n}\n",
                    "outputs": 2,
                    "noerr": 0,
                    "initialize": "",
                    "finalize": "",
                    "x": 1190,
                    "y": 180,
                    "wires": [
                    [],
                    [
                    "d57b6901.802d78"
                    ]
                    ],
                    "outputLabels": [
                    "Switch",
                    "Brightness"
                    ]
                    },
                    {
                    "id": "149ffc47.23a814",
                    "type": "knxUltimate",
                    "z": "e4ae5a9f.4596d8",
                    "server": "db15a516.948c58",
                    "topic": "3/5/15",
                    "outputtopic": "",
                    "dpt": "5.001",
                    "initialread": false,
                    "notifyreadrequest": false,
                    "notifyresponse": false,
                    "notifywrite": true,
                    "notifyreadrequestalsorespondtobus": false,
                    "notifyreadrequestalsorespondtobusdefaultvalue ifno tinitialized": "0",
                    "listenallga": false,
                    "name": "Arbeitszimmer Rollladen Status aktuelle Position",
                    "outputtype": "write",
                    "outputRBE": false,
                    "inputRBE": false,
                    "formatmultiplyvalue": 1,
                    "formatnegativevalue": "leave",
                    "formatdecimalsvalue": 999,
                    "passthrough": "no",
                    "x": 220,
                    "y": 480,
                    "wires": [
                    [
                    "e6dd2230.d30c"
                    ]
                    ]
                    },
                    {
                    "id": "44bf9e4.26b216",
                    "type": "function",
                    "z": "e4ae5a9f.4596d8",
                    "name": "Current Position 0-100",
                    "func": "// Absolute Position 0-100\nreturn {payload:{"CurrentPosition":msg.payload}};",
                    "outputs": 1,
                    "noerr": 0,
                    "initialize": "",
                    "finalize": "",
                    "x": 760,
                    "y": 480,
                    "wires": [
                    [
                    "19ed9a41.5e4b66"
                    ]
                    ]
                    },
                    {
                    "id": "93c95158.cccc7",
                    "type": "range",
                    "z": "e4ae5a9f.4596d8",
                    "minin": "0",
                    "maxin": "100",
                    "minout": "100",
                    "maxout": "0",
                    "action": "scale",
                    "round": false,
                    "property": "payload",
                    "name": "100 - 0",
                    "x": 1030,
                    "y": 280,
                    "wires": [
                    [
                    "ef099875.03d208"
                    ]
                    ]
                    },
                    {
                    "id": "e6dd2230.d30c",
                    "type": "range",
                    "z": "e4ae5a9f.4596d8",
                    "minin": "0",
                    "maxin": "100",
                    "minout": "100",
                    "maxout": "0",
                    "action": "scale",
                    "round": false,
                    "property": "payload",
                    "name": "100 - 0",
                    "x": 530,
                    "y": 480,
                    "wires": [
                    [
                    "44bf9e4.26b216"
                    ]
                    ]
                    },
                    {
                    "id": "6182d5a4.3c886c",
                    "type": "homekit-bridge",
                    "z": "",
                    "bridgeName": "KNX",
                    "pinCode": "111-11-111",
                    "port": "",
                    "allowInsecureRequest": false,
                    "manufacturer": "NRCHKB",
                    "model": "1.2.0",
                    "serialNo": "Default Serial Number",
                    "firmwareRev": "1.2.0",
                    "hardwareRev": "1.2.0",
                    "softwareRev": "1.2.0",
                    "customMdnsConfig": false,
                    "mdnsMulticast": true,
                    "mdnsInterface": "",
                    "mdnsPort": "",
                    "mdnsIp": "",
                    "mdnsTtl": "",
                    "mdnsLoopback": true,
                    "mdnsReuseAddr": true,
                    "allowMessagePassthrough": true
                    },
                    {
                    "id": "db15a516.948c58",
                    "type": "knxUltimate-config",
                    "z": "",
                    "host": "192.168.",
                    "port": "3671",
                    "physAddr": "15.15.22",
                    "suppressACKRequest": false,
                    "csv": "",
                    "KNXEthInterface": "Auto",
                    "KNXEthInterfaceManuallyInput": "",
                    "statusDisplayLastUpdate": true,
                    "statusDisplayDeviceNameWhenALL": true,
                    "statusDisplayDataPoint": false,
                    "stopETSImportIfNoDatapoint": "stop",
                    "loglevel": "error",
                    "name": "KNX IP Interface Gateway",
                    "localEchoInTunneling": true,
                    "delaybetweentelegrams": "40",
                    "delaybetweentelegramsfurtherdelayREAD": "1"
                    }
                    ]

                    Kommentar


                      Hi Strobel
                      for whatever reason, pasting your code into the import window of Node-Red gives me an error.
                      Instead of "quoting" the code, use the
                      Code:
                      Code
                      button

                      Kommentar


                        Hello KNX Ultimate fellow users,

                        I currently struggle with implemeting kind of passive status reply with KNX Ultimate.
                        How can I implmenent that the node only sends out the payload to KNX upon a read request, not also on receiving the payload from the flow.
                        I tested around with various combinations of the settings, but nothing works out.

                        My application is a KNX2HUE and vice versa, with the goal to fully integrate my KNX-based light control with HUE, actually Lightify bulbs.
                        And I want the dimming values only being sent upon a read request, not upon every change.

                        Thanks
                        Bernd

                        Kommentar


                          bgumler Hi, set the knx-ultimate node to simply react to READ (Lesen) requests and set it also to output a RESPONSE telegram.
                          Very simple.
                          Please see here and adapt this sample to your needs. https://github.com/Supergiovane/node...Virtual-Device

                          Kommentar


                            Hello The Max,

                            I also though it to be this simple, but does not work out.
                            As soon as the KNX Node receives a payload it sents out a GroupValueResponse without a respective GroupValueRead on the bus before.
                            Code:
                            [{"id":"1d12ee6b.dc5212","type":"tab","label":"Hue Dev","disabled":false,"info":""},{"id":"720b08c7.a23b58","type":"hue-bridge-node","z":"1d12ee6b.dc5212","name":"","bridge":"6ce20f30.2998d8","autoupdates":true,"skipglobalevents":false,"x":620,"y":220,"wires":[[]]},{"id":"ee9011c8.fd6dd8","type":"hue-light","z":"1d12ee6b.dc5212","name":"G-App Bett R","bridge":"6ce20f30.2998d8","lightid":"1","colornamer":true,"skipevents":false,"x":940,"y":460,"wires":[["80630f42.ed529","9b2a509b.d4cee8","7dc1d9d7.74de8"]]},{"id":"80630f42.ed529","type":"debug","z":"1d12ee6b.dc5212","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1730,"y":540,"wires":[]},{"id":"b3cab223.8591f8","type":"knxUltimate","z":"1d12ee6b.dc5212","server":"8b6c4685.9d4b5","topic":"0/0/173","outputtopic":"","dpt":"1.001","initialread":false,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":360,"y":460,"wires":[["ee9011c8.fd6dd8"]]},{"id":"8655b695.9b1f6","type":"hue-group","z":"1d12ee6b.dc5212","name":"Garage","bridge":"6ce20f30.2998d8","groupid":"2","colornamer":true,"skipevents":false,"x":540,"y":880,"wires":[[]]},{"id":"edd6a1a1.9a2d5","type":"change","z":"1d12ee6b.dc5212","name":"KNX2HUE abs. dimming","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":560,"wires":[["ee9011c8.fd6dd8"]]},{"id":"b2937cd9.747f7","type":"inject","z":"1d12ee6b.dc5212","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":90,"y":460,"wires":[["b3cab223.8591f8"]]},{"id":"5524ccc5.f4722c","type":"inject","z":"1d12ee6b.dc5212","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":90,"y":520,"wires":[["b3cab223.8591f8"]]},{"id":"cad28731.024aa8","type":"knxUltimate","z":"1d12ee6b.dc5212","server":"8b6c4685.9d4b5","topic":"0/2/173","outputtopic":"","dpt":"5.001","initialread":false,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":360,"y":560,"wires":[["edd6a1a1.9a2d5"]]},{"id":"3f599e36.36d5f2","type":"knxUltimate","z":"1d12ee6b.dc5212","server":"8b6c4685.9d4b5","topic":"0/1/173","outputtopic":"","dpt":"1.001","initialread":false,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"","outputtype":"write","outputRBE":true,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":1450,"y":460,"wires":[[]]},{"id":"9b2a509b.d4cee8","type":"change","z":"1d12ee6b.dc5212","name":"HUE2KNX Switch Status","rules":[{"t":"move","p":"payload.on","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1210,"y":460,"wires":[["3f599e36.36d5f2"]]},{"id":"9e0a625f.71441","type":"knxUltimate","z":"1d12ee6b.dc5212","server":"8b6c4685.9d4b5","topic":"0/6/173","outputtopic":"","dpt":"5.001","initialread":false,"notifyreadrequest":true,"notifyresponse":false,"notifywrite":false,"notifyreadrequestalsorespondtobus":true,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"","outputtype":"response","outputRBE":true,"inputRBE":true,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":1490,"y":620,"wires":[["80630f42.ed529"]]},{"id":"7dc1d9d7.74de8","type":"change","z":"1d12ee6b.dc5212","name":"HUE2KNX Dim Value","rules":[{"t":"move","p":"payload.brightness","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1200,"y":560,"wires":[["9e0a625f.71441"]]},{"id":"5304de0f.92d548","type":"trigger","z":"1d12ee6b.dc5212","name":"","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":2,"x":710,"y":760,"wires":[[],[]]},{"id":"4598fbb9.9bf20c","type":"inject","z":"1d12ee6b.dc5212","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"56","payloadType":"num","x":1270,"y":720,"wires":[["9e0a625f.71441"]]},{"id":"6ce20f30.2998d8","type":"hue-bridge","z":"","name":"Philips hue","bridge":"192.168.2.47","key":"7STA50grBCvp7WVfsdpqYwI-Q15X7yutrnUwLk62","interval":"2000","disableupdates":false},{"id":"8b6c4685.9d4b5","type":"knxUltimate-config","z":"","host":"192.168.2.99","port":"3700","physAddr":"15.15.22","suppressACKRequest":false,"csv":"","KNXEthInterface":"Auto","KNXEthInterfaceManuallyInput":"","statusDisplayLastUpdate":true,"statusDisplayDeviceNameWhenALL":true,"statusDisplayDataPoint":true,"stopETSImportIfNoDatapoint":"skip","loglevel":"error","name":"Multicast KNX Gateway","localEchoInTunneling":true,"delaybetweentelegrams":"50","delaybetweentelegramsfurtherdelayREAD":"1"}]
                            ReadBug.PNG

                            Kommentar


                              Hello bgumler
                              Mmmm, maybe i've understood what you want.
                              You want to be able to simply update the knx-ultimate value using a msg.payload, without sending anything to the KNX bus?
                              I've correctly understood?

                              Kommentar


                                Hello,

                                yes correct. Just update the buffer to be sent out upon a read request. Node shall remain quite / passive at the moment of value/payload update.

                                KNX actors sometimes call this behaviour "passive status".

                                Regards
                                Bernd

                                Kommentar

                                Lädt...
                                X