• Stars
    star
    1,567
  • Rank 29,877 (Top 0.6 %)
  • Language
    Swift
  • License
    Other
  • Created over 8 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ“ฑ Home Assistant for Apple platforms

Home Assistant for Apple Platforms

TestFlight Beta invite Download on the App Store GitHub issues License Apache 2.0

Getting Started

Home Assistant uses Bundler, Homebrew and Cocoapods to manage build dependencies. You'll need Xcode 14.1 (or later) which you can download from the App Store. You can get the app running using the following commands:

git clone https://github.com/home-assistant/iOS.git
cd iOS

# you must do one of the following, but you do not need to do all of them:

## install cocoapods via homebrew, use that
brew install cocoapods
$(brew --prefix)/opt/ruby/bin/gem install cocoapods-acknowledgements
pod install --repo-update

## install ruby via homebrew, use that
brew install [email protected]
$(brew --prefix)/opt/[email protected]/bin/bundle install
$(brew --prefix)/opt/[email protected]/bin/bundle exec pod install --repo-update

## install ruby via rbenv, use that
brew install rbenv ruby-build
rbenv install
bundle install
bundle exec pod install --repo-update

Once this completes, you can launch HomeAssistant.xcworkspace and run the App-Debug scheme onto your simulator or iOS device.

Testing just the frontend

To just test the frontend, you can use a simulator version built by our GitHub actions.

  1. Install Xcode from the App Store making sure it's at least the version noted above. You do not need to install or run anything else.
  2. Launch the simulator at /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app or in Xcode under the Xcode menu > Open Developer Tool.
  3. Open a simulator under File > Open Simulator. You can install older versions of iOS in Xcode's Components preferences.
  4. Download a simulator build from the the GitHub action under "Artifacts."
  5. Drag the result .app on drop it on top of the simulator.
  6. Locate the app on the home screen and click it to launch.

The simulator behaves different than you might expect:

Action Effect
Click Tap
Click & drag Scroll
Hold โŒฅ Add a second touch point
Hold โ‡งโŒฅ Move both touch points
โŒ˜โ†, โŒ˜โ†’ Rotate
โŒ˜S Take screenshot
โŒ˜R Record video
โŒ˜K Toggle software keyboard

You can now debug the WebView in this simulator build using Safari's Web Inspector:

  1. Make sure "Show Develop menu in menu bar" is enabled in Safari's Advanced preferences.
  2. Under the Develop menu, expand the "Simulator" menu for the simulator you've opened.
  3. Choose the WebView you want to inspect. A new window will open.

Code Signing

Although the app is set up to use Automatic provisioning for Debug builds, you'll need to customize a few of the options. This is because the app makes heavy use of entitlements that require code signing, even for simulator builds.

Edit the file Configuration/HomeAssistant.overrides.xcconfig (which will not exist by default and is ignored by git) and add the following:

DEVELOPMENT_TEAM = YourTeamID
BUNDLE_ID_PREFIX = some.bundle.prefix

Xcode should generate provisioning profiles in your Team ID and our configuration will disable features your team doesn't have like Critical Alerts. You can find your Team ID on Apple's developer portal; it looks something like ABCDEFG123.

Code style

Linters run as part of Pull Request checks. Additionally, some linting requirements can be autocorrected.

# checks for linting problems, doesn't fix
bundle exec fastlane lint
# checks for linting problems and fixes them
bundle exec fastlane autocorrect

In the Xcode project, the autocorrectable linters will not modify your source code but will provide warnings. This project uses several linters:

Continuous Integration

We use Github Actions alongside Fastlane to perform continuous integration both by unit testing and deploying to App Store Connect. Mac Developer ID builds are available as an artifact on every build of master.

Environment variables

Fastlane scripts read from the environment or .env file for configuration like team IDs. See .env.sample for available values.

Deployment

Although all the deployment is done through Github Actions, you can do it manually through Fastlane:

Deployment to App Store Connect

