相较于一个Arduino只能作为小爱同学的一个执行器
多个区分控制需要更改电灯科技提供的设备类型
#define BLINKER_MIOT_MULTI_OUTLET
通过这个定义,将设备定义为一个具有四个口的插座
对应事件处理的代码
//在这里使用了四个电动机作为示例WriteMotor1-4void miotPowerState(const String & state, uint8_t num) {BLINKER_LOG("need set outlet: ", num, ", power state: ", state); if (num == 1) //第几号插口{if (state == BLINKER_CMD_ON)//收到开的指令{ BlinkerMIOT.powerState("on", num); //如果小爱同学老是提醒检查设备BlinkerMIOT.print(); //需要操作后返回设备状态,小爱说完成了WriteMotor1(true);}if (state == BLINKER_CMD_OFF)//收到关的指令{BlinkerMIOT.powerState("off", num);BlinkerMIOT.print(); WriteMotor1(false);}}if (num == 2){if (state == BLINKER_CMD_ON) {BlinkerMIOT.powerState("on", num);BlinkerMIOT.print(); WriteMotor2(true);}if (state == BLINKER_CMD_OFF) {BlinkerMIOT.powerState("off", num);BlinkerMIOT.print();WriteMotor2(false); }}if (num == 3){if (state == BLINKER_CMD_ON) {BlinkerMIOT.powerState("on", num);BlinkerMIOT.print();RemoteMotor3(true);}if (state == BLINKER_CMD_OFF) {BlinkerMIOT.powerState("off", num);BlinkerMIOT.print(); RemoteMotor3(false);}}if (num == 4){if (state == BLINKER_CMD_ON) {BlinkerMIOT.powerState("on", num);BlinkerMIOT.print();RemoteMotor4(true);}if (state == BLINKER_CMD_OFF) {BlinkerMIOT.powerState("off", num);BlinkerMIOT.print();RemoteMotor4(false);}}if(num == 0) //零号为整个插排的开关关闭{if (state == BLINKER_CMD_ON) {BlinkerMIOT.powerState("on", 0);BlinkerMIOT.print();WriteMotor1(true);WriteMotor2(true);RemoteMotor3(true);RemoteMotor4(true);}if (state == BLINKER_CMD_OFF) {BlinkerMIOT.powerState("off", 0);BlinkerMIOT.print();WriteMotor1(false);WriteMotor2(false);RemoteMotor3(false);RemoteMotor4(false);}}}
对应状态查询的代码
void miotQuery(int32_t queryCode, uint8_t num){BLINKER_LOG("Query outlet: ", num,", codes: ", queryCode);switch (queryCode){case BLINKER_CMD_QUERY_ALL_NUMBER :BLINKER_LOG("MIOT Query All"); /*相对于单个控制,需要根据特定的num返回对应num号接口的状态*/BlinkerMIOT.powerState(MState[num] ? "on" : "off", num);BlinkerMIOT.print();break;case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :BLINKER_LOG("MIOT Query Power State");BlinkerMIOT.powerState(MState[num] ? "on" : "off", num);BlinkerMIOT.print();break;default :BlinkerMIOT.powerState(MState[num] ? "on" : "off", num);BlinkerMIOT.print();break;}}
其余部分可以参考普通的单个开关控制器。
接下来操作小爱同学的部分
小爱-个人中心-我的设备-智能家居,中应该可以看到5个插排设备,
这五个设备分别对应1-4和0(总控)
接下来添加训练即可