I think I figured this out… I used a packet sniffer and got the following when setting fan to “MIN” value…
POST /upnp/control/deviceevent1 HTTP/1.0
Content-Type: text/xml; charset="utf-8"
HOST: 192.168.1.74
Content-Length: 1052
SOAPACTION: "urn:Belkin:service:deviceevent:1#SetAttributes"
Connection: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:SetAttributes xmlns:u="urn:Belkin:service:deviceevent:1">
<attributeList><attribute><name>FanMode</name><value>1</value></attribute><attribute><name>DesiredHumidity</name><value>NULL</value></attribute><attribute><name>CurrentHumidity</name><value>NULL</value></attribute><attribute><name>WaterAdvise</name><value>NULL</value></attribute><attribute><name>NoWater</name><value>NULL</value></attribute><attribute><name>FilterLife</name><value>NULL</value></attribute><attribute><name>ExpiredFilterTime</name><value>NULL</value></attribute></attributeList>
</u:SetAttributes>
</s:Body>
</s:Envelope>
And the following response:
HTTP/1.0 200 OK
CONTENT-LENGTH: 288
CONTENT-TYPE: text/xml; charset="utf-8"
DATE: Tue, 08 Dec 2015 04:14:21 GMT
EXT:
SERVER: Unspecified, UPnP/1.0, Unspecified
X-User-Agent: redsonic
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body>
<u:SetAttributesResponse xmlns:u="urn:Belkin:service:deviceevent:1">
<attributeList>0</attributeList>
</u:SetAttributesResponse>
</s:Body> </s:Envelope>
interestingly enough, if I paste the text inside the “attributeList” tag here and don’t make it “preformatted text” I get something more readable since the above code has XML entity references.
<attribute><name>FanMode</name><value>1</value></attribute>
<attribute><name>DesiredHumidity</name><value>NULL</value></attribute>
<attribute><name>CurrentHumidity</name><value>NULL</value></attribute>
<attribute><name>WaterAdvise</name><value>NULL</value></attribute>
<attribute><name>NoWater</name><value>NULL</value></attribute>
<attribute><name>FilterLife</name><value>NULL</value></attribute>
<attribute><name>ExpiredFilterTime</name><value>NULL</value></attribute>
So I guess to extrapolate… to set Fan mode, you pick a value 1-5 (MIN-MAX), and all other values to NULL.
to set humidity… desired humidity is 0-5 (45%,50%,55%,60%,Max%)
Also… to turn the unit “OFF” you set the FanMode to 0 (which would make sense) and this shows as power off on the WeMo app.