OnTrue
Program.Setup(()=>{
Program.AddInputField("WeMo.IPAddress1", "", "1. IP Address of WeMo Switch 1");
Program.AddInputField("WeMo.Refresh", "", "2. Time in seconds between each refresh");
Program.AddInputField("WeMo.AlarmAD", "", "3. Activate the activation/désactivation with alarm (1 else 0)");
Program.AddVirtualModule("HomeAutomation.WeMo", "1", "Switch", "homegenie/generic/switch");
});
return true;
var WeMo_IPAddress1 = Program.InputField("WeMo.IPAddress1").Value;
var WeMo_AlarmAD = Program.InputField("WeMo.AlarmAD").Value;
var WeMo_Refresh = Program.InputField("WeMo.Refresh").DecimalValue;
Action<string,string>
Switchhhh = (string AddressIP, string ONOFF) => {
if ( ONOFF == "on") {
ONOFF = "1";
}
if ( ONOFF == "off") {
ONOFF = "0";
}
try {
var request = Net.WebService("http://"+AddressIP+":49153/upnp/control/basicevent1")
.AddHeader("Accept", "")
.AddHeader("Content-type", "text/xml; charset=\"utf-8\"")
.AddHeader("SOAPACTION", "\"urn:Belkin:service:basicevent:1#SetBinaryState\"")
.Post("<?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:SetBinaryState xmlns:u=\"urn:Belkin:service:basicevent:1\"><BinaryState>"+ONOFF+"</BinaryState></u:SetBinaryState></s:Body></s:Envelope>");
var result = request.GetData();
//Program.Notify("WeMo", result);
} catch (Exception e) {
Program.Notify("HomeAutomation.WeMo ERROR!", e.Message);
}
};
When.ModuleParameterChanged( (module, parameter) =>
{
if (WeMo_AlarmAD == "1") {
if (module.Is("Security Alarm System") && parameter.Is("Status.Level") && parameter.Value == "1")
{
Switchhhh(WeMo_IPAddress1,"on");
return false;
}
if (module.Is("Security Alarm System") && parameter.Is("Status.Level") && parameter.Value == "0")
{
Switchhhh(WeMo_IPAddress1,"off");
return false;
}
}
return true;
});
When.WebServiceCallReceived("HomeAutomation.WeMo", (args) => {
string[] reqs = ((string)args).Split('/');
string responseString = "";
try
{
string switchnumber = reqs[1];
string command = reqs[2];
var virtualMod = Modules.InDomain("HomeAutomation.WeMo").WithAddress(switchnumber).Get();
switch(command)
{
case "Control.On":
Program.RaiseEvent(virtualMod,"Status.Level","100","WeMo");
Switchhhh(WeMo_IPAddress1,"on");
break;
case "Control.Off":
Program.RaiseEvent(virtualMod,"Status.Level","0","WeMo");
Switchhhh(WeMo_IPAddress1,"off");
break;
}
} catch (Exception e) {
Program.Notify("HomeAutomation.WeMo ERROR!", e.Message);
}
if (responseString == "") {
return "{ 'ResponseValue' : 'OK' }";
} else {
return responseString ;
}
});
while (Program.IsEnabled)
{
try {
var request2 = Net.WebService("http://"+WeMo_IPAddress1+":49153/upnp/control/basicevent1")
.AddHeader("Accept", "")
.AddHeader("Content-type", "text/xml; charset=\"utf-8\"")
.AddHeader("SOAPACTION", "\"urn:Belkin:service:basicevent:1#GetBinaryState\"")
.Post("<?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:GetBinaryState xmlns:u=\"urn:Belkin:service:basicevent:1\"><BinaryState>1</BinaryState></u:GetBinaryState></s:Body></s:Envelope>");
var result2 = request2.GetData();
var virtualMod = Modules.InDomain("HomeAutomation.WeMo").WithAddress("1").Get();
if (result2.Contains("1")) {
if (virtualMod.IsOff) {
Program.RaiseEvent(virtualMod,"Status.Level","100","WeMo");
}
}
if (result2.Contains("0")) {
if (virtualMod.IsOn) {
Program.RaiseEvent(virtualMod,"Status.Level","0","WeMo");
}
}
} catch (Exception e) {
Program.Notify("HomeAutomation.WeMo ERROR!", e.Message);
}
Pause(WeMo_Refresh);
}
Program.GoBackground();
HomeAutomation.HomeGenie.Automation
1038
WeMo
MyScripts
2015-11-12T20:17:18.274045Z
2015-11-12T20:17:19.692653Z
CSharp
true