Arduino遥控大金(daikin)冷气 (3) – 网路
看这些时必需要先阅读过
之后才会对于Arduino_IRremote_Daikin for arduino的library很熟悉,接下来才能真正的实用它。
经过Danny不断尝试后完成几个版的测试,最后决定先用最简易的方式完成网路控制的初步功能,所以需要配合官方出品的EthernetShield。
准备工作
硬体:
- Arduino x1
- EthernetShield x1
- DHT 11 x1
- IR 电路 x 1
电路:
程式:
Library
请先确实安装上述的Library后再进行范例程式的下载、使用。
范例程式
此范例程式已经包含基本说明,下载后请详细阅读。
开始
首先文中说明会使用DaikinEthernet
程式说明中的部分内容来解释怎么使用并验证功能。
网路设定
范例程式准备好时,必需要先将网路环境设定成您的环境方能使用,目前因程式还未提供完整的设定的介面,所以需要一开始在程式中就设定正确,以下为以网路环境 192.168.9.xxx
网段来说明,该Arduino所使用的IP:192.168.9.59
。
上述状况清楚后,开启范例程式DaikinEthernet.ino
并且找到网路IP设定的地方:
将IP改成你网段的设定就完成整个范例程式的设定,如果你需要与连外网路连接,那就需要再设定Netmask
、Gateway
。
网路连外
找到IP设定的程式内容:
IPAddress ip(192, 168, 9, 59); // Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80);
新增其他设定的程式:
IPAddress gateway(192, 168, 9, 1); IPAddress networkmask(255, 255, 255, 0);
所以程式新增为:
IPAddress ip(192, 168, 9, 59); IPAddress gateway(192, 168, 9, 1); IPAddress networkmask(255, 255, 255, 0); // Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80);
再来将设定存入:
寻找设定网路的程式段:
//ethernet shield init Ethernet.begin(mac, ip); Serial.println(Ethernet.localIP()); server.begin();
修改为:
//ethernet shield init Ethernet.begin(mac, ip, gateway, networkmask); Serial.println(Ethernet.localIP()); server.begin();
网路设定一切都完成后,接下来就是将范例程式编译
、上传至Arduino
的动作。
上传程式码
如何上传程式码这部分就不加以描述,用部分撷图来提供过程:
Daikin Ethernet Command/Format 命令与格式
此段功能是直接将DaikinEthernet说明撷取下来的,使用时详看一下。
format 格式
http://your ip/action[get|set][number][value] http://你的位址/动作[取|存][号码][值]
action 动作
action is device like sensor,daikin ac…etc.
get/set 取//存
get is ?
,set is =
取值为问号?
,存值为=
number 号码
number can support same type of devices,but it is reserve and value is 00
.
号码为了将来能支援同类型的装置而准备,目前功能未完成,预设值以00
value 值
value is two digital ascii number a group.ex: 1 is 01
.
值为两位数的字串型数值,像数值1则以01
表示
example 范例
http://192.168.9.59/ft?00
check your arduino feature and response like:
检查你的arduino支援功能的请求,得到的结果如下:
{"status":"ok","version":"1","ac":"1,"humidity":"1","temperature":"1"}
command 命令
number is reserve and value is 00
getter 取值命令
ft?00
get feature 取得支援功能
{"status":"ok","version":"1","ac":"1,"humidity":"1","temperature":"1"}
hm?00
get humidity 取得溼度
{"status":"ok","number":"0","humidity":"32.00"}
tp?00
get temperature 取得温度
{"status":"ok","number":"0","temperature":"25.00"}
ac?00
get air condition state 取得空调的状态
{"status":"ok","number":"0","power":"0","swing":"0","mode":"0","speed":"0","temperature":"25"}
setter 存值命令
ac=[00][power][swing][mode][speed][temperature]
set air condition state 设定空调的状态
power 电源
0: off 1: on
swing 摆动
0:off 1:on
mode 模式
0:FAN 1:COOL 2:DRY
speed 速度
0:speed 1 1:speed 2 2:speed 3 3:speed 4 4:speed 5 5:Auto 6:moon
temperature 温度
18 ~ 33 degree.
功能测试
DaikinEthernet范例程式未提供Web介面控制功能,功能测试使用cURL测试完整性,未来会提供iOS/Android的用户端测试!
范例
1.查看目前温度
curl http://192.168.9.59/tp?00
结果:
{"status":"ok","number":"0","temperature":"23.00"}
2.查看目前溼度
curl http://192.168.9.59/hm?00
结果:
{"status":"ok","number":"0","humidity":"33.00"}
3.控制大金冷气
电源:开启 摆能:关 模式:冷气 速度:自动 温度:25度
curl http://192.168.9.59/ac=000100010525
结果:
{"status":"ok"}
如果命令不完成或错误会产生如下的结果:
{"status":"command error"}
4.查看大金冷气状态
curl http://192.168.9.59/ac?00
结果:
{"status":"ok","number":"0","power":"1","swing":"0","mode":"1","speed":"5","temperature":"25"}
结论
此次在Arduino_IRremote_Daikin功能上增加网路的功能,提供用网路控制大金冷气及温、溼度资讯查询的介面,一旦介面提供了,那客户端的程式只要支援介面的命令,也能提供更简便的操作。例如:使用Raspberry Pi加上Web Server就能提供Web上的设定功能,或是将功能写在iOS/Android之上,那就更能提供透过网路更加强弹性的控制大金冷气…等众多功能延伸。