For me, I already had the Zwave stick because I had to update firmware in the past and Smartthings couldn’t do that. I tried to stick with Smarthings but someone on their forum basically convinced me that the latency of controlling zigbee and zwave using a cloud based system to a local based system like Home Assistant didn’t make sense. At that point, I had already moved all automations off webcore to Node Red and Home Assistant as well so the Smarrthings hub was a glorified Zigbee/Zwave stick. But, if you don’t already have the two sticks and have both zwave/zigbee, its definitely an added cost to consider before completely making the switch so I definitely get that.
The new ZwaveJS integration (which is a HUGE improvement and one of the reasons I fully switched) can be configured to use websockets or MQTT. I’m configured with the websockets, and a lot more things on Home Assistant are transitioning to websockets vs MQTT. My Zigbee does use MQTT and I haven’t had any issues. People seem to love or hate MQTT, but I’m still thinking local MQTT will definitely outperform a cloud based system. But you’re definitely right on the learning curve, it is huge for Home Assistant for any new user.
I think that’s the way to go. You can either create flow variables in Node Red for each device, or create an input boolean in home assistant that toggles on or off to keep track of its state.
[{"id":"84f07b234a519992","type":"http in","z":"f57ef424.8dce68","name":"Receive Webhook","url":"/endpoint/createsomethingrandomhere988788","method":"post","upload":false,"swaggerDoc":"","x":170,"y":1560,"wires":[["294dfd466d2cd91f","e7fe277816f3fcb6"]]},{"id":"e7fe277816f3fcb6","type":"api-call-service","z":"f57ef424.8dce68","name":"Change Boolean","server":"ae531ce.a39906","version":3,"debugenabled":false,"service_domain":"input_boolean","service":"turn_on","entityId":"input_boolean.something","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":390,"y":1520,"wires":[[]]},{"id":"294dfd466d2cd91f","type":"template","z":"f57ef424.8dce68","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n <head></head>\n <body>\n <h1>Message Received</h1>\n </body>\n</html>","x":350,"y":1580,"wires":[["5462c8a74730cde0"]]},{"id":"5462c8a74730cde0","type":"http response","z":"f57ef424.8dce68","name":"","statusCode":"","headers":{},"x":490,"y":1580,"wires":[]},{"id":"ae531ce.a39906","type":"server","name":"Home Assistant","version":1,"legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
To create the input boolean in Home Assistant (basically a virtual switch) go to configuration, helpers, click “add helper”, then click toggle and create a name for the input boolean. That boolean would then be selectable as an entity in Node Red.