# creates the builds and uploads to the app store
# each save their artifacts to build/
bundle exec fastlane mac build
bundle exec fastlane ios build

Contributing

See CONTRIBUTING.md

LICENSE

Apache-2.0

Credits

The format and some content of this README.md comes from the SwipeIt project.

More Repositories

1

core

๐Ÿก Open source home automation that puts local control and privacy first.
Python
72,637
star
2

operating-system

๐Ÿ”ฐ Home Assistant Operating System
Python
4,890
star
3

home-assistant.io

๐Ÿ“˜ Home Assistant User documentation
HTML
4,873
star
4

frontend

๐Ÿญ Frontend for Home Assistant
TypeScript
4,014
star
5

android

๐Ÿ“ฑ Home Assistant Companion for Android
Kotlin
2,296
star
6

supervisor

๐Ÿก Home Assistant Supervisor
Python
1,745
star
7

supervised-installer

Installer for a generic Linux system
Shell
1,712
star
8

Iconic

๐ŸŽจ Auto-generated icon font library for iOS, watchOS and tvOS
Swift
1,577
star
9

addons

โž• Docker add-ons for Home Assistant
Shell
1,540
star
10

homebridge-homeassistant

DEPRECATED in favor of native HomeKit support. - ๏ฃฟ Homebridge plugin for Home Assistant
JavaScript
684
star
11

intents

Intents to be used with Home Assistant
Python
449
star
12

architecture

Repo to discuss Home Assistant architecture
317
star
13

developers.home-assistant

Developers website for Home Assistant.
JavaScript
302
star
14

home-assistant-js-websocket

๐Ÿšก JavaScript websocket client for Home Assistant
TypeScript
272
star
15

os-agent

Daemon allowing to control OS features through D-Bus
Go
271
star
16

brands

๐ŸŽจ Brands for Home Assistant
Shell
252
star
17

hassio-build

๐Ÿšœ Hass.io build tools
Python
223
star
18

example-custom-config

A collection of example custom components for Home Assistant
Python
206
star
19

hadashboard

๐Ÿ  Dashing dashboard for Home Assistant (deprecated)
JavaScript
199
star
20

docker

Home Assistant containers
Dockerfile
198
star
21

cli

๐Ÿ”ณ Home Assistant command line interface
Go
195
star
22

addons-example

Example Home Assistant add-on repository
Dockerfile
123
star
23

hassbian-scripts

Scripts used in the Hassbian image.
Shell
123
star
24

ada

Hey Ada!
Python
103
star
25

fabric-home-assistant

๐Ÿ“œ Deploy Home-Assistant easily with Fabric
Shell
100
star
26

companion.home-assistant

๐Ÿ“– Home Assistant Companion docs
JavaScript
89
star
27

addons-development

Add-on Repository for Development
Shell
86
star
28

hassil

Intent parsing for Home Assistant
Python
86
star
29

docker-base

Home Assistant base images
Dockerfile
71
star
30

builder

Home Assistant builder script
Shell
69
star
31

data.home-assistant

Data Science Portal for Home Assistant.
JavaScript
65
star
32

home-assistant-notebooks

๐Ÿ““ Sample Jupyter Notebooks to explore Home Assistant data
Jupyter Notebook
63
star
33

scenegen

๐ŸŽ† Generate Scenes for Home Assistant
Python
62
star
34

home-assistant-js

๐Ÿ JavaScript implementation of the Home Assistant API using NuclearJS
JavaScript
58
star
35

micropython-home-assistant

๐Ÿ Home Assistant client for MicroPython
Python
56
star
36

version

Home Assistant versions data
Shell
56
star
37

assets

๐ŸŽจ Assets for the Home Assistant project
HTML
48
star
38

ui-schema

A schema to define a user interface for Home Assistant.
41
star
39

alerts.home-assistant.io

Home Assistant Alerts
HTML
40
star
40

HAKit

Swift library for communicating with Home Assistant.
Swift
38
star
41

custom-panel-starter-kit-react

A starter kit to start developing a React based custom panel
JavaScript
35
star
42

