plugin.Name = "FibaroGlobalVariables"; plugin.OnChangeRequest = onChangeRequest; plugin.OnConnect = onConnect; plugin.OnDisconnect = onDisconnect; plugin.OnPoll = onPoll; plugin.OnSynchronizeDevices = onSynchronizeDevices; plugin.PollingInterval = 5000; plugin.DefaultSettings = { "Host": "192.168.1.100", "Port": "80", "Username": "", "Password": "" }; var http = new HTTPClient(); var baseURL = null; var credentials = {} function onChangeRequest(device, attribute, value) { switch (attribute) { case "VariableValue": http.put(baseURL + "/globalVariables/" + device.Id, { name: device.Id, value: value, readOnly: false, isEnum: false }, { auth: credentials, headers: { 'content-type': 'application/x-www-form-urlencoded' } }); break; default: break; } } function onConnect() { baseURL = "http://" + plugin.Settings["Host"] + ":" + plugin.Settings["Port"] + "/api"; credentials = { username: plugin.Settings["Username"], password: plugin.Settings["Password"], authType: "basic" } } function onDisconnect() { } function onPoll() { var r = http.get(baseURL + "/globalVariables", { auth: credentials }); var variables = r.data; for (var v in variables) { var variable = variables[v]; var pluginDevice = plugin.Devices[variable.name]; if (pluginDevice) { pluginDevice.VariableValue = variable.value; } } } function onSynchronizeDevices() { var r = http.get(baseURL + "/globalVariables", { auth: credentials }); var variables = r.data; for (var v in variables) { var variable = variables[v]; var device = new Device(); device.Id = variable.name; device.DisplayName = variable.name; device.DeviceType = "GlobalVariable"; device.Attributes = ["VariableValue"]; device.TileTemplate = "GlobalVariableTile.xaml"; plugin.Devices[device.Id] = device; } }