Open MDAR opened 3 years ago
Hi MDAR,
I had a look at your nodes but can't see an issue there. It probably does not work because the VMB4DC might define its channels in a different way than other modules are doing. In code, I just took the algorithm I already created for other modules, assuming it would also work here. So I have to dig into the specific module protocol to find the bug. Can't promise when I can do that, to be honest. I hope you understand.
Cheers Gert
Hi @gertst
It's not that the node doesn't work, it's that it won't allow anything other than Channel 1 to be selected.
The channel drop down shows 16 channels, but only channel 1 can be selected.
(Sorry if I didn't explain that clearly before)
There's no great rush to address this, I can use a TCP node if I need to, using your nodes would make it much nicer.
Thanks a million, Stuart
The channel drop down shows 16 channels, but only channel 1 can be selected.
Strange, I can change that dropdown to whatever channel I want. But of course I don't know if it works; I don't have that module.
That's odd.
All I get is a grey drop down, that doesn't let me select anything other than Channel 1
If it helps, I've ended up with Node-RED V1.1.3
I'll try a different machine
Update
I've tried another machine which is running Node-RED 1.2.9
This only allows me to select channel 1 too
If it helps, the VMB4DC modules are all running firmware version 2048
The channel drop down shows 16 channels, but only channel 1 can be selected.
Strange, I can change that dropdown to whatever channel I want. But of course I don't know if it works; I don't have that module.
Would you like to remotely connect to a test unit here?
Ok, that's because you selected a module address from the dropdown, and because my code wrongly assumes there's only one channel, it won't let you choose another channel. But you can bypass this restriction by choosing "Manual" for address and type in your address manually (0xD0)
I hope this helps?
Ok, that's because you selected a module address from the dropdown, and because my code wrongly assumes there's only one channel, it won't let you choose another channel. But you can bypass this restriction by choosing "Manual" for address and type in your address manually (0xD0)
I hope this helps?
Arrrr Right !!! 😃
Yes entering a manual base address DOES allow me to select a different channel and it DOES work !!!! 😃
I'll leave this issue open for you to close when you are ready.
Thanks for your help
Hi Gert
Just an update.
I've been playing with colour pickers on Node-RED so needed to get a VMB4DC working properly.
I see that the channel numbers don't correspond to the actual channels, but rather they refer to the DEC version of the Binary Bit allocation.
So No 4 is actually Channel 3
and No 8 is actually Channel 4
Just like relay channels and buttons, it's possible to set 2 channels with 1 command.
So choosing No 3 sets Channels 1 & 2 of the VMB4DC
As always, you are very welcome to remotely connect to a demo rig to experiment
[
{
"id": "7a1bfed2.2493a",
"type": "tab",
"label": "Flow 1",
"disabled": false,
"info": ""
},
{
"id": "c19468ad.aa3678",
"type": "velbus-dimmer",
"z": "7a1bfed2.2493a",
"name": "Model LED RED",
"connector": "956ea909.aa3978",
"commands": 0,
"commandsType": "PAYLOAD",
"address": "",
"addressType": "187",
"channel": 1,
"x": 1620,
"y": 180,
"wires": [
[]
]
},
{
"id": "a087ecf3.f46ca",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "100",
"payloadType": "num",
"x": 1360,
"y": 120,
"wires": [
[
"c19468ad.aa3678"
]
]
},
{
"id": "e1c503ca.65e0c",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "50",
"payloadType": "num",
"x": 1350,
"y": 180,
"wires": [
[
"c19468ad.aa3678"
]
]
},
{
"id": "ea000ffa.5ba48",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "0",
"payloadType": "num",
"x": 1350,
"y": 240,
"wires": [
[
"c19468ad.aa3678"
]
]
},
{
"id": "7bc84c18.54ab54",
"type": "velbus-dimmer",
"z": "7a1bfed2.2493a",
"name": "Model LED Green",
"connector": "956ea909.aa3978",
"commands": 0,
"commandsType": "PAYLOAD",
"address": "0xBB",
"addressType": "MANUAL",
"channel": "2",
"x": 1630,
"y": 420,
"wires": [
[]
]
},
{
"id": "27cbec8e.d1cd34",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "100",
"payloadType": "num",
"x": 1350,
"y": 360,
"wires": [
[
"7bc84c18.54ab54"
]
]
},
{
"id": "3e00a2c4.c857fe",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "50",
"payloadType": "num",
"x": 1350,
"y": 420,
"wires": [
[
"7bc84c18.54ab54"
]
]
},
{
"id": "e5a6e5b1.bf7428",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "0",
"payloadType": "num",
"x": 1350,
"y": 480,
"wires": [
[
"7bc84c18.54ab54"
]
]
},
{
"id": "f59f4310.dd7e5",
"type": "velbus-dimmer",
"z": "7a1bfed2.2493a",
"name": "Model LED Blue",
"connector": "956ea909.aa3978",
"commands": 0,
"commandsType": "PAYLOAD",
"address": "0xBB",
"addressType": "MANUAL",
"channel": "4",
"x": 1620,
"y": 640,
"wires": [
[]
]
},
{
"id": "dad22595.fc43f8",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "100",
"payloadType": "num",
"x": 1340,
"y": 560,
"wires": [
[
"f59f4310.dd7e5"
]
]
},
{
"id": "b25f753a.71a8d8",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "50",
"payloadType": "num",
"x": 1350,
"y": 620,
"wires": [
[
"f59f4310.dd7e5"
]
]
},
{
"id": "7e0eb42d.89931c",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "0",
"payloadType": "num",
"x": 1350,
"y": 680,
"wires": [
[
"f59f4310.dd7e5"
]
]
},
{
"id": "7aa2f808.050398",
"type": "velbus-dimmer",
"z": "7a1bfed2.2493a",
"name": "Model LED White",
"connector": "956ea909.aa3978",
"commands": 0,
"commandsType": "PAYLOAD",
"address": "0xBB",
"addressType": "MANUAL",
"channel": "8",
"x": 1630,
"y": 900,
"wires": [
[
"d009902d.f0488",
"12bbe28b.df7acd"
]
]
},
{
"id": "ccb6c370.3b1ef",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "100",
"payloadType": "num",
"x": 1340,
"y": 820,
"wires": [
[
"7aa2f808.050398"
]
]
},
{
"id": "a18c122f.8f58b",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "50",
"payloadType": "num",
"x": 1350,
"y": 880,
"wires": [
[
"7aa2f808.050398"
]
]
},
{
"id": "a279c79e.e3c718",
"type": "inject",
"z": "7a1bfed2.2493a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "0",
"payloadType": "num",
"x": 1350,
"y": 940,
"wires": [
[
"7aa2f808.050398"
]
]
},
{
"id": "ab64a721.b380f8",
"type": "ui_colour_picker",
"z": "7a1bfed2.2493a",
"name": "",
"label": "Colour Picking",
"group": "986a51e1.932a4",
"format": "hex",
"outformat": "string",
"showSwatch": true,
"showPicker": false,
"showValue": false,
"showHue": false,
"showAlpha": false,
"showLightness": true,
"square": "false",
"dynOutput": "false",
"order": 0,
"width": 0,
"height": 0,
"passthru": false,
"topic": "topic",
"topicType": "msg",
"x": 580,
"y": 420,
"wires": [
[
"259cf9d2.333a56",
"ef604ba8.6dbe28"
]
]
},
{
"id": "259cf9d2.333a56",
"type": "debug",
"z": "7a1bfed2.2493a",
"name": "",
"active": true,
"tosidebar": false,
"console": false,
"tostatus": true,
"complete": "payload",
"targetType": "msg",
"statusVal": "payload",
"statusType": "auto",
"x": 610,
"y": 340,
"wires": []
},
{
"id": "ef604ba8.6dbe28",
"type": "color-convert",
"z": "7a1bfed2.2493a",
"input": "hex",
"output": "rgb",
"outputType": "array",
"scaleInput": false,
"x": 830,
"y": 420,
"wires": [
[
"48695c46.37d804",
"7a1973b7.55d46c"
]
]
},
{
"id": "48695c46.37d804",
"type": "debug",
"z": "7a1bfed2.2493a",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "msg",
"x": 890,
"y": 340,
"wires": []
},
{
"id": "7a1973b7.55d46c",
"type": "function",
"z": "7a1bfed2.2493a",
"name": "",
"func": "\n\n// msg.payload.red={payload : (msg.payload[0] /255) *100 };\n// msg.payload.green={payload :(msg.payload[1] /255) *100 };\n// msg.payload.blue={payload : (msg.payload[1] /255) *100 };\nif (msg.topic === \"White\") {\n return [{payload :0},{payload :0},{payload :0},msg];\n}\nelse {\n \n\n\nreturn [{payload: (msg.payload[0]/255) * 100},{payload: (msg.payload[1]/255) * 100},{payload: (msg.payload[2]/255) * 100},{payload :0}];\n}\n\nreturn [null,null,null,null];",
"outputs": 4,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1040,
"y": 420,
"wires": [
[
"787beaa0.28e0d4",
"c19468ad.aa3678"
],
[
"7bc84c18.54ab54"
],
[
"f59f4310.dd7e5"
],
[
"7aa2f808.050398",
"86ba179c.8d5758"
]
]
},
{
"id": "787beaa0.28e0d4",
"type": "debug",
"z": "7a1bfed2.2493a",
"name": "",
"active": true,
"tosidebar": false,
"console": false,
"tostatus": true,
"complete": "payload",
"targetType": "msg",
"statusVal": "payload",
"statusType": "auto",
"x": 1170,
"y": 200,
"wires": []
},
{
"id": "d009902d.f0488",
"type": "debug",
"z": "7a1bfed2.2493a",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "msg",
"x": 1850,
"y": 900,
"wires": []
},
{
"id": "12bbe28b.df7acd",
"type": "ui_slider",
"z": "7a1bfed2.2493a",
"name": "",
"label": "White",
"tooltip": "",
"group": "986a51e1.932a4",
"order": 1,
"width": 0,
"height": 0,
"passthru": false,
"outs": "end",
"topic": "topic",
"topicType": "msg",
"min": 0,
"max": "100",
"step": 1,
"x": 780,
"y": 660,
"wires": [
[
"b86afc54.83b14",
"237a7f7b.c8f9c"
]
]
},
{
"id": "b86afc54.83b14",
"type": "change",
"z": "7a1bfed2.2493a",
"name": "Set White",
"rules": [
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "White",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 950,
"y": 660,
"wires": [
[
"7a1973b7.55d46c"
]
]
},
{
"id": "86ba179c.8d5758",
"type": "debug",
"z": "7a1bfed2.2493a",
"name": "",
"active": true,
"tosidebar": false,
"console": false,
"tostatus": true,
"complete": "payload",
"targetType": "msg",
"statusVal": "payload",
"statusType": "auto",
"x": 1166,
"y": 591,
"wires": []
},
{
"id": "237a7f7b.c8f9c",
"type": "change",
"z": "7a1bfed2.2493a",
"name": "Set to OFF",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "000000",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 560,
"y": 600,
"wires": [
[
"ab64a721.b380f8"
]
]
},
{
"id": "956ea909.aa3978",
"type": "velbus-connector",
"ip": "127.0.0.1",
"port": "6000"
},
{
"id": "986a51e1.932a4",
"type": "ui_group",
"name": "Velbus Direct Test",
"tab": "31d0b02.52f755",
"order": 1,
"disp": true,
"width": "6",
"collapse": true
},
{
"id": "31d0b02.52f755",
"type": "ui_tab",
"name": "Velbus",
"icon": "dashboard",
"disabled": false,
"hidden": false
}
]
Ok, thanks for the info - binary bit is probably the issue: I did not implement that. I hope to find some time to fix this. Pull requests with fixes are very welcome, as I probably will not work that frequently anymore on this module: I'm moving out of our "Velbus home" and will move to a "Loxone home" in the near future ;-)
Hi
Okay, I understand the situation.
Unfortunately, I'm not comfortable with any coding, so it will have to wait until someone else clones your repository then.
But at least we've documented the situation.
I'm moving out of our "Velbus home" and will move to a "Loxone home" in the near future
Is it your choice to install Loxone, or are you moving to a property where it is installed already?
Being a Velbus user for more than 13 years, I must say I'm quite happy with Velbus - I love the community and I like the design of the edge-lit buttons a lot. It's also a stable system: never failed in those +13 years!
But I feel like that Velleman wasted way too much time to connect to other open solutions and. I know there are open source initiatives but a first party solution or API is still not ready, after all those years. That's were Loxone has a benefit I think. Although they are getting more closed the last years, they always had and still have several solutions to integrate with other standards like KNX, DMX, http/UDP, ... I also like their mission of creating a building that knows what to do on its own. In my humble opinion, Velbus lacks a bit the vision on how a modern home automation should focus on automation - not (only) on buttons. So that's why I will switch to Loxone in our new property.
Being said that, I know for sure that, in the end, it's up to us - users / builders to make it our own, and Velbus is flexible enough to do that. I sure don't want to give the impression that Velbus is any good and Loxone is better. May be the grass looks greener over there ... Only time will tell ;)
What an excellent summary.
As it happens, I agree with most of it.
If.... Something like Control4 (software) was compatible with Velbus, would that be enough to keep the infrastructure as Velbus in your new home?
I don't know Control4 so I don't know. An API to connect all Velbus modules using MQTT, out of the box, as a reliable, well maintained, first party product from Velbus, would be a huge difference and may be enough reason for me to keep using Velbus. Even a decent REST API would already make a huge deal for me.
Hi
Control4 seems to be the high end software platform that installers chose. Thee are a number of add-ons that can be purchased that expand the functionality.
We are in the process of getting a Velbus add-on written for Control4 so that these installers can use the Velbus hardware. The feedback we have had so far is that the installers would really like to use Velbus hardware, but ONLY if they can continue using the software platform that is compatible with all the other other hardware they use.
Even a decent REST API would already make a huge deal for me.
As I'm sure you are aware, that is almost impossible without some kind of human interaction, if only because how would a bit of software ever know if a relay was operating a heating zone, a door opener or a light.
OpenHAB does offer a REST api.
Your Node-RED nodes are great for linking to Velbus.
It all comes down to time and effort VS cash return.
Right now, I know that we have been rejected from over 10 projects in 2021 already, just because of the lack of Control4 support.
I think I may have resolved the VMB4DC dimmer channel > 1 issue. The .connection was being reset in the init of velbus-dimmer. I have changed the code to be the same as velbus-relay and seems to work. Shall put up a pull request soon.
@gertst
Hey Gert
I've been asked to delivery a solution that makes use of your Velbus nodes.
Could you take a look at the VMB4DC config please?
It seems that it will only allow me to use channel 1, of which the VMB4DC has 4
I've had a look at const.js and that does suggest that the VMB4DC supports 4 channels
{type: 0x12, name: "VMB4DC", nrOfButtons: 0, nrOfRelays: 0, nrOfDimmers: 4, hasTemperatureSensor: false, requestNameBinary: false},