my.home-assistant.io

The portal to your home.
TypeScript
34
star
43

buildroot

Buildroot fork with patches for Home Assistant OS
Makefile
32
star
44

services.home-assistant.io

Home Assistant web services
TypeScript
31
star
45

wheels-custom-integrations

Custom integration wheels hosted by Home Assistant
30
star
46

mobile-apps-fcm-push

Push Notification Sender for Home Assistant official mobile apps
JavaScript
29
star
47

wheels

Build wheels for Home Assistant
Python
29
star
48

actions

GitHub Actions for Home Assistant workflows
Python
28
star
49

devcontainer

Custom devcontainers for the home-assistant org
Shell
28
star
50

hubot-home-assistant

๐Ÿ’ฌ Hubot module for interacting with Home Assistant via chat
CoffeeScript
28
star
51

plugin-audio

Pulseaudio implementation for Home Assistant
Shell
26
star
52

analytics.home-assistant.io

Home of the Home Assistant usage stats.
TypeScript
25
star
53

bthome.io

BTHome is a BLE API to broadcast data for your home.
HTML
25
star
54

yellow.home-assistant.io

HTML
24
star
55

plugin-observer

Supervisor plugin observare to monitor host part of Supervisor
Go
23
star
56

plugin-multicast

Multicast implementation for Home Assistant
Dockerfile
22
star
57

connectzbt1.home-assistant.io

HTML
22
star
58

plugin-dns

CoreDNS implementation for Home Assistant
Go
20
star
59

tempio

A template helper for config files
Go
19
star
60

hass-release

Home Assistant release helper scripts
Python
17
star
61

service-hub

Monorepo for NestJS services
TypeScript
15
star
62

probot-home-assistant

Probot to deal with PR/Issue automations for Home Assistant
TypeScript
13
star
63

.github

Default Community Health Files for GitHub Repos
13
star
64

landingpage

JavaScript
11
star
65

plugin-cli

CLI implementation for Home Assistant
Dockerfile
11
star
66

hassbot

HassBot is the chat assistant for the Home Assistant chatrooms on Gitter.
CoffeeScript
10
star
67

wheels-tensorflow

Build wheels for TensorFlow and Home Assistant
Dockerfile
10
star
68

wheels-opencv

Build opencv packages for Home Assistant
10
star
69

bot

Help with maintenance tasks.
TypeScript
9
star
70

lambda-home-assistant-github

:octocat: GitHub hook for the Home Assistant repository
Python
9
star
71

intents-package

Python package of the Home Assistant intents
Python
8
star
72

partner.home-assistant

HTML
8
star
73

deployments

HCL
8
star
74

private-demo

Repository for the private-demo image
Shell
8
star
75

devices

Collection of devices
Python
8
star
76

github-issue-maker

Create GitHub issues based on a template.
Python
7
star
77

hbmqtt-auth-home-assistant

HBMQTT Auth plugin to authenticate against Home Assistant auth
Python
7
star
78

LabelBot

A Lambda function that labels Home Assistant pull requests
JavaScript
7
star
79

green.home-assistant.io

HTML
7
star
80

ci-azure

Helper / Templates for Azure Pipelines
Roff
5
star
81

my-upnp

Go
5
star
82

people

An audit trail for who's meant to be in the Home Assistant GitHub organization - and a place to open issues for security-problem users
5
star
83

codeowners-mention

A Probot app to mention user(s) listed in CODEOWNERS on newly opened issues and PRs that have associated integration labels
JavaScript
4
star
84

operating-system-blobs

Shell
4
star
85

organization

๐Ÿ’ผ A repository for discussing the organizational matters of Home Assistant
4
star
86

wheels-scipy

wheels-scipy
4
star
87

voice.home-assistant

[Deprecated] Website for all Home Assistant Voice
JavaScript
4
star
88

cosign

Sigstore cosign repository for Home Assistant
4
star
89

login.home-assistant.io

The login to your home.
HTML
3
star