{"id":41432651,"url":"https://github.com/lymanepp/ha-smartify","last_synced_at":"2026-01-23T14:33:17.404Z","repository":{"id":329838922,"uuid":"1119871333","full_name":"lymanepp/ha-smartify","owner":"lymanepp","description":"Smartify is a Home Assistant custom integration that makes dumb devices smarter","archived":false,"fork":false,"pushed_at":"2025-12-22T14:50:22.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-23T10:42:43.077Z","etag":null,"topics":["home-assistant","home-automation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lymanepp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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":"CLA.md"}},"created_at":"2025-12-20T02:26:54.000Z","updated_at":"2025-12-22T14:50:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lymanepp/ha-smartify","commit_stats":null,"previous_names":["lymanepp/ha-smartify"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lymanepp/ha-smartify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lymanepp%2Fha-smartify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lymanepp%2Fha-smartify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lymanepp%2Fha-smartify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lymanepp%2Fha-smartify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lymanepp","download_url":"https://codeload.github.com/lymanepp/ha-smartify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lymanepp%2Fha-smartify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28694326,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T14:15:13.573Z","status":"ssl_error","status_checked_at":"2026-01-23T14:09:05.534Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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-assistant","home-automation"],"created_at":"2026-01-23T14:33:17.183Z","updated_at":"2026-01-23T14:33:17.394Z","avatar_url":"https://github.com/lymanepp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Smartify\n\nSmartify is a **Home Assistant custom integration** that makes *dumb devices smarter*.\n\nIt provides a small, opinionated toolkit of **sensor-driven controllers** that add deterministic, transparent behavior to otherwise simple devices such as:\n\n* lights\n* ceiling fans\n* exhaust fans\n\nSmartify does **not** attempt to replace Home Assistant automations or scripts. Instead, it focuses on a narrow problem domain:\n\n\u003e **Adding practical, context-aware behavior to individual devices using sensors, timers, and clear rules.**\n\nAll behavior is deterministic, explainable, and suitable for **either UI-based or YAML-based configuration**.\n\n---\n\n## Design goals\n\nSmartify is intentionally conservative in scope.\n\n* **Dumb devices stay dumb** — intelligence is layered on top\n* **No black boxes** — behavior is rule-based, not heuristic or AI-driven\n* **UI and YAML are supported** — configuration may be done via config flow *or* YAML\n* **Reusable patterns** — consistent gating, timers, and manual override handling\n* **One device at a time** — each controller owns a single device (or tightly related set)\n\nIf something looks like a workflow, scene engine, or general automation system, it probably does **not** belong in Smartify.\n\n---\n\n## What Smartify provides\n\nSmartify currently includes controllers for:\n\n### Light controllers\n\nAdd intelligence to lights using:\n\n* occupancy or trigger sensors\n* optional illuminance gating\n* automatic shut-off timers\n* manual override windows\n* required on/off conditions\n\nTypical use cases:\n\n* closet lights that turn off automatically\n* bathroom lights gated by ambient light\n* lights that respond to occupancy but respect sleep or guest modes\n\n---\n\n### Ceiling fan controllers\n\nContinuously modulate ceiling fan speed based on environmental conditions.\n\nFeatures:\n\n* temperature + humidity inputs\n* derived comfort index (Summer Simmer Index)\n* configurable speed ranges\n* hysteresis via min/max thresholds\n* manual override windows\n\nTypical use cases:\n\n* living room fans that gently respond to heat and humidity\n* bedroom fans that slow or stop when conditions improve\n\n---\n\n### Exhaust fan controllers\n\nAutomatically control exhaust fans based on **absolute humidity delta** between rooms.\n\nFeatures:\n\n* rising / falling thresholds\n* reference room comparison\n* manual override support\n\nTypical use cases:\n\n* bathroom fans that run only when moisture actually increases\n* fans that shut off reliably after showers\n\n---\n\n### Occupancy controllers (supporting / optional)\n\nOccupancy controllers synthesize a binary occupancy sensor from:\n\n* motion sensors\n* door sensors\n* other related entities\n\nOccupancy controllers exist primarily to **support the other controllers** and may be removed in the future as native sensors improve.\n\n---\n\n## Installation\n\n### Installation via HACS (recommended)\n\nClick the button below to add Smartify as a **custom repository** in HACS:\n\n**Add Smartify to HACS:**\n[https://my.home-assistant.io/redirect/hacs_repository/?owner=lymanepp\u0026repository=ha-smartify\u0026category=integration](https://my.home-assistant.io/redirect/hacs_repository/?owner=lymanepp\u0026repository=ha-smartify\u0026category=integration)\n\nAfter adding the repository:\n\n1. Open **HACS → Integrations**\n2. Install **Smartify**\n3. Restart Home Assistant\n4. Add controllers via the UI **or** YAML\n\n---\n\n### Manual installation\n\n1. Copy the `smartify` directory into your Home Assistant `custom_components` directory:\n\n   ```text\n   config/custom_components/smartify/\n   ```\n\n2. Restart Home Assistant.\n\n---\n\n## Configuration\n\nSmartify supports **two equal, first-class configuration models**:\n\n* **UI configuration** via Home Assistant’s config flow\n* **YAML configuration** for users who prefer explicit, version-controlled setups\n\nYou may freely choose either approach, or migrate between them as your setup evolves.\n\n---\n\n## YAML configuration (optional)\n\nIf using YAML, configuration is defined under the `smartify:` domain, either inline or via packages.\n\nRecommended setups:\n\n```yaml\nsmartify: !include smartify.yaml\n```\n\nOr using packages:\n\n```yaml\nsmartify:\n  controllers: !include_dir_merge_list smartify/controllers/\n```\n\n---\n\n## YAML configuration examples\n\n```yaml\nsmartify:\n  controllers:\n\n    # Light controller example\n    - type: light\n      controlled_entity: light.master_bedroom_light\n      trigger_entity: binary_sensor.master_bedroom_occupancy\n      auto_off_minutes: 5\n      manual_control_minutes: 30\n      illuminance_sensor: sensor.master_bedroom_ambient_illuminance\n      illuminance_cutoff: 70\n      required_off_entities:\n        - binary_sensor.any_sleeping\n\n    # Ceiling fan controller example\n    - type: ceiling_fan\n      controlled_entity: fan.living_room_fan\n      temp_sensor: sensor.living_room_temperature\n      humidity_sensor: sensor.living_room_relative_humidity\n      ssi_min: 81.0\n      ssi_max: 91.0\n      speed_min: 25\n      speed_max: 75\n      manual_control_minutes: 60\n      required_on_entities:\n        - binary_sensor.living_room_occupancy\n\n    # Exhaust fan controller example\n    - type: exhaust_fan\n      controlled_entity: fan.guest_bathroom_fan\n      temp_sensor: sensor.guest_bathroom_temperature\n      humidity_sensor: sensor.guest_bathroom_relative_humidity\n      reference_temp_sensor: sensor.living_room_temperature\n      reference_humidity_sensor: sensor.living_room_relative_humidity\n      rising_threshold: 2.0\n      falling_threshold: 0.5\n      manual_control_minutes: 15\n\n    # Occupancy controller example\n    - type: occupancy\n      sensor_name: \"Office Occupancy\"\n      motion_sensors:\n        - binary_sensor.office_motion\n      motion_off_minutes: 10\n      other_entities:\n        - media_player.office_tv\n      required_on_entities:\n        - binary_sensor.home_occupancy\n```\n\n---\n\n## Philosophy\n\nSmartify exists in the space *between*:\n\n* simple on/off automations, and\n* large, opaque \"smart\" systems.\n\nIt favors:\n\n* clarity over cleverness\n* explicit configuration over inference\n* boring reliability over novelty\n\nWhether configured through the UI or YAML, Smartify aims to make device behavior **predictable, inspectable, and intentional**.\n\n---\n\n## Status\n\nSmartify is a personal custom integration and may evolve over time. Backward compatibility is valued, but configuration remains explicit by design.\n\nContributions and experimentation are welcome — just keep the scope tight.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flymanepp%2Fha-smartify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flymanepp%2Fha-smartify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flymanepp%2Fha-smartify/lists"}