Files
home_automatization_control…/growbox/config.h.example
cacto 6a7d512b22 Датчик почвенной влажности soil-1 + второй релейный модуль под fan-1
По фото: у нас два одинаковых 2-канальных релейных модуля (не один) —
второй закрывает fan-1 по-настоящему (GPIO18), больше не "пока не куплено".

Добавлен soil-1: компараторный модуль почвенной влажности, читаем A0 через
ADC (GPIO34, input-only), публикуем sensor_type=soil_moisture в процентах.
Raw->% калибруется через SOIL_RAW_DRY/SOIL_RAW_WET в config.h — заводские
значения приблизительные, точную калибровку раньше сделать было нельзя (не
было физического доступа к датчику), нужно измерить на месте.

soil-1 в Postgres/Laravel платформы ещё не заведён (не трогаем
home_automatization) — телеметрия будет идти в ClickHouse, но в Laravel UI
устройство не появится до отдельной регистрации device_type/devices-записи.

Веб-интерфейс и /api/state дополнены полем "soil".
2026-08-18 12:57:49 +05:00

56 lines
3.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Скопировать в config.h и заполнить своими значениями.
// config.h в .gitignore — секреты (Wi-Fi, адрес брокера) в репозиторий не попадают.
#pragma once
// --- Wi-Fi ---
#define WIFI_SSID "your-wifi-ssid"
#define WIFI_PASSWORD "your-wifi-password"
// --- MQTT (mosquitto из home_automatization/docker-compose.yml, порт 1883, без auth в dev) ---
#define MQTT_BROKER_HOST "192.168.1.100"
#define MQTT_BROKER_PORT 1883
#define MQTT_CLIENT_ID "growbox-esp32"
// --- Зона и устройства ---
// zone_id — id зоны "Гроубокс" в Postgres (laravel-app, таблица zones).
// device_id должны совпадать с devices.external_id, засеянными в Laravel.
// soil-1 — новое устройство, в Laravel/Postgres платформы ещё не заведено
// (device_type "sensor_soil_moisture" + строка в devices нужно добавить
// отдельно, это в this репозитории не трогаем) — до тех пор его телеметрия
// просто не будет ни к чему привязана на стороне платформы, ingest-service
// это переживёт (zone_id едет прямо в payload).
#define ZONE_ID "1"
#define DEVICE_ID_SENSOR "sensor-1"
#define DEVICE_ID_SOIL "soil-1"
#define DEVICE_ID_LIGHT "light-1"
#define DEVICE_ID_PUMP "pump-1"
#define DEVICE_ID_FAN "fan-1"
// --- Пины (ESP32 DevKitC) ---
// На 30-контактных платах GPIO16/17 часто подписаны на шёлкографии как
// RX2/TX2 (пины UART2), а не номерами — это те же GPIO, см. README.md.
#define PIN_DHT22 4
#define PIN_SOIL_MOISTURE 34 // ADC1_CH6, input-only — годится для чистого аналогового чтения
#define PIN_RELAY_LIGHT 16
#define PIN_RELAY_PUMP 17
#define PIN_RELAY_FAN 18
// Большинство дешёвых реле-модулей активны по LOW (сигнал LOW = реле включено).
#define RELAY_ACTIVE_LOW true
// Калибровка компараторного модуля почвенной влажности (analogRead 0-4095):
// значение на воздухе (сухо) и в воде (максимально мокро). Заводские числа
// ниже — грубая оценка, откалибровать по месту и подставить свои — иначе
// проценты будут врать. Смотреть Serial-лог telemetryTick() (печатает raw).
#define SOIL_RAW_DRY 3200
#define SOIL_RAW_WET 1300
// --- Телеметрия ---
#define TELEMETRY_INTERVAL_MS 30000UL
// --- Веб-интерфейс ---
// 1 — поднимать HTTP-сервер на порту 80 (страница + /api/state, /api/command).
// 0 — полностью выключить (сервер не поднимается вообще, порт не слушается).
// Без авторизации — только для локальной сети, см. README.md.
#define ENABLE_WEB_UI 1