{"id":18821671,"url":"https://github.com/goto-eof/elisys-home-automation-server-java","last_synced_at":"2026-01-18T09:30:18.433Z","repository":{"id":212906282,"uuid":"723156168","full_name":"goto-eof/elisys-home-automation-server-java","owner":"goto-eof","description":"Elisys Home Automation Server supports the motion, temperature, humidity and pressure sensors, so that it allows to retrieve the data provided by a several sensors controlled by a ESP32 device (or Raspberry Pi). Moreover, EHAS provides the functionality to control remotely a Relay device.","archived":false,"fork":false,"pushed_at":"2023-12-19T23:00:05.000Z","size":1646,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-30T03:43:46.450Z","etag":null,"topics":["homeautomation","humidity","lightsensor","motiondetector","sensor","temperature"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goto-eof.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-11-24T20:53:32.000Z","updated_at":"2023-12-17T06:09:59.000Z","dependencies_parsed_at":"2024-01-02T08:06:33.994Z","dependency_job_id":"76b91261-35ce-4fcf-b3da-d7a28c435d6a","html_url":"https://github.com/goto-eof/elisys-home-automation-server-java","commit_stats":{"total_commits":99,"total_committers":2,"mean_commits":49.5,"dds":0.2525252525252525,"last_synced_commit":"79ed2f8cc04f75499333d73eb929792a01bc88fc"},"previous_names":["goto-eof/elisys-home-automation-server-java"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Felisys-home-automation-server-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Felisys-home-automation-server-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Felisys-home-automation-server-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-eof%2Felisys-home-automation-server-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goto-eof","download_url":"https://codeload.github.com/goto-eof/elisys-home-automation-server-java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239758900,"owners_count":19692041,"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":["homeautomation","humidity","lightsensor","motiondetector","sensor","temperature"],"created_at":"2024-11-08T00:45:11.440Z","updated_at":"2025-02-20T01:14:45.470Z","avatar_url":"https://github.com/goto-eof.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Elisys Home Automation Server (Java)\n\n**Elisys Home Automation Server (Java)** is the back-end side\nfor the following projects:\n\n- [**Elisys ESP32 Motion Detector (Rust)**](https://github.com/goto-eof/esp32-motion-detector-and-server-notifier-rust)\n- [**Elisys ESP32 Weather Station (Rust)**](https://github.com/goto-eof/elisys-esp32-weather-station-client-rust)\n- [**Elisys ESP32 Relay Client (Rust)**](https://github.com/goto-eof/elisys-esp32-relay-client-rust)\n- [**Elisys ESP32 Alarm Clock (Rust)**](https://github.com/goto-eof/elisys-esp32-alarm-clock-rust)\n\nThere is also a basic implementation of the front end side, and it is called \n- [**Elisys Home Automation Client (TypeScript)**](https://github.com/goto-eof/elisys-home-automation-client-typescript)\n\nCurrently, Elisys Home Automation Server supports the motion, temperature, humidity and pressure sensors, so that it\nallows to\nstore and retrieve the data provided by a several sensors controlled by a ESP32 device (or Raspberry Pi).\nMoreover, E.H.A.S. provides the functionality to control remotely a Relay device and to control an Alarm Clock.\n\nIn brief E.H.A.S. allows to:\n\n- retrieve data from a Motion detector\n    - supply the configuration for the motion sensor when it starts for the first time;\n    - send notifications via Discord when a motion is detected, so that when a post request is handled;\n    - keep trace about the sensor status:  alive/disabled.\n\n- retrieve data from a Weather station\n    - store temperature/humidity/pressure from sensors\n    - provide the last temperature/humidity/pressure values\n    - provide the list of temperature/humidity/pressure values by date\n    - provide the average of temperature/humidity/pressure by date\n    - provide the minimum temperature by date\n    - provide the maximum temperature by date\n\n- control remotely a Relay\n    - control remotely a Relay\n\n- control remotely an Alarm Clock\n    - define new alarms/remove alarms\n\n# Architecture\n![architecture](images/elisys-architecture.png)\n\n\n# Technologies\n\nElisys Home Automation was implemented using Java, Spring Boot, MapStruct, Lombok, OpenApi, Feign, Liquibase, Hibernate\nand\nPostgreSQL.\n\n# Before you run the application\n\nRename `src/main/resources/application.properties` in `src/main/resources/application-dev.properties`.\n\nConfigure IntelliJ IDEA in this way:\n\n![IDE](images/ide_config.png)\n\nBefore run the application for the first time it is necessary to configure these properties in `application.properties`\nfile in order to make motion sensor work properly:\n\n```\nfeign.discord.message.post=/api/webhooks/846237846238746328746/HELLO_WORLD\n\napp.configuration.default.motion.sensor.iamalive.interval.seconds=30\napp.configuration.default.motion.sensor.iamalive.endpoint=http://localhost:8080/api/v1/i-am-alive/notify\napp.configuration.default.motion.sensor.alert.endpoint=http://localhost:8080/api/v1/motion-sensor/alert\n```\n\n# How to run it?\n\nJust build the jar by executing the following statement:\n\n```\n./gradlew bootJar \n```\n\nNext, run an instance of PostgreSQL:\n\n```\nsudo docker-compose up -d\n```\n\nThen run the jar `elisys-home-automation.jar` located in `build/libs` in the following way:\n\n```\njava -jar elisys-home-automation.jar\n```\n\nOr for external configuration file:\n\n```\njava -jar -Dspring.config.location=application-dev.properties elisys-home-automation.jar\n```\n\n# OpenApi\n\nThe API documentation can be found at the following URI (after server starts):\n\n[http://localhost:8080/swagger-ui/index.html](http://localhost:8080/swagger-ui/index.html)\n\n# Pictures\n### Front-end | Weather Station | Temperature\n![Temperature monitor](images/temperature.png)\n### Front-end | Weather Station | Humidity\n![Humidity monitor](images/humidity.png)\n### Front-end | Weather Station | Light (Lux)\n![Light monitor](images/light_lux.png)\n\n# Note\n\nThere is a postman collection in the root project directory that can be imported in your postman environment.\n\nThis project is a Work In Progress.\n\nIf you found a bug please contact me [here](https://andre-i.eu/#contactme).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoto-eof%2Felisys-home-automation-server-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoto-eof%2Felisys-home-automation-server-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoto-eof%2Felisys-home-automation-server-java/lists"}