22typedef unsigned char byte;
46#define EL_SETI_SNA 0x50
47#define EL_SETC_SNA 0x51
48#define EL_GET_SNA 0x52
49#define EL_INF_SNA 0x53
50#define EL_SETGET_SNA 0x5e
54#define EL_INF_REQ 0x63
56#define EL_SET_RES 0x71
57#define EL_GET_RES 0x72
60#define EL_INFC_RES 0x7a
61#define EL_SETGET_RES 0x7e
62#define EL_BUFFER_SIZE 1500
63#define EL_MINIMUM_FRAME 13
67#define EL_GasLeakSensor 0x00, 0x01
68#define EL_CrimePreventionSensor 0x00, 0x02
69#define EL_EmergencyButton 0x00, 0x03
70#define EL_FirstAidSensor 0x00, 0x04
71#define EL_EarthquakeSensor 0x00, 0x05
72#define EL_ElectricLeakSensor 0x00, 0x06
73#define EL_HumanDetectionSensor 0x00, 0x07
74#define EL_VisitorSensor 0x00, 0x08
75#define EL_CallSensor 0x00, 0x09
76#define EL_CondensationSensor 0x00, 0x0A
77#define EL_AirPollutionSensor 0x00, 0x0B
78#define EL_OxygenSensor 0x00, 0x0C
79#define EL_IlluminanceSensor 0x00, 0x0D
80#define EL_SoundSensor 0x00, 0x0E
81#define EL_MailingSensor 0x00, 0x0F
82#define EL_WeightSensor 0x00, 0x10
83#define EL_TemperatureSensor 0x00, 0x11
84#define EL_HumiditySensor 0x00, 0x12
85#define EL_RainSensor 0x00, 0x13
86#define EL_WaterLevelSensor 0x00, 0x14
87#define EL_BathWaterLevelSensor 0x00, 0x15
88#define EL_BathHeatingStatusSensor 0x00, 0x16
89#define EL_WaterLeakSensor 0x00, 0x17
90#define EL_WaterOverflowSensor 0x00, 0x18
91#define EL_FireSensor 0x00, 0x19
92#define EL_CigaretteSmokeSensor 0x00, 0x1A
93#define EL_CO2Sensor 0x00, 0x1B
94#define EL_GasSensor 0x00, 0x1C
95#define EL_VOCSensor 0x00, 0x1D
96#define EL_DifferentialPressureSensor 0x00, 0x1E
97#define EL_AirSpeedSensor 0x00, 0x1F
98#define EL_OdorSensor 0x00, 0x20
99#define EL_FlameSensor 0x00, 0x21
100#define EL_ElectricEnergySensor 0x00, 0x22
101#define EL_CurrentValueSensor 0x00, 0x23
102#define EL_WaterFlowRateSensor 0x00, 0x25
103#define EL_MicromotionSensor 0x00, 0x26
104#define EL_PassageSensor 0x00, 0x27
105#define EL_BedPresenceSensor 0x00, 0x28
106#define EL_OpenCloseSensor 0x00, 0x29
107#define EL_ActivityAmountSensor 0x00, 0x2A
108#define EL_HumanBodyLocationSensor 0x00, 0x2B
109#define EL_SnowSensor 0x00, 0x2C
111#define EL_HomeAirConditioner 0x01, 0x30
112#define EL_VentilationFan 0x01, 0x32
113#define EL_AirConditionerVentilationFan 0x01, 0x34
114#define EL_AirCleaner 0x01, 0x35
115#define EL_Humidifier 0x01, 0x39
116#define EL_ElectricHeater 0x01, 0x42
117#define EL_FanHeater 0x01, 0x43
118#define EL_PackageTypeCommercialAirConditionerIndoorUnit 0x01, 0x56
119#define EL_PackageTypeCommercialAirConditionerOutdoorUnit 0x01, 0x57
121#define EL_ElectricallyOperatedShade 0x02, 0x60
122#define EL_ElectricShutter 0x02, 0x61
123#define EL_ElectricStormWindow 0x02, 0x63
124#define EL_Sprinkler 0x02, 0x67
125#define EL_ElectricWaterHeater 0x02, 0x6B
126#define EL_ElectricToiletSeat 0x02, 0x6E
127#define EL_ElectricLock 0x02, 0x6F
128#define EL_InstantaneousWaterHeater 0x02, 0x72
129#define EL_BathroomHeaterAndDryer 0x02, 0x73
130#define EL_HouseholdSolarPowerGeneration 0x02, 0x79
131#define EL_ColdOrHotWaterHeatSourceEquipment 0x02, 0x7A
132#define EL_FloorHeater 0x02, 0x7B
133#define EL_FuelCell 0x02, 0x7C
134#define EL_Battery 0x02, 0x7D
135#define EL_ElectricVehicle 0x02, 0x7E
136#define EL_EngineCogeneration 0x02, 0x7F
137#define EL_WattHourMeter 0x02, 0x80
138#define EL_WaterFlowmeter 0x02, 0x81
139#define EL_GasMeter 0x02, 0x82
140#define EL_LPGasMeter 0x02, 0x83
141#define EL_PowerDistributionBoardMetering 0x02, 0x87
142#define EL_SmartElectricEnergyMeter 0x02, 0x88
143#define EL_SmartGasMeter 0x02, 0x89
144#define EL_GeneralLighting 0x02, 0x90
145#define EL_Buzzer 0x02, 0xA0
147#define EL_ElectricHotWaterPot 0x03, 0xB2
148#define EL_Refrigerator 0x03, 0xB7
149#define EL_CombinationMicrowaveOven 0x03, 0xB8
150#define EL_CookingHeater 0x03, 0xB9
151#define EL_RiceCooker 0x03, 0xBB
152#define EL_WashingMachine 0x03, 0xC5
153#define EL_ClothesDryer 0x03, 0xC6
154#define EL_WasherAndDryer 0x03, 0xD3
156#define EL_Weighing 0x04, 0x01
158#define EL_Switch 0x05, 0xFD
159#define EL_Controller 0x05, 0xFF
161#define EL_Display 0x06, 0x01
162#define EL_Television 0x06, 0x02
164#define EL_NodeProfile 0x0e, 0xf0
167#define EL_DEVID_NODEPROFILE -1
168#define EL_DEVID_NOTHING -2
169#define EL_DEVID_MULTI -3
173typedef bool (*
ELCallback)(
byte[],
byte[],
byte[], byte, byte, byte, byte,
byte[]);
188 int _sendPacketSize = 0;
189 int _readPacketSize = 0;
206 EL(WiFiUDP &udp,
byte classGroupCode,
byte classCode,
byte instanceNumber);
207 EL(WiFiUDP &udp,
byte eojs[][3],
int count);
214 void update(
const byte epc, std::initializer_list<byte> edt);
215 void update(
const int devId,
const byte epc, std::initializer_list<byte> edt);
218 byte *
at(
const byte epc);
219 byte *
at(
const int devId,
const byte epc);
222 void send(IPAddress toip,
byte sBuffer[],
int size);
223 void sendOPC1(
const IPAddress toip,
const byte tid[],
const byte seoj[],
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
224 void sendOPC1(
const IPAddress toip,
const byte seoj[],
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
225 void sendOPC1(
const IPAddress toip,
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
226 void sendOPC1ID(
const IPAddress toip,
const int devId,
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
227 void sendBroad(
byte sBuffer[],
int size);
228 void sendMulti(
byte sBuffer[],
int size);
229 void sendMultiOPC1(
const byte tid[],
const byte seoj[],
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
230 void sendMultiOPC1(
const byte seoj[],
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
231 void sendMultiOPC1(
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
232 void sendMultiOPC1ID(
const int devId,
const byte deoj[],
const byte esv,
const byte epc,
const byte pdcedt[]);
234 void sendDetails(
const IPAddress toip,
const byte tid[],
const byte seoj[],
const byte deoj[],
const byte esv,
const byte opc,
const byte detail[],
const byte detailSize);
#define EL_BUFFER_SIZE
BUFFER_SIZE
Definition: EL.h:62
bool(* ELCallback)(byte[], byte[], byte[], byte, byte, byte, byte, byte[])
Definition: EL.h:173
Subclasses for ECHONET Lite protocol
Main class for EL
Definition: EL.h:180
void sendMultiOPC1ID(const int devId, const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
OPC一個用のマルチキャスト送信、seojの代わりにIDで指定、TID自動
Definition: EL.cpp:533
void begin(void)
通信の開始、受信開始
Definition: EL.cpp:199
void delPtr(byte ptr[])
byte[] を安全にdeleteするinline関数
Definition: EL.cpp:1420
void replySetDetail(const IPAddress toip, const byte seoj[])
Setに対して複数OPCにも対応して返答する内部関数
Definition: EL.cpp:890
void sendMulti(byte sBuffer[], int size)
マルチキャストによる送信(default: 192.168.1.255)
Definition: EL.cpp:428
int parsePacket(void)
受信データを読む
Definition: EL.cpp:1068
void returner(void)
受信データを処理する。EL処理でupdateしたら呼ぶ
Definition: EL.cpp:1097
void sendDetails(const IPAddress toip, const byte tid[], const byte seoj[], const byte deoj[], const byte esv, const byte opc, const byte detail[], const byte detailSize)
複数のEPCで送信する場合はこれを使う
Definition: EL.cpp:696
void send(IPAddress toip, byte sBuffer[], int size)
IP指定による送信
Definition: EL.cpp:554
bool verifyPacket(const byte data[], int size)
受信パケットの正常生チェック
Definition: EL.cpp:1434
void recvProcess(void)
受信処理
Definition: EL.cpp:1184
ELOBJ profile
profile object (for specialist)
Definition: EL.h:200
byte _rBuffer[EL_BUFFER_SIZE]
receive buffer
Definition: EL.h:202
byte * at(const byte epc)
EPCの値を取得する, eojが1個の場合(複数の場合は0番に相当)
Definition: EL.cpp:372
void replyGetDetail(const IPAddress toip, const byte seoj[])
Getに対して複数OPCにも対応して返答する内部関数
Definition: EL.cpp:732
int getDevId(const byte obj[])
device idを取得する内部関数
Definition: EL.cpp:1382
void update(const byte epc, PDCEDT pdcedt)
EPCの値を変更する, eojが1個の場合(複数の場合は0番に相当)
Definition: EL.cpp:301
boolean replyGetDetail_sub(const byte eoj[], const byte epc, int &devId)
EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数
Definition: EL.cpp:855
ELOBJ * devices
device objects (for multi eoj)
Definition: EL.h:201
void tidAutoIncrement(void)
TIDの自動インクリメント、オーバーフロー対策
Definition: EL.cpp:179
void sendOPC1(const IPAddress toip, const byte tid[], const byte seoj[], const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
OPC1指定による送信(SEOJも指定する,ほぼ内部関数)
Definition: EL.cpp:603
void checkInfAndSend(int devId, const byte epc)
INFプロパティならマルチキャストで送信
Definition: EL.cpp:1032
void commonConstructor(WiFiUDP &udp, byte eojs[][3], int count)
コンストラクタ共通処理
Definition: EL.cpp:49
int read()
受信データを受け取る
Definition: EL.cpp:1084
boolean replySetDetail_sub(const byte eoj[], const byte epc, int &devId)
EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数
Definition: EL.cpp:999
byte _tid[2]
TID (semi-auto incremented)
Definition: EL.h:203
void printAll(void)
インスタンスの情報を表示
Definition: EL.cpp:1342
void sendMultiOPC1(const byte tid[], const byte seoj[], const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
OPC一個用のマルチキャスト送信、TID指定有り
Definition: EL.cpp:470
void sendBroad(byte sBuffer[], int size)
ブロードキャストによる送信(default: 192.168.1.255)
Definition: EL.cpp:399
void sendOPC1ID(const IPAddress toip, const int devId, const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
Definition: EL.cpp:679
IPAddress remoteIP(void)
受信データの送信元を取得する
Definition: EL.cpp:1076
EL Object
Definition: ELOBJ.h:75
PDC and EDT in ELOBJ
Definition: ELOBJ.h:35
byte * pdcedt
Definition: main.cpp:56