# Privacy Policy — homeControl

Last updated: 13 October 2026
Applies to: homeControl for Android

---

## 1. Summary

homeControl is a self-hosted home-automation client. It reports whether your phone is at home or away, so your own automation server can act on it.

The defining property of this app: your data never reaches anyone except the server you configure yourself.

There is no publisher-operated server, no analytics company, no advertising network, and no third-party tracking of any kind. The app is a client for infrastructure you own and operate. If you do not point it at a server, it collects nothing.

---

## 2. Who this policy covers, and who publishes it

### 2.1 The app

| | |
|---|---|
| App name | homeControl |
| Package name | `com.opcod.homecontrol` |
| Platform | Android |
| Publisher / legal entity | OPCOD |
| Privacy contact | contact@opcod.fr |

homeControl is a self-hosted home-automation client. It reports whether your phone is at home or away, so your own automation server can act on it. The publisher named above distributes this app; it does not operate any server on your behalf.

### 2.2 What this policy covers

This policy describes the data processed by the homeControl Android application itself. It does not describe how the server you install handles the data it receives — that server is yours, and its privacy properties are yours to configure and document.

If you are looking for the publisher of the app rather than of your own server, use the Privacy contact above. For matters about data already held by your own server, contact your server operator, since the publisher has no access to that data.

---

## 3. Data collected and transmitted

All transmission described here goes exclusively to the server URL you configure (the "home URL"), using that URL's own endpoints. Nothing is sent anywhere else.

### 3.1 Location

| | |
|---|---|
| What | Approximate or precise geographic coordinates (latitude/longitude), the timestamp of the fix, and the accuracy radius reported by the operating system |
| When | While the app is used, and — if you grant it — while it is closed |
| Why | To compute whether the phone is within the "home" radius you defined, and to keep a set of geofences that wake the app when you arrive or leave |
| Where | Your server only |
| Permissions | `ACCESS_COARSE_LOCATION`, `ACCESS_FINE_LOCATION`, and optionally `ACCESS_BACKGROUND_LOCATION` |


Precision you control: if you grant only *Approximate* location, the coordinates you transmit are coarse by the operating system's own choice. If you grant *Precise* location, they are not. The app also refuses to function as a presence client without *Precise* location, because Android does not allow geofence registration without it — see §5.2.

### 3.2 Physical activity

| | |
|---|---|
| What | A coarse activity classification (for example: still, walking, in a vehicle) and a confidence score |
| When | At most a few times per hour, as Android's activity-recognition service produces samples |
| Why | A confident change (entering a vehicle, for example) is a strong hint that the phone has left the area the geofences were pinned to, so the app re-registers them |
| Where | Your server only, via `position_log.php` |
| Permission | `ACTIVITY_RECOGNITION` |

This is a coarse classification, not continuous pedometer or GPS tracking. If you decline the permission, the app keeps working; it simply refreshes its geofences less precisely.

### 3.3 Wi-Fi network name (SSID)

Your Wi-Fi network name is read to support presence detection, and it is used only on your device. It is written into a local status file for display in the app's interface.

It is never transmitted to your server or to any other party. This is a design decision, not a platform limitation.

### 3.4 Device and battery information

| | |
|---|---|
| What | Device model, internal device name, OS version, app version, and battery charge percentage |
| Why | To identify which phone sent a report when several are paired to one server, and to let the server warn about a device about to die |
| Where | Your server only, via `position.php` and `position_log.php` |

### 3.5 Camera

| | |
|---|---|
| What | Camera frames, processed entirely on your device, solely to read a QR code during setup |
| Why | To pair the app with your server by scanning its QR code |
| Where | Nowhere. Camera frames are not stored and not transmitted |
| Permission | `CAMERA` |

You can revoke the camera permission at any time; the app only requests it for the pairing screen.

### 3.6 Microphone

| | |
|---|---|
| What | Audio, only if a feature you use explicitly asks for it |
| Where | Nowhere |
| Permission | `RECORD_AUDIO` |

homeControl's own features do not use the microphone. The permission is declared so that web-based media features can request it through Android's normal permission prompt. If you do not grant it, nothing is lost.

### 3.7 The in-app interface (WebView)

homeControl's interface is a web page rendered inside a sandboxed Android WebView. Some of those pages are served by your own server (your dashboard), and some are bundled in the app (setup, this policy).

- Pages loaded from your server run their own JavaScript inside the WebView sandbox. They have no access to your app's files, location, or other permissions. They can only read app data through the specific, documented actions you trigger — such as the buttons you press.
- The app hands the camera or microphone to a web page only for pages served from the app's own built-in origin, and only if you have already granted the corresponding Android permission. A page coming from your server is refused media access.
- Everything you type, scan, or configure stays on the device unless you point the app at a server.

---

## 4. Data you send nowhere

For clarity, the following are never transmitted to any server, including yours:

- Wi-Fi network name
- Camera images or video
- Microphone audio
- Contacts, call logs, SMS, or messages
- Files or photos stored on your device
- Advertising identifiers
- Installed-app lists

---

## 5. Third parties and processing

### 5.1 No advertising, no analytics, no tracking

homeControl contains no advertising SDK, no analytics SDK, and no crash-reporting SDK. The app does not build a profile of you, does not assign you an advertising ID, and does not track you across apps or websites.

Your data is not sold, rented, or shared for any commercial purpose. It cannot be, because there is no recipient for it beyond the server you control.

### 5.2 Google Play Services (Location)

The app uses Android's *Google Play services* location component for geofencing. Play services processes location on the device to determine geofence enter/exit events and activity classification. This processing occurs on your device; Google does not receive your location through this app.

Play services is a Google-provided library included in Android itself. It is covered by the Google Privacy Policy and the Android Privacy Policy in addition to this one.

