Arduino遥控大金(daikin)冷气 (3) – 网路

Arduino遥控大金(daikin)冷气 (3) – 网路

看这些时必需要先阅读过

之后才会对于Arduino_IRremote_Daikin for arduino的library很熟悉,接下来才能真正的实用它。

经过Danny不断尝试后完成几个版的测试,最后决定先用最简易的方式完成网路控制的初步功能,所以需要配合官方出品的EthernetShield

准备工作

硬体:

  • Arduino x1
  • EthernetShield x1
  • DHT 11 x1
  • IR 电路 x 1

电路:

程式:

Library

请先确实安装上述的Library后再进行范例程式的下载、使用。

范例程式

DaikinEthernet

此范例程式已经包含基本说明,下载后请详细阅读。

开始

首先文中说明会使用DaikinEthernet程式说明中的部分内容来解释怎么使用并验证功能。

网路设定

范例程式准备好时,必需要先将网路环境设定成您的环境方能使用,目前因程式还未提供完整的设定的介面,所以需要一开始在程式中就设定正确,以下为以网路环境 192.168.9.xxx网段来说明,该Arduino所使用的IP:192.168.9.59

上述状况清楚后,开启范例程式DaikinEthernet.ino并且找到网路IP设定的地方:

将IP改成你网段的设定就完成整个范例程式的设定,如果你需要与连外网路连接,那就需要再设定NetmaskGateway

网路连外

找到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之上,那就更能提供透过网路更加强弹性的控制大金冷气…等众多功能延伸。