Many changes - not yet "controlled" updates.
This commit is contained in:
262
Firmware/WeMo.h
Normal file
262
Firmware/WeMo.h
Normal file
@@ -0,0 +1,262 @@
|
||||
/*
|
||||
|
||||
FAUXMO ESP 2.4.0
|
||||
|
||||
Copyright (C) 2016 by Xose Pérez <xose dot perez at gmail dot com>
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
const char UDP_TEMPLATE[] PROGMEM =
|
||||
"HTTP/1.1 200 OK\r\n"
|
||||
"CACHE-CONTROL: max-age=86400\r\n"
|
||||
"DATE: Mon, 22 Jun 2015 17:24:01 GMT\r\n"
|
||||
"EXT:\r\n"
|
||||
"LOCATION: http://%s:%d/setup.xml\r\n"
|
||||
"OPT: \"http://schemas.upnp.org/upnp/1/0/\"; ns=01\r\n"
|
||||
"01-NLS: %s\r\n"
|
||||
"SERVER: Unspecified, UPnP/1.0, Unspecified\r\n"
|
||||
"ST: %s\r\n"
|
||||
"USN: uuid:Socket-1_0-%s::"
|
||||
"%s\r\n" // %s = urn:Belkin:device:** (Echo Dot 2Gen, Echo 1Gen) or %s = upnp:rootdevice (Echo 2Gen, Echo Plus)
|
||||
"X-User-Agent: redsonic\r\n"
|
||||
"\r\n";
|
||||
|
||||
const char SETUP_TEMPLATE[] PROGMEM =
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<root xmlns=\"urn:Belkin:device-1-0\">\n"
|
||||
" <specVersion>\n"
|
||||
" <major>1</major>\n"
|
||||
" <minor>0</minor>\n"
|
||||
" </specVersion>\n"
|
||||
" <device>\n"
|
||||
" <deviceType>urn:Belkin:device:controllee:1</deviceType>\n"
|
||||
" <friendlyName>%s</friendlyName>\n"
|
||||
" <manufacturer>Belkin International Inc.</manufacturer>\n" ///< must be "Belkin..." for Alexa discovery
|
||||
" <manufacturerURL>http://www.smart-family.net</manufacturerURL>\n" ///<
|
||||
" <modelDescription>Smartware Grow Controller</modelDescription>\n" ///<
|
||||
" <modelName>Grow Controller</modelName>\n" ///<
|
||||
" <modelNumber>1.0.0</modelNumber>\n"
|
||||
#if 0
|
||||
" <modelURL>http://www.smart-family.net</modelURL>\n" ///< This causes it to fail to send completely
|
||||
#endif
|
||||
" <UDN>uuid:Socket-1_0-%s</UDN>\n"
|
||||
" <serialNumber>%s</serialNumber>\n"
|
||||
" <iconList>\n"
|
||||
" <mimetype>jpg</mimetype>\n"
|
||||
" <width>100</width>\n"
|
||||
" <height>100</height>\n"
|
||||
" <depth>100</depth>\n"
|
||||
" <url>icon.jpg</url>\n"
|
||||
" </iconList>\n"
|
||||
" <presentationURL>http://%s:%d</presentationURL>\n"
|
||||
#if 0
|
||||
" <serviceList>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:WiFiSetup:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:WiFiSetup1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/WiFiSetup1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/WiFiSetup1</eventSubURL>\n"
|
||||
" <SCPDURL>/setupservice.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:timesync:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:timesync1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/timesync1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/timesync1</eventSubURL>\n"
|
||||
" <SCPDURL>/timesyncservice.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:basicevent:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:basicevent1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/basicevent1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/basicevent1</eventSubURL>\n"
|
||||
" <SCPDURL>/eventservice.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:firmwareupdate:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:firmwareupdate1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/firmwareupdate1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/firmwareupdate1</eventSubURL>\n"
|
||||
" <SCPDURL>/firmwareupdate.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:rules:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:rules1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/rules1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/rules1</eventSubURL>\n"
|
||||
" <SCPDURL>/rulesservice.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:metainfo:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:metainfo1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/metainfo1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/metainfo1</eventSubURL>\n"
|
||||
" <SCPDURL>/metainfoservice.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:remoteaccess:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:remoteaccess1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/remoteaccess1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/remoteaccess1</eventSubURL>\n"
|
||||
" <SCPDURL>/remoteaccess.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:deviceinfo:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:deviceinfo1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/deviceinfo1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/deviceinfo1</eventSubURL>\n"
|
||||
" <SCPDURL>/deviceinfoservice.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:smartsetup:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:smartsetup1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/smartsetup1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/smartsetup1</eventSubURL>\n"
|
||||
" <SCPDURL>/smartsetup.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" <service>\n"
|
||||
" <serviceType>urn:Belkin:service:manufacture:1</serviceType>\n"
|
||||
" <serviceId>urn:Belkin:serviceId:manufacture1</serviceId>\n"
|
||||
" <controlURL>/upnp/control/manufacture1</controlURL>\n"
|
||||
" <eventSubURL>/upnp/event/manufacture1</eventSubURL>\n"
|
||||
" <SCPDURL>/manufacture.xml</SCPDURL>\n"
|
||||
" </service>\n"
|
||||
" </serviceList>\n"
|
||||
#endif
|
||||
" </device>\n"
|
||||
"</root>\n";
|
||||
|
||||
const char EVENTSERVICE_TEMPLATE[] PROGMEM =
|
||||
"<scpd xmlns=\"urn:Belkin:service-1-0\">"
|
||||
"<actionList>"
|
||||
"<action>"
|
||||
"<name>SetBinaryState</name>"
|
||||
"<argumentList>"
|
||||
"<argument>"
|
||||
"<retval />"
|
||||
"<name>BinaryState</name>"
|
||||
"<relatedStateVariable>BinaryState</relatedStateVariable>"
|
||||
"<direction>in</direction>"
|
||||
"</argument>"
|
||||
"</argumentList>"
|
||||
"</action>"
|
||||
"<action>"
|
||||
"<name>GetBinaryState</name>"
|
||||
"<argumentList>"
|
||||
"<argument>"
|
||||
"<retval/>"
|
||||
"<name>BinaryState</name>"
|
||||
"<relatedStateVariable>BinaryState</relatedStateVariable>"
|
||||
"<direction>out</direction>"
|
||||
"</argument>"
|
||||
"</argumentList>"
|
||||
"</action>"
|
||||
"</actionList>"
|
||||
"<serviceStateTable>"
|
||||
"<stateVariable sendEvents=\"yes\">"
|
||||
"<name>BinaryState</name>"
|
||||
"<dataType>Boolean</dataType>"
|
||||
"<defaultValue>0</defaultValue>"
|
||||
"</stateVariable>"
|
||||
"<stateVariable sendEvents=\"yes\">"
|
||||
"<name>level</name>"
|
||||
"<dataType>string</dataType>"
|
||||
"<defaultValue>0</defaultValue>"
|
||||
"</stateVariable>"
|
||||
"</serviceStateTable>"
|
||||
"</scpd>\r\n"
|
||||
"\r\n";
|
||||
|
||||
const char METAINFO_TEMPLATE[] PROGMEM =
|
||||
"<scpd xmlns=\"urn:Belkin:service-1-0\">"
|
||||
"<specVersion><major>1</major><minor>0</minor></specVersion>"
|
||||
"<actionList>"
|
||||
"<action>"
|
||||
"<name>GetMetaInfo</name>"
|
||||
"<argumentList>"
|
||||
"<retval/>"
|
||||
"<name>GetMetaInfo</name>"
|
||||
"<relatedStateVariable>MetaInfo</relatedStateVariable>"
|
||||
"<direction>in</direction>"
|
||||
"</argumentList>"
|
||||
"</action>"
|
||||
"</actionList>"
|
||||
"<serviceStateTable>"
|
||||
"<stateVariable sendEvents=\"yes\">"
|
||||
"<name>MetaInfo</name>"
|
||||
"<dataType>string</dataType>"
|
||||
"<defaultValue>0</defaultValue>"
|
||||
"</stateVariable>"
|
||||
"</serviceStateTable>"
|
||||
"</scpd>\r\n"
|
||||
"\r\n";
|
||||
|
||||
const char SETSTATE_TEMPLATE[] PROGMEM =
|
||||
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"
|
||||
"<s:Body>"
|
||||
"<u:SetBinaryState xmlns:u=\"urn:Belkin:service:basicevent:1\">"
|
||||
"<BinaryState>%d</BinaryState>"
|
||||
"</u:SetBinaryState>"
|
||||
"</s:Body>"
|
||||
"</s:Envelope>\r\n";
|
||||
|
||||
const char GETSTATE_TEMPLATE[] PROGMEM =
|
||||
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"
|
||||
"<s:Body>"
|
||||
"<u:GetBinaryStateResponse xmlns:u=\"urn:Belkin:service:basicevent:1\">"
|
||||
"<BinaryState>%d</BinaryState>"
|
||||
"</u:GetBinaryStateResponse>"
|
||||
"</s:Body>"
|
||||
"</s:Envelope>\r\n";
|
||||
|
||||
const char HEADERS[] PROGMEM =
|
||||
"HTTP/1.1 200 OK\r\n"
|
||||
"CONTENT-LENGTH: %d\r\n"
|
||||
"CONTENT-TYPE: text/xml\r\n"
|
||||
"DATE: Sun, 01 Jan 2017 00:00:00 GMT\r\n"
|
||||
"LAST-MODIFIED: Sat, 01 Jan 2017 00:00:00 GMT\r\n"
|
||||
"SERVER: Unspecified, UPnP/1.0, Unspecified\r\n"
|
||||
"X-USER-AGENT: redsonic\r\n"
|
||||
"CONNECTION: close\r\n\r\n";
|
||||
|
||||
const char HEADERJPG[] PROGMEM =
|
||||
"HTTP/1.1 200 OK\r\n"
|
||||
"CONTENT-LENGTH: %d\r\n"
|
||||
"CONTENT-TYPE: image/jpg\r\n"
|
||||
"DATE: Sun, 01 Jan 2017 00:00:00 GMT\r\n"
|
||||
"LAST-MODIFIED: Sat, 01 Jan 2017 00:00:00 GMT\r\n"
|
||||
"SERVER: Unspecified, UPnP/1.0, Unspecified\r\n"
|
||||
"X-USER-AGENT: redsonic\r\n"
|
||||
"CONNECTION: close\r\n\r\n";
|
||||
|
||||
const char HEADERPNG[] PROGMEM =
|
||||
"HTTP/1.1 200 OK\r\n"
|
||||
"CONTENT-LENGTH: %d\r\n"
|
||||
"CONTENT-TYPE: image/png\r\n"
|
||||
"DATE: Sun, 01 Jan 2017 00:00:00 GMT\r\n"
|
||||
"LAST-MODIFIED: Sat, 01 Jan 2017 00:00:00 GMT\r\n"
|
||||
"SERVER: Unspecified, UPnP/1.0, Unspecified\r\n"
|
||||
"X-USER-AGENT: redsonic\r\n"
|
||||
"CONNECTION: close\r\n\r\n";
|
||||
Reference in New Issue
Block a user