# CeresFlows - Ръководство за инсталация (Linux)

Добре дошли в CeresFlows! Това ръководство обхваща инсталирането, настройката и първоначалното стартиране на вашата високопроизводителна система за автоматизация на Linux.

## 🚀 Бърз старт

1. **Разархивирайте** изтегления `.zip` файл (`hydroponics-linux-arm64.zip`) в директория по ваш избор.
2. **Направете файла изпълним:**
   ```bash
   chmod +x hydroponics-linux-arm64
   ```
3. **Стартирайте приложението:**
   ```bash
   ./hydroponics-linux-arm64
   ```
4. **Потребителският интерфейс ще се отвори** във вашия браузър на адрес `http://localhost:8080`.

*При работа на безглави сървъри (напр. Raspberry Pi без дисплей), задайте `open_browser: false` в `config.yaml` и достъпвайте интефейса от друго устройство в същата мрежа.*

---

## 🔑 Активиране на лиценз

CeresFlows използва лицензионен модел, обвързан с хардуера, който е сигурно заключен към вашата машина.

### Стъпки за активиране
При първото стартиране без лицензен файл, приложението влиза в **Safe Mode** и показва екран *"License Required"* (Необходим е лиценз).

1. **Копирайте Hardware ID (HWID)**, показан в интерфейса на браузъра.
2. **Изпратете HWID по имейл** на **info@ceresflows.com** или **ceresflows@gmail.com**, за да получите вашия файл `license.key`.
3. **Поставете `license.key`** в същата директория, където е и бинарният файл.
4. В браузъра кликнете върху **"I Have Placed the File - Verify Now"**.
5. Рестартирайте приложението според указанията.

---

## ⚙️ Конфигурация (`config.yaml`)

Ако в папката липсва файл `config.yaml`, системата автоматично ще генерира такъв при първото стартиране. За да редактирате конфигурацията си, използвайте вградения редактор `nano`:

```bash
nano config.yaml
```

*В nano можете да промените настройките по подразбиране. Натиснете `CTRL+O`, след това `Enter`, за да запазите, и `CTRL+X`, за да излезете.*

Ключови опции, които може да искате да регулирате:

```yaml
server:
  port: "8080"            # Променете, ако портът вече се използва
  mode: debug             # Използвайте "release" за реални инсталации
  open_browser: true      # Изключете за headless сървъри

database:
  path: "ceresflowsDB.db" # Местоположение на файла на базата данни
```

> **Съвет:** След запазване на промените в `config.yaml`, рестартирайте приложението.

---

## 🗂️ Папката `data/` — Потребителски шаблони за устройства

CeresFlows идва с вградена библиотека от драйвери за устройства, вградени в бинарния файл. Папката `data/custom_templates/` ви позволява да **разширявате или презаписвате** вградената библиотека.

- При стартиране вградените шаблони се зареждат първо.
- След това системата сканира `data/custom_templates/devices/sensors/` и `actuators/` за допълнителни драйвери в `.json` формат.
- Потребителски шаблон със **същия `id`** като вграден такъв ще го **презапише**.
- Потребителските шаблони са ясно обозначени в потребителския интерфейс.

---

## 🔧 Работа като системен сървиз (Препоръчително за Raspberry Pi)

За да стартирате CeresFlows автоматично при зареждане на системата във фонов режим, се препоръчва да държите приложението в `/opt/ceresflows/`.

1. **Преместете файловете в стандартното местоположение:**
   ```bash
   sudo mkdir -p /opt/ceresflows
   
   # Преместете бинарния файл (и генерираните файлове, ако вече сте го стартирали)
   sudo mv hydroponics-linux-arm64 /opt/ceresflows/
   sudo mv * /opt/ceresflows/ 2>/dev/null
   
   sudo chmod +x /opt/ceresflows/hydroponics-linux-arm64
   ```

2. **Създайте файла на сървиза чрез `sudo nano`:**
   ```bash
   sudo nano /etc/systemd/system/ceresflows.service
   ```

*Поставете следното съдържание в редактора:*

```ini
# /etc/systemd/system/ceresflows.service
[Unit]
Description=CeresFlows Automation System
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/ceresflows
ExecStart=/opt/ceresflows/hydroponics-linux-arm64
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
```

*Запазете файла с `CTRL+O`, потвърдете с `Enter` и излезте с `CTRL+X`.*

Активирайте и стартирайте сървиза:

```bash
sudo systemctl daemon-reload
sudo systemctl enable ceresflows
sudo systemctl start ceresflows
```

Проверка на състоянието:
```bash
sudo systemctl status ceresflows
sudo journalctl -u ceresflows -f
```

---

## 🔄 Обновяване на CeresFlows (SSH)

Когато излезе нова версия, следвайте тези стъпки за сигурно обновяване:

1. **Спрете сървиза:**
   ```bash
   sudo systemctl stop ceresflows
   ```
2. **Отидете в директорията и изтрийте стария бинарен файл:**
   ```bash
   cd /opt/ceresflows
   rm hydroponics-linux-arm64
   ```
3. **Качете новия `.zip` файл** в `/opt/ceresflows/`.
4. **Разархивирайте и задайте права за изпълнение:**
   ```bash
   unzip hydroponics-linux-arm64.zip
   chmod +x hydroponics-linux-arm64
   
   # (По желание) Изтрийте архива:
   rm hydroponics-linux-arm64.zip
   ```
5. **Стартирайте сървиза отново:**
   ```bash
   sudo systemctl start ceresflows
   ```

---

## 🛢️ База данни

CeresFlows използва вградена SQLite база данни в режим WAL. Тя се създава и мигрира автоматично при всяко стартиране.

> ⚠️ **ПРЕДУПРЕЖДЕНИЕ:** Не променяйте и не изтривайте файла с базата данни, докато приложението работи. Това ще задейства автоматични проверки и ще заключи системата.

---

## 🛡️ Защита и сигурност

- **Не манипулирайте системния часовник:** Връщането на часовника назад (повече от 5 минути) ще заключи системата.
- **Цялост на данните:** Ръчното изтриване на лицензното състояние от базата данни се засича като намеса.
- **Възстановяване:** При легитимно заключване, свържете се с **info@ceresflows.com** или **ceresflows@gmail.com** с вашия HWID за Recovery Token.
