{"id":36535032,"url":"https://github.com/mlipscombe/boiler-mate","last_synced_at":"2026-01-12T03:11:51.260Z","repository":{"id":65195315,"uuid":"422877485","full_name":"mlipscombe/boiler-mate","owner":"mlipscombe","description":"MQTT bridge for NBE V7/10/13 pellet boiler controllers.","archived":false,"fork":false,"pushed_at":"2025-11-15T19:19:12.000Z","size":15767,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-15T19:28:53.153Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlipscombe.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-10-30T12:40:11.000Z","updated_at":"2025-11-15T19:19:16.000Z","dependencies_parsed_at":"2024-06-21T09:56:01.470Z","dependency_job_id":null,"html_url":"https://github.com/mlipscombe/boiler-mate","commit_stats":{"total_commits":18,"total_committers":1,"mean_commits":18.0,"dds":0.0,"last_synced_commit":"a6efb8b5c100e7e4b69a2ff3ec50fcc1e2fa02fc"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/mlipscombe/boiler-mate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlipscombe%2Fboiler-mate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlipscombe%2Fboiler-mate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlipscombe%2Fboiler-mate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlipscombe%2Fboiler-mate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlipscombe","download_url":"https://codeload.github.com/mlipscombe/boiler-mate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlipscombe%2Fboiler-mate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28333071,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"online","status_checked_at":"2026-01-12T02:00:08.677Z","response_time":98,"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":"2026-01-12T03:11:50.583Z","updated_at":"2026-01-12T03:11:51.253Z","avatar_url":"https://github.com/mlipscombe.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# boiler-mate\n\nboiler-mate acts as a simple MQTT bridge from wood pellet boilers compatible with\nNBE V7/10/13 controllers, used by various manufacturers.\n\n## Supported Boilers\n\nAny boiler with a controller that is managed through [https://stokercloud.dk]\nshould be compatible as long as it has the correct firmware firmware installed.\n\nPossibly compatible manufacturers/models include:\n\n- NBE Blackstar\n- NBE RTB\n- Kedel\n- Opop\n\n## Controller Firmware\n\nIf your boiler has a V7 or V10 controller, you need the firmware version that\nremoves the user interface on the touch screen, but enables access on the local\nnetwork.\n\nTo upgrade, go to [https://www.nbe.dk/program-download/] and select \"Activate Controller\nfor App Operation\" and follow the steps.\n\n## How to Run\n\nSynopsis:\n\n```\n    Usage of boiler-mate:\n        --debug\n            debug mode\n        --bind string\n            address to bind for healthz and prometheus metrics endpoint, or \"false\"\n            to disable (default \"0.0.0.0:2112\")\n        --controller string\n            controller URI, in the format tcp://\u003cserial\u003e:\u003cpassword\u003e@\u003chost\u003e:\u003cport\u003e\n        --mqtt string\n            MQTT URI, in the format mqtt[s]://[\u003cuser\u003e:\u003cpassword\u003e]@\u003chost\u003e:\u003cport\u003e[/\u003cprefix\u003e][?tls_cert=\u003ccert_file\u003e][\u0026tls_key=\u003ckey_file\u003e][\u0026tls_ca=\u003cca_file\u003e]\n            (default \"mqtt://localhost:1883\")\n```\n\nExample:\n\n```\n    # Run with basic options\n    boiler-mate --host udp://3629:0587451614@192.168.1.100:8483 --mqtt mqtt://10.10.11.20:1883\n\n    # Run with TLS\n    boiler-mate --host udp://3629:0587451614@192.168.1.100:8483 --mqtt mqtts://10.10.11.20:8883\n\n    # Run with mutual TLS\n    boiler-mate --host udp://3629:0587451614@192.168.1.100:8483 --mqtt mqtts://10.10.11.20:8883?tls_cert=client.crt\u0026tls_key=client.key\n```\n\nEach command-line option can also be specified by an equivilent environment\nvariable, prefixed with `BOILER_MATE_`. For example, to set the MQTT URI to\n`mqtt://mqtt:1833`, you can set the environment variable `BOILER_MATE_MQTT=mqtt://mqtt:1833`.\n\nThe boiler's password is required to write settings, but not to read them. You can\nfind controller's serial number and password in the top right corner of the display\non the unit.\n\nIf an MQTT prefix is not specified, messages will be published to the `nbe/\u003cserial\u003e`\ntopic.\n\n## Development\n\n### Building from Source\n\n```bash\n# Build binary\ngo build -o boiler-mate ./cmd/boiler-mate\n\n# Or use Make\nmake binary\n```\n\n### Running Tests\n\n```bash\n# Run unit tests (fast)\ngo test ./...\nmake test\n\n# Run integration tests (requires Docker)\nmake test-integration\n\n# Run all tests with coverage\nmake test-coverage\n\n# Run tests with race detection\nmake test-race\n```\n\n### Project Structure\n\n```\nboiler-mate/\n├── cmd/boiler-mate/     # Main application\n├── config/              # Configuration management\n├── homeassistant/       # Home Assistant MQTT discovery\n├── monitor/             # Data monitoring and publishing\n├── mqtt/                # MQTT client wrapper\n├── nbe/                 # NBE protocol implementation\n└── test/integration/    # Integration tests\n```\n\nSee [PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md) for detailed documentation.\n\n## CI/CD\n\n[![Build \u0026 Publish](https://github.com/mlipscombe/boiler-mate/workflows/Build%20%26%20Publish/badge.svg)](https://github.com/mlipscombe/boiler-mate/actions)\n\nThe project uses GitHub Actions for continuous integration and deployment:\n\n- **All Tests** - Unit + integration tests with real MQTT broker (single run with race detection)\n- **Build Verification** - Ensures code compiles\n- **Linting** - Code quality checks with golangci-lint\n- **Docker Multi-Arch Builds** - Automatic builds for amd64 and arm64\n\nAll tests run together in one job for faster feedback.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Run tests: `make test-all`\n5. Submit a pull request\n\nAll PRs must pass CI/CD checks before merging.\n\n## Thanks \u0026 Acknowledgement\n\nSpecial thanks to [Anders Nylund](https://github.com/motoz) for documenting the\nNBE protocol.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlipscombe%2Fboiler-mate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlipscombe%2Fboiler-mate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlipscombe%2Fboiler-mate/lists"}