{"id":18100120,"url":"https://github.com/enwi/homeplusplus","last_synced_at":"2025-08-01T02:11:41.606Z","repository":{"id":45457781,"uuid":"255301461","full_name":"enwi/homeplusplus","owner":"enwi","description":"Smarthome system based on C++ with a focus on ease of use","archived":false,"fork":false,"pushed_at":"2023-07-11T03:45:27.000Z","size":5095,"stargazers_count":3,"open_issues_count":6,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T07:02:30.410Z","etag":null,"topics":["angular","cplusplus","home-automation","homeplusplus","smarthome"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enwi.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":"2020-04-13T10:58:17.000Z","updated_at":"2021-09-12T17:00:35.000Z","dependencies_parsed_at":"2024-10-31T21:13:14.531Z","dependency_job_id":"c8b05886-dca3-4e13-8d8d-bc2587687eab","html_url":"https://github.com/enwi/homeplusplus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enwi%2Fhomeplusplus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enwi%2Fhomeplusplus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enwi%2Fhomeplusplus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enwi%2Fhomeplusplus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enwi","download_url":"https://codeload.github.com/enwi/homeplusplus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248741202,"owners_count":21154255,"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":["angular","cplusplus","home-automation","homeplusplus","smarthome"],"created_at":"2024-10-31T21:13:04.785Z","updated_at":"2025-04-13T16:10:19.538Z","avatar_url":"https://github.com/enwi.png","language":"C","readme":"# homeplusplus\nThis is Home++ a smart home system based on C++ with a focus on ease of use (setup, user interaction, ...) though at the moment lacking a bit on the front end side.\n\nFeatures for users:\n*  Actions\n   *  Set device properties\n   *  Toggle device properties\n   *  Display notifications\n*  Rules (lacking easy creation through GUI)\n   *  Set device properties\n   *  Toggle device properties\n   *  Display notifications\n   *  Call other actions\n*  Notifications\n   *  Informations\n   *  Warnings\n*  Multiple users with different rights (lacking configuration in GUI)\n   *  password protected\n*  Show device status and capabilities in GUI\n   *  Control directly via GUI\n   *  Show historical sensor/actuator data\n\nSupported devices:\n*  Philips Hue lights\n*  Tasmota devices (almost all sensors and actuators)\n*  Remote sockets (433MHz only on Raspberry Pi)\n\nFeatures for developers:\n*  Easy plugin creation\n   *  Automatic storage of sensor/actuator data in database (configurable)\n   *  Automatic storage of plugin settings (in JSON format)\n   *  MQTT support (just subscribe or publish data to topics)\n\n## Installation process\n\n### Prerequisites\nHome++ needs [mosquitto](https://mosquitto.org/), so install it:\n*  Linux: `sudo apt-get install mosquitto`\n*  MacOs: `brew install mosquitto`\n*  Windows: [Download](https://mosquitto.org/download/) and install/run exe\n\nFor Cryptopp to compile with cmake correclty change to the cryptopp folder inside the libs folder\n`cd libs/cryptopp`\nand then download the necessary cmake files\n```\nwget -O CMakeLists.txt https://raw.githubusercontent.com/noloader/cryptopp-cmake/master/CMakeLists.txt\nwget -O cryptopp-config.cmake https://raw.githubusercontent.com/noloader/cryptopp-cmake/master/cryptopp-config.cmake\n```\nmore info on this [here](https://github.com/noloader/cryptopp-cmake).\n\n### Build Home++ backend\nCreate a new folder inside the `backend` folder, in this example we are using `bin` as our 'binary' folder\n*  `cd backend`\n*  `mkdir bin`\n*  `cd bin`\n\nThen decide whether you want support for remote sockets (433MHz) aka use the remote socket API or not (only on Raspberry Pi, requires RCSwitch-Pi).\nIf so run cmake like this:\n*  `cmake .. -DCMAKE_BUILD_TYPE=Release -DHomePlusPlus_REMOTE_SOCKET=ON`\n\nIf not like this:\n*  `cmake .. -DCMAKE_BUILD_TYPE=Release`\n\nThen compile the backend with:\n*  `make HomePlusPlus`\n\n### Run Home++ backend\nYou can then run the smart home with:\n*  `./HomePlusPlus -logDir /path/to/log/folder -dir /path/to/resources -cLogL 1 -logL 1`\n\n#### Explanation of parameters\n*  `-logDir \u003cpath\u003e`: absolute path to a folder where logfiles are stored\n*  `-dir \u003cpath\u003e`: absolute path to the resource folder contained in this repository (this folder can be moved elsewhere)\n*  `-cLogL \u003c0-5\u003e`: the console log level (0: debug, 1: info, 2: warning, 3: error, 4: severe, 5: none)\n*  `-logL \u003c0-5\u003e`: the file log level (0: debug, 1: info, 2: warning, 3: error, 4: severe, 5: none)\n*  `-debug`: run in debug mode\n\n\n### Build Home++ frontend\nIf not installed, install `npm`\n*  https://www.npmjs.com/get-npm\n\nSwitch to the `frontend` folder:\n*  `cd frontend`\n\nInstall all necessary packages:\n*  `npm install`\n\nCompile the frontend:\n*  `ng build --prod`\n\nFor a German frontend run:\n*  `ng build --prod --configuration=de`\n\nThis will generate a new folder called `dist`. \nInside it you will find the folder `app` in which the compiled frontend lies. \nThese files can then be served/hosted with a simple node server.\n\u003e A setup of said server will follow soon\n\n\n## Debugging\n\n### Backend\nRun `cmake` with option `-DCMAKE_BUILD_TYPE=Debug` instead of `-DCMAKE_BUILD_TYPE=Release`\n\n### Frontend\nInstead of building with `ng build --prod --configuration=de` \nrun `ng serve --host 0.0.0.0` with or without the option `--configuration=de` to serve and debug the webpage.\n\n\n## Testing\n\n### Backend\nRun `cmake` with option `-DBUILD_TESTING=ON` instead of `-DBUILD_TESTING=OFF` to generally enable testing and coverage tests.\nFor address sanitizer tests also add the option `-DHomePlusPlus_Test_ASAN=ON`.\nFor undefined behavior sanitizer tests also add the option `-DHomePlusPlus_Test_UBSAN=ON`.\n\nCompile the coverage tests with:\n*  `make HomePlusPlus_Test`\n\nExecute the coverage tests with:\n*  `./tests/HomePlusPlus_Test`\n\nCompile the address sanitizer tests with:\n*  `make HomePlusPlus_ATest`\n\nExecute the address sanitizer tests with:\n*  `./tests/HomePlusPlus_ATest`\n\nCompile the undefined behavior sanitizer tests with:\n*  `make HomePlusPlus_UTest`\n\nExecute the undefined behavior sanitizer tests with:\n*  `./tests/HomePlusPlus_UTest`\n\n### Frontend\nCurrently there are no tests, but feel free to add some and create a pull request.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenwi%2Fhomeplusplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenwi%2Fhomeplusplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenwi%2Fhomeplusplus/lists"}