{"id":13583660,"url":"https://github.com/ebaauw/homebridge-ws","last_synced_at":"2026-03-14T12:29:53.722Z","repository":{"id":46680187,"uuid":"121045186","full_name":"ebaauw/homebridge-ws","owner":"ebaauw","description":"Homebridege plugin for virtual weather station","archived":false,"fork":false,"pushed_at":"2025-02-12T08:39:12.000Z","size":904,"stargazers_count":111,"open_issues_count":3,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-28T14:05:49.277Z","etag":null,"topics":["homebridge-plugin","homekit","weather"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/ebaauw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["ebaauw"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.me/ebaauw/EUR"]}},"created_at":"2018-02-10T19:06:40.000Z","updated_at":"2025-03-13T18:42:20.000Z","dependencies_parsed_at":"2024-01-05T15:30:32.461Z","dependency_job_id":"10554eec-91c5-4014-8567-87a28e8deb81","html_url":"https://github.com/ebaauw/homebridge-ws","commit_stats":{"total_commits":429,"total_committers":5,"mean_commits":85.8,"dds":"0.011655011655011704","last_synced_commit":"99c7cd467d678fed2cc46d458f59101ab48f03b1"},"previous_names":[],"tags_count":126,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebaauw%2Fhomebridge-ws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebaauw%2Fhomebridge-ws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebaauw%2Fhomebridge-ws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebaauw%2Fhomebridge-ws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebaauw","download_url":"https://codeload.github.com/ebaauw/homebridge-ws/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198445,"owners_count":20900079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["homebridge-plugin","homekit","weather"],"created_at":"2024-08-01T15:03:40.824Z","updated_at":"2026-03-14T12:29:53.717Z","avatar_url":"https://github.com/ebaauw.png","language":"JavaScript","funding_links":["https://github.com/sponsors/ebaauw","https://www.paypal.me/ebaauw/EUR"],"categories":["JavaScript","HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"homebridge-ws.png\" height=\"200px\"\u003e  \n\u003c/p\u003e\n\u003cspan align=\"center\"\u003e\n\n# Homebridge WS\n[![Downloads](https://img.shields.io/npm/dt/homebridge-ws.svg)](https://www.npmjs.com/package/homebridge-ws)\n[![Version](https://img.shields.io/npm/v/homebridge-ws.svg)](https://www.npmjs.com/package/homebridge-ws)\n[![Homebridge Discord](https://img.shields.io/discord/432663330281226270?color=728ED5\u0026logo=discord\u0026label=discord)](https://discord.gg/aCTWrqb)\n[![verified-by-homebridge](https://badgen.net/badge/homebridge/verified/purple)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)\n\n[![GitHub issues](https://img.shields.io/github/issues/ebaauw/homebridge-ws)](https://github.com/ebaauw/homebridge-ws/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/ebaauw/homebridge-ws)](https://github.com/ebaauw/homebridge-ws/pulls)\n[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)\n\n\u003c/span\u003e\n\n## Homebridge plugin for virtual weather station\nCopyright © 2018-2026 Erik Baauw. All rights reserved.\n\nThis [Homebridge](https://github.com/homebridge/homebridge) plugin exposes one or more virtual weather stations to Apple's [HomeKit](http://www.apple.com/ios/home/).\nThe weather is obtained from [OpenWeatherMap](https://openweathermap.org).\n\nEach weather station is exposed as a separate accessory, mimicking an Eve Weather, with separate services for Temperature, Humidity, and Air Pressure.\nIn addition, Homebridge WS provides a Motion Sensor service, to receive HomeKit notifications for rain or snow.\nA custom Weather service contains a full weather report, including observation time, conditions, clouds, rain, snow, wind, min/max temperature, UV index, visibility, sunrise, and sunset.\nThe Temperature, Humidity, and Motion sensors are supported Apple's [Home](https://support.apple.com/en-us/HT204893) app and by Siri.\nYou need another HomeKit app, like [Eve](https://www.evehome.com/en/eve-app), for the Air Pressure sensor and the full weather report\nIn Eve, you also get history for Temperature, Humidity, Air Pressure, and Motion (rain or snow).\n\nOptionally, Homebridge WS exposes a second _Forecast_ accessory per location, with a Motion Sensor service per hourly or daily forecast.\nThis service includes the full weather report as well as temperature, humidity, and air pressure.\n\nThere are many other weather station plugins out there.\nI created this one for fun and for testing plugin designs.\nIn particular, this plugin is the launching plugin for [homebridge-lib](https://github.com/ebaauw/homebridge-lib).\n\n### Prerequisites\nYou need to obtain an [API key](https://openweathermap.org/price) from OpenWeatherMap.\nAs Homebridge WS uses the `onecall` API endpoint, a _One Call by Call_ subscription plan is needed for new API keys.\nOld API keys under the the _Free_ plan of the _Current weather and forecasts collection_ still work, but new API keys need the _One Call by Call_ plan.\n\nYou need a server to run Homebridge.\nThis can be anything running [Node.js](https://nodejs.org): from a Raspberry Pi, a NAS system, or an always-on PC running Linux, macOS, or Windows.\nSee the [Homebridge Wiki](https://github.com/homebridge/homebridge/wiki) for details.\nI run Homebridge WS on a Raspberry Pi 3B+.\n\nTo interact with HomeKit, you need Siri or a HomeKit app on an iPhone, Apple Watch, iPad, iPod Touch, or Apple TV (4th generation or later).\nI recommend to use the latest released versions of iOS, watchOS, and tvOS.  \nPlease note that Siri and even Apple's [Home](https://support.apple.com/en-us/HT204893) app still provide only limited HomeKit support.\nTo use the full features of Homebridge WS, you might want to check out some other HomeKit apps, like the [Eve](https://www.evehome.com/en/eve-app) app (free) or Matthias Hochgatterer's [Home+](https://hochgatterer.me/home/) app (paid).  \n\n### Installation\nTo install Homebridge WS:\n- Follow the instructions on the [Homebridge Wiki](https://github.com/homebridge/homebridge/wiki) to install Node.js and Homebridge;\n- Install the Homebridge WS plugin through Homebridge Config UI X or manually by:\n  ```\n  $ sudo npm -g i homebridge-ws\n  ```\n- Edit `config.json` and add the `WS` platform provided by Homebridge WS, see [**Configuration**](#configuration).\n\n### Configuration\nIn Homebridge's `config.json` you need to specify Homebridge WS as a platform plugin.\nFurthermore, you need to specify your OpenWeatherMap [API key](https://openweathermap.org/price), and [location(s)](https://openweathermap.org/current):\n```json\n  \"platforms\": [\n    {\n      \"platform\": \"WS\",\n      \"name\": \"Weather\",\n      \"apikey\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n      \"locations\": [\"Amsterdam\"]\n    }\n  ]\n```\n\nTo expose weather forecasts, set `\"dailyForecasts\": `_d_ (with _d_ between 1 and 7) or `\"hourlyForecasts\":` _h_ (with _h_ between 1 and 47) in config.json.\nWhen either has been set, Homebridge WS exposes an additional _Forecast_ accessory per location, with a Leak Sensor service per forecast.\nHome will only show _Leak Detected_ per forecast, in Eve you can see the full weather reports.\n\nNote that OpenWeatherMap's One Call API returns the current conditions and forecasts in a single API call, so enabling forecasts won't increase the number of outgoing API calls.  The rate at which OpenWeatherMap is called can be changed using the _Heartrate_ characteristic in the Leak Sensor service on the main accessory.\n\n### Troubleshooting\n\n#### Check Dependencies\nIf you run into Homebridge startup issues, please double-check what versions of Node.js and of Homebridge have been installed.\nHomebridge WS has been developed and tested using the [latest LTS](https://nodejs.org/en/about/releases/) version of Node.js and the [latest](https://www.npmjs.com/package/homebridge) version of Homebridge.\nOther versions might or might not work - I simply don't have the bandwidth to test these.\n\n#### Run Homebridge WS Solo\nIf you run into Homebridge startup issues, please run a separate instance of Homebridge with only Homebridge WS (and Homebridge Config UI X) enabled in `config.json`.\nThis way, you can determine whether the issue is related to Homebridge WS itself, or to the interaction of multiple Homebridge plugins in your setup.\nYou can start this separate instance of Homebridge on a different system, as a different user, or from a different user directory (specified by the `-U` flag).\nMake sure to use a different Homebridge `name`, `username`, and (if running on the same system) `port` in the `config.json` for each instance.\n\n#### Debug Log File\nHomebridge WS outputs an info message for each HomeKit characteristic value it sets and for each HomeKit characteristic value change notification it receives.\nWhen Homebridge is started with `-D`, Homebridge WS outputs a debug message for each request it makes to OpenWeatherMap.\n\nTo capture these messages into a log file do the following:\n- If you're running Homebridge as a service, stop that service;\n- Run Homebridge manually, capturing the output into a file, by issuing:\n  ```\n  $ homebridge -CD 2\u003e\u00261 | tee homebridge.log\n  ```\n- Interact with your devices, through their native app and or through HomeKit to trigger the issue;\n- Hit interrupt (ctrl-C) to stop Homebridge;\n- If you're running Homebridge as a service, restart the service;\n- Compress the log file by issuing:\n  ```\n  $ gzip homebridge.log\n  ```\n\n#### Getting Help\nIf you have a question, please post a message to the **#ws** channel of the Homebridge community on [Discord](https://discord.gg/aCTWrqb).\n\nIf you encounter a problem, please open an issue on [GitHub](https://github.com/ebaauw/homebridge-ws/issues).\nPlease **attach** a copy of `homebridge.log.gz` to the issue, see [**Debug Log File**](#debug-log-file).\nPlease do **not** copy/paste large amounts of log output.\n\n### Caveats\nHomebridge WS is a hobby project of mine, provided as-is, with no warranty whatsoever.  I've been running it successfully at my home for years, but your mileage might vary.\n\nThe HomeKit terminology needs some getting used to.\nAn _accessory_ more or less corresponds to a physical device, accessible from your iOS device over WiFi or Bluetooth.\nA _bridge_ (like Homebridge) is an accessory that provides access to other, bridged, accessories.\nAn accessory might provide multiple _services_.\nEach service corresponds to a virtual device (like a lightbulb, switch, motion sensor, ..., but also: a programmable switch button, accessory information, battery status).\nSiri interacts with services, not with accessories.\nA service contains one or more _characteristics_.\nA characteristic is like a service attribute, which might be read or written by HomeKit apps.\nYou might want to checkout Apple's [HomeKit Accessory Simulator](https://developer.apple.com/documentation/homekit/testing_your_app_with_the_homekit_accessory_simulator), which is distributed as an additional tool for `Xcode`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febaauw%2Fhomebridge-ws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Febaauw%2Fhomebridge-ws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febaauw%2Fhomebridge-ws/lists"}