{"id":24320952,"url":"https://github.com/openconcerto/zwave-java-toolbox","last_synced_at":"2026-04-18T08:33:08.954Z","repository":{"id":181305272,"uuid":"666466385","full_name":"openconcerto/zwave-java-toolbox","owner":"openconcerto","description":"Java library and tools to control Z-Wave devices via a USB Z-Wave Controller. A MQTT bridge compatible with Home Assistant is provided. Silicon Labs ZW0700 series chip are supported (Z-Stick 7 from Aeotec).","archived":false,"fork":false,"pushed_at":"2023-07-25T14:33:04.000Z","size":2620,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T00:49:50.132Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openconcerto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-14T15:34:06.000Z","updated_at":"2023-08-06T21:00:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"08fbca3a-1703-40dd-951d-0e6ce18f14f3","html_url":"https://github.com/openconcerto/zwave-java-toolbox","commit_stats":null,"previous_names":["openconcerto/zwave-java-toolbox"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/openconcerto/zwave-java-toolbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconcerto%2Fzwave-java-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconcerto%2Fzwave-java-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconcerto%2Fzwave-java-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconcerto%2Fzwave-java-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openconcerto","download_url":"https://codeload.github.com/openconcerto/zwave-java-toolbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconcerto%2Fzwave-java-toolbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31962176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-17T16:30:25.248Z","updated_at":"2026-04-18T08:33:08.935Z","avatar_url":"https://github.com/openconcerto.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zwave-java-toolbox\nJava library and tools to control Z-Wave devices via a USB Z-Wave Controller.\n\nA MQTT bridge compatible with [Home Assistant](https://www.home-assistant.io/) is provided. Unlike [\nZ-Wave JS](https://github.com/zwave-js), it is much more simple to use and **stable**.\n\nThe code is compatible with Silicon Labs ZW0700 series chip  (Z-Stick 7 from Aeotec, 7.19 firmware) and requires Java 8 or newer.\n\n\n## The MQTT Z-Wave bridge\nThe MQTT bridge provided will expose Z-Wave switches as 2 topics.\n\n**zwavebridge/node_3/switch/state** for the state of the switch on node 3\n\n**zwavebridge/node_3/switch/set** to toggle ON or OFF the switch on node 3\n\nHome Assistant auto-discovery is published as :\n**homeassistant/switch/zwavebridge/node_zwavebridge_3/config**\n\n**Usage** :\n```\nMQTTBridge for Z-Wave\n\nUsage : java -jar zwave-mqqt.jar [OPTIONS] SERIAL_PORT BROKER_URL\n\nMQTT broker url can be tcp://HOST:PORT or ssl://HOST:PORT\n\nOptions\n--verbose            increase verbosity\n--password=PASSWORD  broker password\n\nExamples\nWindows : java -jar zwave-mqqt.jar COM5 tcp://192.168.1.8:1883\nLinux :   java -jar zwave-mqqt.jar /dev/ttyUSB0 tcp://192.168.1.8:1883\n```\nIn the case of using a Z-Wave controller on serial port COM5 with a [Mosquitto](https://mosquitto.org/) MQTT broker installed on a server 192.168.1.8 :\n```\njava -jar zwave-mqqt.jar COM5 tcp://192.168.1.8:1883\n```\nThe bridge is a single class program, it's easy to tweak it for your needs.\n\n\n## The Z-Wave simple toolbox\nAs example of use of the libray, we provide a minimalistic tool to get and set values.\n\nWith a Z-Wave USB key connected as COM5, you can run the toolbox to list your devices using\n```\njava -jar zwave-toolbox.jar COM5\n```\n\n**Usage :**\n```\nZ-Wave tools\n\nUsage : java -jar zwave-toolbox.jar [OPTIONS] SERIAL_PORT\n\nOptions\n--listen            do not exit and print received Z-Wave messages\n--log-file=FILE     log all the messages in a file\n--get-NODEID            basic get on node NODEID\n--set-NODEID=VALUE      basic set VALUE on node NODEID\n\nExamples\nWindows : java -jar zwave-mqqt.jar COM5\n          java -jar zwave-mqqt.jar COM5 --get-3\nLinux :   java -jar zwave-toolbox.jar /dev/ttyUSB0 \n```\n\n\n## The Java API\nSee **ZWaveSerialAPI** for implemented features.\nAll you to need to send and receive commands is implemented.\n\nZ-Wave \"magic constants\" are provided in **ZWaveValues**.\n\nTo build your own jar, see **JarPackager**. For development, all you need is included, [Eclipse](https://eclipse.org) configuration files are provided.\n\n\n## Useful links and resources\n\n* [Z-Wave PC Controller 5.54 for Windows](https://code.organic/pc_controller-5.54.zip) : to configure your devices and update the firmware \n* [Z-Wave Zniffer for Windows](https://code.organic/zniffer-4.64.zip) : to display logs of Z-Wave communication done with Z-Wave PC Controller\n* [Serial API programming guide](https://code.organic/INS12350.pdf)  version 23 : partial but useful to understant the serial API\n* [Firmware 7.19.2 for Aeotec Z-Stick 7](https://code.organic/zwave_ncp_serial_api_controller_BRD4206A_7.19.2.gbl) : use Z-Wave PC Controller / Settings / OTW Firmware Update\n\n## Contributing\n\nFeel free to report bugs on the Issues topic. Code contribution are welcome.\n\nThings that could be interesting to add :\n\n* add / remove nodes\n* firmware update\n* backup/restore of the USB controller\n\n\n## History\nAfter years using Fibaro products, I had to replace my Home Center because of a broken update. The recovery key didn't work, I had to find a reliable alternative.\n\nThe Home Center is using a watchdog I was not able to disable, I built my own linux box with a USB Z-Wave controller (Z-Stick 7 from Aeotec), with open source code only in order to avoid previous issues. I tested a lot of platform, the best were [OpenHAL](https://www.openhab.org/) and [Home Assistant](https://www.home-assistant.io/).\n\nTechnically they are badly written and the UI is a mess. Do we really need thousands of line of code, hundred of dependencies for an automation system? Of course, not.\nIt's funny to see that openHAL is using technologies for (big) cloud services for home automation...\n\nSo... seeing that openHAL Z-Wave was only working with old controllers, I switched to Home Assistant... which required a MQTT broker and a third party bridge to Z-Wave ([zwave-js](https://github.com/zwave-js)). What an efficient way to send and receive less than a hundred of bytes to a serial port!\n\nUnfortunately, it was not reliable, [zwave-js](https://github.com/zwave-js) randomly declared some nodes as \"dead\". A lot of users have this problem, every answers pointed to an harware bug. I decided to investigate.\n\nSome hundreds line of code later, it was clear that **the hardware was working well, it was just software bugs**.\nThe Z-Wave MQTT bridge I wrote is **running for months without a single failure**.\n\nIt's difficult to blame the team of zwave-js and openHAL, even if technical choices are bad, the Z-Wave protocol is not open, it's difficult to obtain documentation.\nWhat's more, the Z-Wave protocol has a lot of revisions, thousands of magic values. The protocol is not simple (by design). \n\nSilicon Labs, the company behind the serial protocol is not very cooperative.\nTo upgrade the USB controler or control it with a basic GUI requires to create an account and to download [Simplicity Studio](https://www.silabs.com/developers/simplicity-studio).\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenconcerto%2Fzwave-java-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenconcerto%2Fzwave-java-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenconcerto%2Fzwave-java-toolbox/lists"}