### 5.3 Your server operator

Data reaches one external party: the operator of the server you configured. In a typical home-automation deployment this is you, your household, or your hosting provider. If you use a hosted or third-party automation platform, that platform becomes a data processor, and you should consult its own privacy policy.

---

## 6. Where data is stored

### 6.1 On your device

The app keeps a small amount of data in app-private storage (removed when you uninstall):

- your server URL and configuration
- the last known position and the "home" status derived from it
- the most recent activity classification
- a running log of engine activity (capped at a fixed number of entries)
- your saved rules script and app interface files

This data stays on the phone. It is readable only by the app. It is not included in Android's cloud backup or device-to-device transfer: the app declares `allowBackup="false"` and explicitly excludes every backup domain, so no copy of your location history or configuration is ever written to a cloud account.

### 6.2 In transit

Data travels over the network to your server. Because homeControl does not enable cleartext (plain HTTP) traffic, the operating system blocks unencrypted connections to your server on Android 9 and later. Your server must therefore use HTTPS. Use a valid certificate — a self-signed certificate that your phone does not trust will cause the app's connection to fail rather than silently transmit your location in the clear.

### 6.3 On your server

Stored server-side, under your control. Retention is entirely a function of how you have configured your automation platform. homeControl itself does not impose a retention period and does not delete anything from your server.

---

## 7. Retention

- On your device: data persists until you uninstall the app or clear its storage. You can also clear it from within the app, which removes the engine log and saved state.
- In transit and on your server: governed by your server's configuration and your retention choices.

---

## 8. Your controls

homeControl is designed so that the strongest controls are the ones Android and your server already give you:

- Revoke any permission at any time in *Settings → Apps → homeControl → Permissions*. Location, camera, microphone, activity recognition, and notifications can each be withdrawn individually.
- Revoke background location in the same place to return the app to "only while in use" behaviour. The app continues to work; it refreshes presence less often.
- Downgrade location precision to *Approximate*. The app keeps functioning, with reduced accuracy.
- Stop all transmission by uninstalling the app, or by making your server unreachable.
- Edit or delete server-side data using the tools your automation platform provides.
- Delete local data by clearing the app's storage, or uninstalling.

Removing the app's permissions takes effect immediately, including for the geofences it registered.

---

## 9. Security

- Data is transmitted only to the server you configure, and only over connections the operating system will not permit to be unencrypted.
- No data is sent to the publisher (see §2.1) or to any third party.
- Data stored on the device is excluded from Android's cloud backup and device transfer.
- The app requests the minimum Android permissions needed for home/away detection and device pairing.
- Geofences are registered locally with the operating system's location service and never leave the device as a list of coordinates.

Limitations, stated plainly:

- The app cannot enforce encryption on the server you run. If your server stores logs in the clear, that is a property of your server.
- Anyone with physical access to an unlocked phone may be able to read the app's local state through developer tooling. This is standard for Android apps and applies to all of them.
- The app's local configuration and rules files can be read by anyone with access to the device's app-specific storage.

---

## 10. Children's privacy

homeControl is a home-automation utility and is not directed at children. It is not designed to collect information knowingly or unknowingly from children under 13 or any other age.

Because the app is not designed for children and does not knowingly collect personal information from them, it does not participate in Google Play's Designed for Families programme. If you intend to use homeControl in a household with children, that is a normal and supported use — the collected data (location, coarse activity, device model) is provided for the stated purpose of home/away detection and is not used for advertising or behavioural profiling.

---

## 11. Data safety summary

| Data type | Collected | Shared | Purpose | Optional | Used for tracking |
|---|---|---|---|---|---|
| Approximate / precise location | Yes | Yes — with your server only | App functionality | Yes | No |
| Physical activity | Yes | Yes — with your server only | App functionality | Yes | No |
| Wi-Fi network name | Yes | No | App functionality | — | No |
| Device model, name, OS, battery | Yes | Yes — with your server only | App functionality | No | No |
| Camera images | Not retained, not transmitted | No | App functionality | Yes | No |
| Microphone audio | Not retained, not transmitted | No | App functionality | Yes | No |

- Collected: data is received by the app and processed locally or forwarded to your server.
- Shared: data is transmitted off the device. In every case the only recipient is the server operator you configured.
- Optional: yes for location, activity, camera, and microphone — declining leaves a reduced-functionality but working app. Device and battery information are not optional if you use presence reporting, as the server needs them to identify reports.
- Used for tracking: never. No advertising ID is read, no cross-app or cross-site tracking is performed.
- Cloud backup: no data collected by this app is included in Android's cloud backup or device-to-device transfer.

This table is intended to match the Data safety form in your Google Play Console. If the two ever disagree, the Data safety form governs what Google is told, and this policy must be corrected to match it.

---

## 12. Changes to this policy

If this policy changes, the Last updated date at the top of this document will change. Material changes — what data is collected, where it goes, or whether it is still transmitted only to your server — will be called out explicitly in the release notes of the version that introduces them.

Continued use of the app after a change means the revised policy applies.

---

## 13. Contact

Questions about this policy, or about the data your installation handles:

- For anything about this app or this policy, contact the Privacy contact in §2.1 (`[contact@opcod.fr]`).
- For matters relating to data already held by your own server, contact opcod.fr, since the publisher has no access to that data.

---

## 14. Summary of the commitments

1. Your location and activity data go to opcod.fr.
2. There is no advertising, no analytics, and no third-party tracking.
3. Your Wi-Fi name, camera images, and microphone audio never leave your device.
4. Data is never sold, rented, or shared commercially.
5. You can revoke any permission at any time, and the app degrades rather than breaking.
6. Your data is never written to a cloud backup by Android or by homeControl.
7. The publisher cannot see your data, because the publisher never receives it.
