/* * app_config.h — site-specific configuration and credentials. * * Copy this file to main/app_config.h and fill it in. app_config.h is * gitignored; this template is tracked. * * cp main/app_config.h.example main/app_config.h * * Everything here is specific to one installation. Behavioural tuning * (hysteresis, timings, safety limits) lives in hvac/control.h and * hvac/relay.h instead, because those are properties of the firmware rather * than of the house. */ #pragma once /* ---------------------------------------------------------------- WiFi -- */ #define APP_WIFI_SSID "your-ssid" #define APP_WIFI_PASS "your-password" /* --------------------------------------------------------------- MQTT --- */ /* * The ESP32 talks to the MQTT broker that zigbee2mqtt publishes to, not to * zigbee2mqtt itself. z2m has no REST endpoint for live sensor state — the * frontend streams it over a WebSocket — and subscribing to the broker * directly is both simpler and more robust: the sensor topics are retained, * so the last known reading for every room arrives within milliseconds of * connecting, including after a reboot. * * URI forms: mqtt://host:1883, mqtts://host:8883, ws://host:9001/mqtt */ #define APP_MQTT_URI "mqtt://192.168.1.10:1883" #define APP_MQTT_USER "" /* leave empty for anonymous */ #define APP_MQTT_PASS "" /* z2m's configured base topic. Sensor topics are /. */ #define APP_MQTT_BASE_TOPIC "zigbee2mqtt" /* --------------------------------------------------------------- Rooms -- */ /* * One row per room the thermostat knows about. * * X(display_name, zigbee2mqtt_friendly_name) * * display_name — what appears on the round screen. Keep it short; there is * not much horizontal room at 480x480 with a circular mask. * friendly_name — exactly as it appears in zigbee2mqtt, i.e. the last path * element of the MQTT topic. Case and spaces matter. If a * name contains a space the topic will too, which is legal * MQTT and handled correctly here. * * The order is the order the encoder cycles through in manual mode, and the * index is what gets persisted to NVS — so inserting a row in the middle * will shift a previously saved selection. Append rather than insert. * * Room 0 is the power-on default before anything is loaded from NVS. */ #define APP_ROOM_TABLE(X) \ X("TV Room", "tv_room_sensor") \ X("Bedroom", "bedroom_sensor") /* --------------------------------------------------------------- Units -- */ /* * Display units. All internal control math is in degrees Celsius regardless; * this only affects what is rendered and how big an encoder detent is. * APP_UNITS_FAHRENHEIT: 1 detent = 1 F. Celsius: 1 detent = 0.5 C. */ #define APP_UNITS_FAHRENHEIT 1 /* ---------------------------------------------------------------- Time -- */ /* * POSIX TZ string, used by schedule mode. SNTP keeps the clock honest; if it * never syncs, schedule mode falls back to the formula rule and says so on * screen rather than acting on a wrong clock. * US Central: "CST6CDT,M3.2.0,M11.1.0" US Eastern: "EST5EDT,M3.2.0,M11.1.0" */ #define APP_TIMEZONE "CST6CDT,M3.2.0,M11.1.0" #define APP_SNTP_SERVER "pool.ntp.org"