{"id":21149235,"url":"https://github.com/pascal-fb-martin/houselights","last_synced_at":"2026-05-16T13:06:59.130Z","repository":{"id":74188476,"uuid":"324918474","full_name":"pascal-fb-martin/houselights","owner":"pascal-fb-martin","description":"A web server to control lights","archived":false,"fork":false,"pushed_at":"2026-01-13T20:09:55.000Z","size":465,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T21:44:07.201Z","etag":null,"topics":["home-automation","lights","microservice","raspberry-pi","schedule-lights","smart-home"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pascal-fb-martin.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":"2020-12-28T05:17:40.000Z","updated_at":"2026-01-13T20:09:59.000Z","dependencies_parsed_at":"2025-04-18T07:42:23.138Z","dependency_job_id":"7b26eba9-abe4-4818-86e2-a415ee0f7cfd","html_url":"https://github.com/pascal-fb-martin/houselights","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/pascal-fb-martin/houselights","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-fb-martin%2Fhouselights","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-fb-martin%2Fhouselights/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-fb-martin%2Fhouselights/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-fb-martin%2Fhouselights/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pascal-fb-martin","download_url":"https://codeload.github.com/pascal-fb-martin/houselights/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pascal-fb-martin%2Fhouselights/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33103982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["home-automation","lights","microservice","raspberry-pi","schedule-lights","smart-home"],"created_at":"2024-11-20T09:33:20.485Z","updated_at":"2026-05-16T13:06:59.125Z","avatar_url":"https://github.com/pascal-fb-martin.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HouseLights\n\nA web server to control lights\n\n## Overview\n\nThis web server controls lights based on a schedule. The actual control of the lights is provided by a \"control\" web service and the location for each light is retrieved based on the [HousePortal](https://github.com/pascal-fb-martin/houseportal) discovery mechanism.\n\nSee the [gallery](https://github.com/pascal-fb-martin/houselights/blob/main/gallery/README.md) for a view of HouseLights' web UI.\n\nExamples of control web services compatible with the server  are [orvibo](https://github.com/pascal-fb-martin/orvibo), [HouseKasa](https://github.com/pascal-fb-martin/housekasa) and [HouseRelays](https://github.com/pascal-fb-martin/houserelays).\n\nSchedule times can be provided as time of day (format HH:MM), relative time after sunset (format +HH:MM) or relative time before sunrise (format -HH:MM).\n\n## Installation\n\n* Install the OpenSSL development package(s).\n* Install [echttp](https://github.com/pascal-fb-martin/echttp).\n* Install [houseportal](https://github.com/pascal-fb-martin/houseportal).\n* Clone this GitHub repository.\n* make\n* sudo make install\n\nYou will need to have at least one control service installed and running.\n\n## Configuration\n\nThe lights schedule can be edited from the HouseLights web interface.\n\nThe list of control points is dynamically retrieved from the House services implementing the `control` interface.\n\nThis service supports a graphic map display to control the lights.  That map display requires the presence of a user created `floorplan.svg` file in `/var/lib/house/lights`. This SVG file is typically created using Inkscape (see later).\n\nAn HTML page is automatically generated based on this `floorplan.svg` file and cached as `/var/cache/house/lights/mapbody.html`. All files in `/var/cache/house/lights` must be deleted after each change to any `/var/lib/house/lights` file.\n\n## Creating a floor plan display using Inkscape\n\nA floor plan SVG display can be created using Inkscape, but a few conventions must be followed:\n\n* Define a background color for the page in `Document Properties`. It is recommended to use `#355b1eff`, which is the background color used in the web UI.\n\n* Each SVG element that is intended to reflect the state of a point must not have the `stroke` attribute (i.e. not have an explicit stroke color), and must have an `id` attribute matching the name of the point except for any ' ' replaced with '_' (Inkscape does this automatically).\n\n* Symbols can be used, but the same \"no stroke\" rule applies to all their elements that must be animated. The `id` attribute must then be applied to the `use` element.\n\n* If multiple elements are to be animated from the same point, they must all be joined into a single group, and the `id` attribute must be applied to the group, not to the elements within that group.\n\n* The Inkscape project must be exported as `plain SVG`, and this plain SVG file must be installed as `floorplan.svg` in `/var/lib/house/lights`.\n\n* Delete file `/var/cache/house/lights/mapbody.html`.\n\n\u003e The `stroke` and `id` attributes can be modified using the Inkscape's XML Editor.\n\n## Panel\n\nThe web interface includes a Panel page (/lights/panel.html) that has no menu and only shows the current lights, each as one big button to tun the device on and off. This page is meant for a phone screen, typically a shortcut on the phone's home screen. (Because HousePortal redirects the URL, it is recommended to turn the phone in airplane mode when creating the shortcut from the web browser.)\n\n## Debian Packaging\n\nThe provided Makefile supports building private Debian packages. These are _not_ official packages:\n\n- They do not follow all Debian policies.\n\n- They are not built using Debian standard conventions and tools.\n\n- The packaging is not separate from the upstream sources, and there is\n  no source package.\n\nTo build a Debian package, use the `debian-package` target:\n\n```\nmake debian-package\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascal-fb-martin%2Fhouselights","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpascal-fb-martin%2Fhouselights","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascal-fb-martin%2Fhouselights/lists"}