LightHub 4.6.0
Open-source smart home controller firmware
Loading...
Searching...
No Matches
out_multivent.h
Go to the documentation of this file.
1#pragma once
2#include "options.h"
3#ifndef MULTIVENT_DISABLE
4#include <abstractout.h>
5#include <item.h>
6#include "itemCmd.h"
7#include <PID_v1.h>
8
18#define AC_BOOST_HIGH_TEMP 30
19#define AC_PRESET_TEMP 21
20#define AC_BOOST_LOW_TEMP 17
21#define AC_BOOST_TRESHOLD 230
22#define AC_BOOST_DEADBAND 10
23#define AC_HEATCOOL_DEADBAND 1.0
24
26#define AC_SUPPRESS_FAN 1
27#define AC_SUPPRESS_SET 2
28#define AC_SUPPRESS_CMD 4
29#define AC_SUPPRESS_ALL 7
30
31
59class out_Multivent : public abstractOut {
60public:
61
62 //out_Multivent(Item * _item):abstractOut(_item){getConfig();};
63 //out_Multivent(){};
65 void link(Item * _item){abstractOut::link(_item); if (_item) getConfig();};
67 int Setup() override;
69 int Poll(short cause) override;
71 int Stop() override;
73 int isActive() override;
75 int getChanType() override;
76 //int getDefaultStorageType(){return ST_PERCENTS255;};
78 int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
80 int fanCtrl(itemCmd cmd, char* subItem=NULL, bool force = false);
81protected:
82 void getConfig();
83 int sendACcmd (itemCmd cmd);
84 void checkACcmd (int acCmd);
85 void checkACfan (int acFan);
86 void checkACset (int acSet);
87 void setPassiveMode(aJsonObject* zone, bool mode);
88 uint32_t getFlag (aJsonObject* zone, uint32_t flag);
89 void setFlag (aJsonObject* zone, uint32_t flag);
90 void clearFlag (aJsonObject* zone, uint32_t flag);
91 void enablePid(aJsonObject* zone, int enable, int direction = -1);
92 bool pidEnabled(aJsonObject* pidObj);
93 void setBoost(itemCmd);
94 void resetBoost();
95 void notifyState(itemCmd state);
96 void stopAllzones();
97 void restoreAllzones();
98
99
100 aJsonObject * gatesObj;
101 aJsonObject * acObj;
102 //float acTemp;
103};
104#endif
A single LightHub item (virtual channel).
Definition item.h:232
abstractOut()
Definition abstractout.h:22
virtual void link(Item *_item)
Definition abstractout.h:24
Command + value container passed between items, drivers and MQTT.
Definition itemCmd.h:306
Multi-zone ventilation controller for a shared AC unit, channel type CH_MULTIVENT = 18.
Definition out_multivent.h:59
void getConfig()
Definition out_multivent.cpp:24
void resetBoost()
Definition out_multivent.cpp:1112
void clearFlag(aJsonObject *zone, uint32_t flag)
Definition out_multivent.cpp:490
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...
Definition out_multivent.cpp:518
int sendACcmd(itemCmd cmd)
Definition out_multivent.cpp:1029
int isActive() override
Returns 1 if any zone requests an active command, 0 otherwise.
Definition out_multivent.cpp:116
aJsonObject * gatesObj
Definition out_multivent.h:100
bool pidEnabled(aJsonObject *pidObj)
Definition out_multivent.cpp:944
void stopAllzones()
Definition out_multivent.cpp:158
int Setup() override
Creates the per-zone state (fan/cmd/out) and allocates the PID controllers.
Definition out_multivent.cpp:33
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 A...
Definition out_multivent.cpp:500
void checkACfan(int acFan)
Definition out_multivent.cpp:991
void checkACset(int acSet)
Definition out_multivent.cpp:1003
void restoreAllzones()
Definition out_multivent.cpp:188
int Poll(short cause) override
Per-zone PID control, airflow redistribution, boost/suppress and AC fan/mode control (see class doc).
Definition out_multivent.cpp:207
void enablePid(aJsonObject *zone, int enable, int direction=-1)
Definition out_multivent.cpp:934
aJsonObject * acObj
Definition out_multivent.h:101
int Stop() override
Deletes the PID controllers and marks the channel as unknown.
Definition out_multivent.cpp:92
int getChanType() override
Returns CH_THERMO (5).
Definition out_multivent.cpp:413
void checkACcmd(int acCmd)
Definition out_multivent.cpp:950
uint32_t getFlag(aJsonObject *zone, uint32_t flag)
Definition out_multivent.cpp:471
void notifyState(itemCmd state)
Definition out_multivent.cpp:1125
void setBoost(itemCmd)
Definition out_multivent.cpp:1102
void setFlag(aJsonObject *zone, uint32_t flag)
Definition out_multivent.cpp:481
void setPassiveMode(aJsonObject *zone, bool mode)
Definition out_multivent.cpp:435
void link(Item *_item)
Links the channel item and reads the zones object from itemArg.
Definition out_multivent.h:65
Item (virtual channel) system of LightHub.