{"id":41392480,"url":"https://github.com/theovassiliou/hc2-tools","last_synced_at":"2026-01-23T12:46:57.884Z","repository":{"id":46785802,"uuid":"219077816","full_name":"theovassiliou/hc2-tools","owner":"theovassiliou","description":"Command line tools to interact with a Fibaro HC2 system","archived":false,"fork":false,"pushed_at":"2022-01-30T20:53:39.000Z","size":123,"stargazers_count":2,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-19T15:16:42.448Z","etag":null,"topics":["cmdline","fibaro","fibaro-hc2","fibaro-home-center","golang"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theovassiliou.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}},"created_at":"2019-11-01T23:33:20.000Z","updated_at":"2023-02-05T21:09:36.000Z","dependencies_parsed_at":"2022-09-26T19:41:54.919Z","dependency_job_id":null,"html_url":"https://github.com/theovassiliou/hc2-tools","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/theovassiliou/hc2-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovassiliou%2Fhc2-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovassiliou%2Fhc2-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovassiliou%2Fhc2-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovassiliou%2Fhc2-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theovassiliou","download_url":"https://codeload.github.com/theovassiliou/hc2-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovassiliou%2Fhc2-tools/sbom","scorecard":{"id":879647,"data":{"date":"2025-08-11","repo":{"name":"github.com/theovassiliou/hc2-tools","commit":"d890ef1720121a572ee02044189b8e5d1e5d2aed"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/10 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.0.0 not signed: https://api.github.com/repos/theovassiliou/hc2-tools/releases/21162006","Warn: release artifact v1.0.0 does not have provenance: https://api.github.com/repos/theovassiliou/hc2-tools/releases/21162006"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T07:36:03.027Z","repository_id":46785802,"created_at":"2025-08-24T07:36:03.027Z","updated_at":"2025-08-24T07:36:03.027Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28692009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T11:01:27.039Z","status":"ssl_error","status_checked_at":"2026-01-23T11:00:26.909Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cmdline","fibaro","fibaro-hc2","fibaro-home-center","golang"],"created_at":"2026-01-23T12:46:56.209Z","updated_at":"2026-01-23T12:46:57.868Z","avatar_url":"https://github.com/theovassiliou.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hc2-tools\n\nhc2-tools, implemented in go (golang) provides tools to, upload, download and interact with scene on Fibaro HC2 system.\n\nThe design goal of the tools where to be easily integrable into IDEs like Visual Studio Code (VSC) or others, to enable comfortable Fibaro Lua script development, testing and deployment.\nWhile there can be very different applications on how to use the tools, [USAGE.md](USAGE.md) has examples on how the development workflow can be enhanced by using the hc2-tools.\n\nIt is in public beta; you are free to use it and improve it (do pull requests).\n\nWARNING: THIS SOFTWARE CAN'T BE ERROR FREE, SO USE IT AT YOUR OWN RISK. DON'T USE IT IF YOU HAVEN'T MADE AN ACTUAL BACKUP COPY OF YOUR FIBARO HC2 SYSTEM. IF YOU DO NOT HOW TO DO THIS, PLEASE RECONSIDER TO USE THIS SOFTWARE ANYWAY. I HAVE DONE MY BEST TO MAKE SURE THAT THE TOOLS BEHAVE AS EXPECTED. BUT AGAIN ... USE IT AT YOUR OWN RISK. I AM NOT GIVING ANY KIND OF WARRANTY, NEITHER EXPLICITELY NOR IMPLICITELY.\n\n## Installation binaries\n\nYou can download the binaries directly from the [releases](https://github.com/theovassiliou/hc2-tools/releases) section.  Unzip/untar the downloaded archive and copy the files to a location of your choice, e.g. `/usr/local/bin/` on *NIX or MacOS. If you install only the binaries, make sure that they are accessible from the command line. Ideally, they are accessible via `$PATH` or `%PATH%`, respectively.\n\n### Configuring your installation\n\nhc2-tools need access to your Fibaro HC2 system. You can configure and test your installation just by\n\n`hc2DownloadScene -u \u003cfibaroHc2Login\u003e -p \u003csecretPassword\u003e --url http://\u003cip.address.of.hc2\u003e -i -t`\n\nThis tests the connection to your Fibaro HC2 system and creates a config-file in `~/.hc2-tool/*` so that you do not have to reenter the information in subsequent to the hc2-tools calls.\nOf course, you have to replace `\u003cfibaroHc2Login\u003e` and `\u003csecretPassword\u003e` with your credentials, and `\u003cip.address.of.hc2\u003e` with the IP or DNS of your Fibaro HC2 system.\n\nTo test the successfull configuration just use\n\n`hc2DownloadScene -t` which should get you the same result as above. All h2-tools use the same configuration file, so you don't have to configure the individually. Actually you could perfom this configuration steps, with any of the tools.\n\nIf you would like to learn about more about the technology in the background take a look at [TECHNOLOGY.md](TECHNOLOGY.md).\n\n## Installation From Source\n\nhc2-tools requires golang version 1.13 or newer, the Makefile requires GNU make.\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.\n\n### Prerequisites\n\nThere is no particular requirement beyong the fact that you should have a working go installation.\n\n[Install Go](https://golang.org/doc/install) \u003e=1.13\n\n### Installing\n\nDownload hc2-tools source by running\n\n```shell\ngo get -u github.com/theovassiliou/hc2-tools\n```\n\nThis gets you your copy of hc2-tools installed under\n`$GOPATH/src/github.com/theovassiliou/hc2-tools`\n\nRun `make` from the source directory by running\n\n```shell\ncd $GOPATH/src/github.com/theovassiliou/hc2-tools\nmake all\n```\n\nto compile and build the three executables\n\n* hc2DownloadScene - [README](cmd/hc2DownloadScene/README.md)\n* hc2UploadScene - [README](cmd/hc2UploadScene/README.md)\n* hc2SceneInteraction - [README](cmd/hc2SceneInteraction/README.md)\n\nand run\n\n```shell\nmake go-install\n```\n\nto install a copy of the executables into `$GOPATH/bin`\n\nTo test whether build integrates with your Fibaro system use\n\n```shell\nhc2DownloadScene -u \u003cfibaroHc2Login\u003e -p \u003csecretPassword\u003e --url http://\u003cip.address.of.hc2\u003e -i -t\n\nSuccessfull connected to ...\n  Name         : Hal\n  Serial       : HC2-033533\n  IP           : \u003cip.address.of.hc2\u003e\n  Version      : 4.560\n  ZWaveVersion : 3.67\n\nand logged in as:\n  User:         \u003cfibaroHc2Login\u003e\n  Type:         superuser\n```\n\nThis tests the connection to your Fibaro HC2 system and `-i` creates a config-file in `~/.hc2-tool/*` so that you do not have to reenter the information in subsequent to the hc2-tools calls.\nOf course you have to replace `\u003cfibaroHc2Login\u003e` and `\u003csecretPassword\u003e` with your credentials, and `\u003cip.address.of.hc2\u003e` with the IP or DNS of your Fibaro HC2 system.\n\nTo test the successfull configuration just use\n\n`hc2DownloadScene -t` which should get you the same result as above.\n\nNow make your head-start by calling\n\n```shell\nhc2DownloadScene\n```\n\nwhich downloads all scripts on the Fibaro HC2 into the default created directory `./download/`\n\n## Running the tests\n\nWe are using to different make targets for running tests.\n\n```shell\nmake test\n\ngo test -short ./...\n?    github.com/theovassiliou/hc2-tools/cmd/expandRequire [no test files]\n?    github.com/theovassiliou/hc2-tools/cmd/hc2DownloadScene [no test files]\n?    github.com/theovassiliou/hc2-tools/cmd/hc2SceneInteract [no test files]\n?    github.com/theovassiliou/hc2-tools/cmd/hc2UploadScene [no test files]\nok   github.com/theovassiliou/hc2-tools/pkg 0.036s\n```\n\nexecutes all short package tests, while\n\n```shell\nmake test-all\ngo vet $(go list ./...)\ngo test ./...\n?    github.com/theovassiliou/hc2-tools/cmd/expandRequire [no test files]\n?    github.com/theovassiliou/hc2-tools/cmd/hc2DownloadScene [no test files]\n?    github.com/theovassiliou/hc2-tools/cmd/hc2SceneInteract [no test files]\n?    github.com/theovassiliou/hc2-tools/cmd/hc2UploadScene [no test files]\nok   github.com/theovassiliou/hc2-tools/pkg 0.036s\n```\n\nexecutes in addition `go vet`on the package. Before committing to the code base please use `make test-all` to ensure that all tests pass.\n\n### Break down into end to end tests\n\nAfter creating your configuration call `hc2DownloadScene` without `-u -p` parameters.\n\n```shell\nhc2DownloadScene -t\n\nSuccessful connected to ...\n  Name         : Hal\n  Serial       : HC2-033533\n  IP           : 192.10.66.55\n  Version      : 4.560\n  ZWaveVersion : 3.67\n\nand logged in as:\n  User:         specialuser@mydomain.com\n  Type:         superuser\n```\n\nto test whether command can execute correctly.\n\n## Deployment\n\nAfter running\n\n```shell\nmake install\n\ngo build -ldflags \" -X main.commit=99f909d -X main.branch=master\" ./cmd/hc2UploadScene\ngo build -ldflags \" -X main.commit=99f909d -X main.branch=master\" ./cmd/hc2DownloadScene\ngo build -ldflags \" -X main.commit=99f909d -X main.branch=master\" ./cmd/hc2SceneInteract\nmkdir -p /usr/local/bin/\ncp hc2UploadScene /usr/local/bin/\ncp hc2DownloadScene /usr/local/bin/\ncp hc2SceneInteract /usr/local/bin/\n```\n\nyou can find your executables in `/usr/local/bin`. Make sure `/usr/local/bin/` is in your path.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/theovassiliou/hc2-tools/tags).\n\n## Authors\n\n* **Theo Vassiliou** - *Initial work* - [Theo Vassiliou](https://github.com/theovassiliou)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\nThanks to all the people out there that produce amazing open-source software, which supported the creation of this piece of software. In particular I wasn't only able to use libraries etc. But also, to learn and understand golang better. In particular I wanted to thank\n\n* [Jaime Pillora](https://github.com/jpillora) for [jpillora/opts](https://github.com/jpillora/opts). Nice piece of work!\n* [InfluxData Team](https://github.com/influxdata) for [influxdata/telegraf](https://github.com/influxdata/telegraf). Here I learned a lot for Makefile writing and release building in particular.\n* Inspiration and motivation to develop this tool I got from the [ZeroBrane](https://studio.zerobrane.com/) Lua Development Environment.\n* [PurpleBooth](https://gist.github.com/PurpleBooth) for the well motivated [README-template](https://gist.github.com/PurpleBooth/109311bb0361f32d87a2)\n\n***\n\n## History\n\nThis project has been developed as I was seeking for a way to upload scenes from my favorite development Lua development environment to the Fibaro HC2 system. Finally I came up with the idea to upload a scene whenever I do a `git commit`. For this I needed a cmd line tool can be integrated as `commithook` into the git repository.\n\nWith this I could solve two problems at a single time.\n\n1. Enforcing a version control system, e.g. git\n2. Automatically uploading the modified script\n\nAfter implementing a first version, new ideas emerged, so for example retrieving debug messages where implemented.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheovassiliou%2Fhc2-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheovassiliou%2Fhc2-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheovassiliou%2Fhc2-tools/lists"}