Multi-zone ventilation controller for a shared AC unit, channel type CH_MULTIVENT = 18.
More...
|
| void | link (Item *_item) |
| | Links the channel item and reads the zones object from itemArg.
|
| int | Setup () override |
| | Creates the per-zone state (fan/cmd/out) and allocates the PID controllers.
|
| int | Poll (short cause) override |
| | Per-zone PID control, airflow redistribution, boost/suppress and AC fan/mode control (see class doc).
|
| int | Stop () override |
| | Deletes the PID controllers and marks the channel as unknown.
|
| int | isActive () override |
| | Returns 1 if any zone requests an active command, 0 otherwise.
|
| int | getChanType () override |
| | Returns CH_THERMO (5).
|
| int | Ctrl (itemCmd cmd, char *subItem=NULL, bool toExecute=true, bool authorized=false) override |
| | Applies a command to a zone (or the AC without subitem) and forwards the resulting fan level to the AC, see class doc.
|
| int | fanCtrl (itemCmd cmd, char *subItem=NULL, bool force=false) |
| | Zone fan/mode/set/val handling with passive mode, freeze and PID interlocks; returns the resulting AC fan level (0-255), -1 (no change, OK) or -2 (rejected).
|
| | abstractOut () |
| virtual bool | isAllowed (itemCmd cmd) |
| virtual itemCmd | getDefaultOnVal () |
| virtual int | Status () override |
| virtual void | setStatus (uint8_t status) override |
| Item * | getItem () |
| | abstractCh () |
| virtual | ~abstractCh () |
|
| void | getConfig () |
| int | sendACcmd (itemCmd cmd) |
| void | checkACcmd (int acCmd) |
| void | checkACfan (int acFan) |
| void | checkACset (int acSet) |
| void | setPassiveMode (aJsonObject *zone, bool mode) |
| uint32_t | getFlag (aJsonObject *zone, uint32_t flag) |
| void | setFlag (aJsonObject *zone, uint32_t flag) |
| void | clearFlag (aJsonObject *zone, uint32_t flag) |
| void | enablePid (aJsonObject *zone, int enable, int direction=-1) |
| bool | pidEnabled (aJsonObject *pidObj) |
| void | setBoost (itemCmd) |
| void | resetBoost () |
| void | notifyState (itemCmd state) |
| void | stopAllzones () |
| void | restoreAllzones () |
| int | pubAction (bool state) |
| int | publishTopic (const char *topic, long value, const char *subtopic=NULL) |
| int | publishTopic (const char *topic, float value, const char *subtopic=NULL) |
| int | publishTopic (const char *topic, const char *value, const char *subtopic=NULL, const char *suffix=NULL) |
Multi-zone ventilation controller for a shared AC unit, channel type CH_MULTIVENT = 18.
Manages several ventilation zones (per-zone setpoints, PID control and airflow capacity) and steers the shared AC unit (mode, fan level and setpoint), including boost on PID imbalance and suppression of redundant commands to the AC.
JSON config (itemArg = OBJECT of zones). The key "" is the shared AC node. Zone keys: "set" (setpoint), "fan", "cmd", "V" (airflow capacity, default 60), "pid" ([kP, kI, kD, dT(default 5 s)]), "AlarmTime" (default 120 s), "AlarmValue". AC node keys: "boost" (default 230), "supress" (bitmask: 1 fan, 2 set, 4 cmd, 7 all; default 0xF), "turnbyfan", "overridecmd", "onextcmd", "cas" (cascade execution object).
Ctrl commands:
- /fan - LOW / MEDIUM / HIGH (64/128/255), a 0-255 value, AUTO (passive mode) or OFF;
- /cmd - ON, OFF, HEAT, COOL, HEATCOOL, DRY, FAN, AUTO, FREEZE, UNFREEZE;
- /set - zone temperature setpoint;
- /val - zone temperature (PID input).
- Without a subitem the call is AC feedback (/val, /fan, /set, /mode, /cmd).
Poll: runs the per-zone PID loops, redistributes airflow by V capacity, applies boost/suppress and sends the resulting fan level and mode to the AC.