{"id":20321369,"url":"https://github.com/atennert/homectrl","last_synced_at":"2026-05-03T07:41:53.513Z","repository":{"id":32153372,"uuid":"35726408","full_name":"atennert/homectrl","owner":"atennert","description":"Home / building automation server software","archived":false,"fork":false,"pushed_at":"2019-07-24T12:46:27.000Z","size":122,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-04T09:55:11.949Z","etag":null,"topics":["configurable","event-driven","home-automation","homectrl","java","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","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/atennert.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-16T14:17:54.000Z","updated_at":"2021-09-17T21:59:16.000Z","dependencies_parsed_at":"2022-09-03T22:11:50.518Z","dependency_job_id":null,"html_url":"https://github.com/atennert/homectrl","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/atennert/homectrl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atennert%2Fhomectrl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atennert%2Fhomectrl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atennert%2Fhomectrl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atennert%2Fhomectrl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atennert","download_url":"https://codeload.github.com/atennert/homectrl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atennert%2Fhomectrl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32562118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: 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":["configurable","event-driven","home-automation","homectrl","java","spring"],"created_at":"2024-11-14T19:14:43.880Z","updated_at":"2026-05-03T07:41:53.494Z","avatar_url":"https://github.com/atennert.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# HomeCtrl\n\n## Status\n__master__:\u003cbr\u003e\n[![Build Status](https://travis-ci.org/atennert/de.atennert.homectrl.svg?branch=master)](https://travis-ci.org/atennert/de.atennert.homectrl)\n[![Release](https://img.shields.io/github/release/atennert/de.atennert.homectrl.svg)](https://github.com/atennert/de.atennert.homectrl/releases)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n__devel__:\u003cbr\u003e\n[![Build Status](https://travis-ci.org/atennert/de.atennert.homectrl.svg?branch=devel)](https://travis-ci.org/atennert/de.atennert.homectrl)\n\n## Contents:\n\n* [Introduction](#intro)\n* [How to get the example working?](#make-it-work)\n* [Device configuration](#device-config)\n* [Event bus](#event-bus)\n* [How to add control modules?](#controls)\n* [How to add data processors?](#processors)\n* [Communication protocols](#protocols)\n* [Copyright](#copyright)\n\n## Introduction \u003ca id=\"intro\"\u003e\u003c/a\u003e\n\nHomeCtrl is an event based home or building automation system. The name is constructed from \"home\"\nand the label of the English keyboard control button \"Ctrl\".\n\nYou are currently looking at version 3 of the HomeCtrl software. This version is a Java application,\nthat acts as a server. It is designed as a central control unit that can communicate with devices\nand user interfaces using different communication protocols with my COM library as a back-end. The\ncurrent available protocols are HTTP for reading and writing and EnOcean for reading.\n\nThe HomeCtrl software consists of 6 projects:\n\n* *homectrl*: the core application\n* *homectrl-com-if*: all the stuff for interacting with the COM library the world beyond that\n* *sensors*: software \"sensors\" for stuff, that is computed by the server\n* *dataprocessing*: software modules for sensor data preprocessing\n* *controls*: software modules for controlling devices\n* *server*: the application project with all configurations\n\nVersion 3 of HomeCtrl is the first, where the server can actually control the devices. In versions 2\nand earlier, devices where directly controlled by the user and the server was only creating the\nconnection between user and devices. There is no user interface software yet, but that is planned\n(besides, a well configured system doesn't need user interaction ;)). The runtime structure and\nbehavior of the application is defined in a device configuration file, which is written in JSON. It\ncontains all devices, the processors and the controls with their individual settings.\n\n\n## How to get the example working? \u003ca id=\"make-it-work\"\u003e\u003c/a\u003e\n\n1. Compile the server project as runnable jar file (simply build the Gradle file in the main directory).\n2. Rename example-server.properties to server.properties.\n3. Change the data in server.properties to what you like (or go with the default).\n4. Rename example-configuration.json to configuration.json.\n5. Change the configuration in configuration.json to what your system looks like. This one might be a bit tricky. In case of doubt, check the chapter about device configuration.\n6. Start the application and lean back.\n\n\n## Device configuration \u003ca id=\"device-config\"\u003e\u003c/a\u003e\n\n\nTODO\n\n**Light at the end of the tunnel ...**\n\nI know that this manual JSON writing is hideous. I'm planning on a visual tool to create and edit configuration files. It will mostly be colorful clicking and dragging and dropping. Even a simulation mode would be nice.\n\nUnfortunately, it will probably take a while to get to this point.\n\n\n## Event bus \u003ca id=\"event-bus\"\u003e\u003c/a\u003e\n\nTODO\n\n\n## How to add control modules? \u003ca id=\"controls\"\u003e\u003c/a\u003e\n\nTODO\n\n\n## How to add data processors? \u003ca id=\"processors\"\u003e\u003c/a\u003e\n\nTODO\n\n\n## Communication protocols \u003ca id=\"protocols\"\u003e\u003c/a\u003e\n\nTODO\n\n\n## Release notes\n\nTODO\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatennert%2Fhomectrl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatennert%2Fhomectrl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatennert%2Fhomectrl/lists"}