Ignition/MQTT/zwavejs2mqtt

Hello all,
New user to Ignition, and starting a project involving zwave smart home devices, a zwave USB controller, and zwavejs2mqtt software to connect the zwave devices to a mqtt broker.

I have Ignition Maker installed with the 3rd party MQTT Distributor, Engine, and Transmitter installed.

I have been able to configure the zwavejs2mqtt to publish data from my zwave device to the MQTT Distributor (broker), and the MQTT Engine module to subscribe to that data and display it under a folder created by a custom namespace, located under the MQTT Engine tag provider.

I'm sure that I am missing all sorts of steps to be able to better organize the data, which I'm sure I will learn as I move forward, but my first big issue is that I am unsure how to configure everything to be able to modify those tags for my zwave device. They are created as read only tags, and if I edit the tag for the targetValue for my smart switch, and try to change from true to false or vice versa, I get an error "Error writing to targetValue.value: Bad_ReadOnly".

I appreciate any help you guys may have, and please be patient as I am new to Igntion, MQTT, and anything smart home related. I am a controls engineer working primarily with Allen Bradley PLCs, various VFD's, EthernetIP devices, but am very inexperienced in this realm. I am excited to learn, especially since my work is starting to use Ignition communicating with AB PLCs OPC tags for our HMI/SCADA system, and wish to use this to make my own smart home system.

Thank you again and look forward to learning!

Taylor

I would start by using a tool like MQTT Explorer to see if you can use the same login account you're using with Ignition, to see if you can even write to the topics with it. If you can't write to it from there, then the issue lies with your MQTT broker permissions.

You might be experiencing this bug:

So upon some more research, I found a few places that said that the cirrus link module does not publish to the MQTT broker upon tag value change when a custom namespace is used. The zwave devices don't appear to be Sparkplug compatible.
That being said, it also appears that there is a topic below the targetValue topic named "set". So using the Cirrus Link publish script to publish to that topic, I am able to control the device through Ignition with a script expression attached to the button.

deon.korb, I will look into the bug you referenced, I had not seen that "make created tags writable" under the custom namespace configuration. That did "allow" me to edit tags, but since apparently the topic of /set below the target value is what needs the payload of true or false to change state of the device, the setting of making tags writable makes no difference. Perhaps this will become relevant with other zwave devices in the future.

michael.flagler, I did find the software of MQTT Explorer and utilized that to initially publish the payload to /set, it appears to be something that will come in handy!

I am excited though to make this step forward of controlling my device! I suppose I will have to do some learning about what topics a zwave device generally has, and if they are "standardized" to the point that I can develop objects within Ignition that allow me to pass the simple parameter of the device name to it and have it function for what I need.

I have a little experience with scripting such as vb.net and a little python, but looks like I should expand my horizons with python to use in Ignition!

Thanks,
Taylor

1 Like