mydomoathome
Version:
Imperihome ISS API gateway to Domoticz
3 lines • 44.6 kB
JavaScript
require("source-map-support").install(),function(e){function a(t){if(s[t])return s[t].exports;var r=s[t]={exports:{},id:t,loaded:!1};return e[t].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}var s={};return a.m=e,a.c=s,a.p="",a(0)}([function(e,a,s){(function(a){function t(e){e&&logger.warn("No global conf in /etc/mydomoathome:"+err.message)}function r(){if(i("./config.json"))try{$.use("file",{file:"./config.json"},t)}catch(e){return logger.error("Global conf parsing issue !"),void logger.error(e)}}function n(){if(i("/etc/mydomoathome/config.json"))try{$.use("file",{file:"/etc/mydomoathome/config.json"},t)}catch(e){return logger.error("Global conf parsing issue !"),void logger.error(e)}}function u(){try{$.load(function(e){if(e)return void logger.warn("Conf load error:"+e.message)})}catch(e){return logger.error("Global conf load issue !"),void logger.error(e)}}function l(){$.get("port")||$.get("app_name")?(ue.set("port",process.env.PORT||$.get("port")),de=$.get("app_name")||"MyDomoAtHome",he=$.get("passcode")||he):logger.warn("basic configuration not found in /etc/mydomoathome/config.json, defaulting"),$.get("domoticz:host")||$.get("domoticz:port")||logger.warn("domoticz access configuration not found in /etc/mydomoathome/config.json, defaulting")}function i(e){try{return Q.statSync(e).isFile()}catch(a){return!1}}function o(e,a,s){function t(e){return(r?/^\d+[A-Za-z]*$/:/^\d+$/).test(e)}var r=s&&s.lexicographical,n=s&&s.zeroExtend,u=e.split("."),l=a.split(".");if(!u.every(t)||!l.every(t))return NaN;if(n){for(;u.length<l.length;)u.push("0");for(;l.length<u.length;)l.push("0")}r||(u=u.map(Number),l=l.map(Number));for(var i=0;i<u.length;++i){if(l.length==i)return 1;if(u[i]!=l[i])return u[i]>l[i]?1:-1}return u.length!=l.length?-1:0}function m(){var e=$.get("domoticz:ssl")===!0?"https":"http",a=$.get("domoticz:host")||"127.0.0.1",s=$.get("domoticz:port")||process.env.DOMO_PORT||"8080",t=$.get("domoticz:path")||"/",r=$.get("domo_path"),n="json.htm",u=!1;if($.get("domoticz:auth")&&$.get("domoticz:auth:username")&&$.get("domoticz:auth:password"))var u=$.get("domoticz:auth:username")+":"+$.get("domoticz:auth:password")+"@";if(u)var l=e+"://"+u+a+":"+s+t+n;else var l=e+"://"+a+":"+s+t+n;return process.env.DOMO?process.env.DOMO+"/json.htm":r?r+"/json.htm":l}function p(){var e=Z();if("undefined"!=typeof le&&null!==le&&le.isBefore(Z().add(2,"h")))return ie;var a={url:"https://api.github.com/repos/empierre/MyDomoAtHome/releases/latest",headers:{"User-Agent":"request"}};K(a,function(a,s,t){if(a||200!=s.statusCode)return"unknown";var r=JSON.parse(t);return le=e,ie=r.tag_name,logger.info("Refreshing version cache: "+r.tag_name),r.tag_name})}function c(e){var a,s;s="true"===e.HaveDimmer?1:0;var t=e.deviceId;switch(e.Status){case"On":a=1;var r=me[t];r?(s?(r.Action=0,r.MaxDimLevel=e.MaxDimLevel):r.Action=1,me[t]=r):r={MaxDimLevel:null,Action:1,graph:null,Selector:null},me[t]=r;break;case"Off":a=0;var r=me[t];r?(s?(r.Action=0,r.MaxDimLevel=e.MaxDimLevel):r.Action=1,me[t]=r):r={MaxDimLevel:null,Action:1,graph:null,Selector:null},me[t]=r;break;case"Open":a=1;var r=me[t];r?(r.Action=2,me[t]=r):r={MaxDimLevel:null,Action:2,graph:null,Selector:null},me[t]=r;break;case"Closed":a=0;var r=me[t];r?(r.Action=2,me[t]=r):r={MaxDimLevel:null,Action:2,graph:null,Selector:null},me[t]=r;break;case"Panic":a=1;var r=me[t];r?(r.Action=3,me[t]=r):r={MaxDimLevel:null,Action:3,graph:null,Selector:null},me[t]=r;break;case"Normal":a=0;var r=me[t];r?(r.Action=3,me[t]=r):r={MaxDimLevel:null,Action:3,graph:null,Selector:null},me[t]=r;break;default:a=e.Status}return a}function d(e){var a=0;switch(e.Status){case"On":case"Open":case"Panic":case"All On":a=1;break;case"Normal":case"Off":case"Closed":case"All Off":a=0;break;default:a=0}var s=me[e.idx]||{MaxDimLevel:null,Action:null,graph:null,Selector:null,Protected:null};if(s||"true"!==e.Protected||(s.Protected=1),me[e.idx]=s,"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var t={id:e.idx,name:e.Name,type:"DevSwitch",room:ce[e.PlanIDs[0]]};else{var t={id:e.idx,name:e.Name,type:"DevSwitch",room:"Switches"};pe.Switches=1}return params=[],params.push({key:"Status",value:a.toString()}),e.Energy&¶ms.push({key:"Energy",value:e.Energy}),t.params=params,t}function v(e){var a=Z(e.LastUpdate,"YYYY-MM-DD HH:mm:ss").valueOf(),s={id:e.idx,name:e.Name,type:"DevMultiSwitch",room:"Switches"},t=me[e.idx]||{MaxDimLevel:null,Action:null,graph:null,Selector:null,Protected:null};if(t||"true"!==e.Protected||(t.Protected=1),me[e.idx]=t,"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:e.idx,name:e.Name,type:"DevMultiSwitch",room:ce[e.PlanIDs[0]]};else{var s={id:e.idx,name:e.Name,type:"DevMultiSwitch",room:"Switches"};pe.Switches=1}var r=[];r.push({key:"LastRun",value:a});var n=e.LevelNames.split("|").join(",");e.LevelOffHidden&&(n=n.replace("Off,",""));var u=e.LevelNames.split("|"),t={MaxDimLevel:null,Action:null,graph:null,Selector:u};me[e.idx]=t;var l=e.Level/10;return r.push({key:"Value",value:u[l].toString()}),r.push({key:"Choices",value:n}),s.params=r,s}function h(e){var a=0;switch(e.SwitchType){case"Push On Button":a=1;break;case"Push Off Button":a=0;break;default:a=0}var s=me[e.idx]||{MaxDimLevel:null,Action:null,graph:null,Selector:null,Protected:null};if(s||"true"!==e.Protected||(s.Protected=1),me[e.idx]=s,"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var t={id:e.idx,name:e.Name,type:"DevSwitch",room:ce[e.PlanIDs[0]]};else{var t={id:e.idx,name:e.Name,type:"DevSwitch",room:"Switches"};pe.Switches=1}return params=[],params.push({key:"pulseable",value:"1"}),t.params=params,t}function y(e){var a=0;switch(a=c(e),e.SwitchType){case"Push On Button":a=1;break;case"Push Off Button":a=0;break;default:a=0}var s=me[e.idx]||{MaxDimLevel:null,Action:null,graph:null,Selector:null,Protected:null};if(s||"true"!==e.Protected||(s.Protected=1),me[e.idx]=s,"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var t={id:e.idx,name:e.Name,type:"DevRGBLight",room:ce[e.PlanIDs[0]]};else{var t={id:e.idx,name:e.Name,type:"DevRGBLight",room:"Switches"};pe.Switches=1}if(e.Status.match(/Set Level/)||"true"===e.HaveDimmer){var s={MaxDimLevel:null,Action:null,graph:null};me[e.idx]&&(s=me[e.idx]),s.MaxDimLevel=e.MaxDimLevel,s.Action=0,me[e.idx]=s,params=[],params.push({key:"Status",value:"1"}),params.push({key:"dimmable",value:"1"}),params.push({key:"Level",value:e.Level.toString()}),e.Energy&¶ms.push({key:"Energy",value:e.Energy}),t.params=params}else params=[],params.push({key:"Status",value:a}),t.params=params;return t}function f(e){var a=0;if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:e.idx,name:e.Name,type:"DevDimmer",room:ce[e.PlanIDs[0]]};else{var s={id:e.idx,name:e.Name,type:"DevDimmer",room:"Switches"};pe.Switches=1}var t=me[e.idx]||{MaxDimLevel:null,Action:null,graph:null,Selector:null,Protected:null};t||"true"!==e.Protected||(t.Protected=1),me[e.idx]=t,a=c(e),e.Status.match(/Set Level/)&&(a=1);var t={MaxDimLevel:null,Action:null,graph:null};return me[e.idx]&&(t=me[e.idx]),t.MaxDimLevel=e.MaxDimLevel,t.Action=0,me[e.idx]=t,params=[],params.push({key:"Status",value:a.toString()}),0==a?params.push({key:"Level",value:"0"}):params.push({key:"Level",value:e.Level.toString()}),e.Energy&¶ms.push({key:"Energy",value:e.Energy}),s.params=params,s}function D(e){var a=0;a=c(e);var s=me[e.idx]||{MaxDimLevel:null,Action:null,graph:null,Selector:null,Protected:null};s||"true"!==e.Protected||(s.Protected=1),me[e.idx]=s;var t=0,r=0,s={MaxDimLevel:null,Action:null,graph:null};me[e.idx]&&(s=me[e.idx]),s.Action=5,s.MaxDimLevel=e.MaxDimLevel,me[e.idx]=s,"Open"===e.Status?(t=e.Level||100,a=1):e.Status.match(/Set Level/)||"true"===e.HaveDimmer?(t=e.Level,a=t>0?1:0):(t=e.Level||0,a=0),"Venetian Blinds EU"!==e.SwitchType&&"Venetian Blinds US"!==e.SwitchType&&"RollerTrol, Hasta new"!==e.SwitchType||(r=1);var n={id:e.idx,name:e.Name,type:"DevShutter",room:"Switches"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var n={id:e.idx,name:e.Name,type:"DevShutter",room:ce[e.PlanIDs[0]]};else{var n={id:e.idx,name:e.Name,type:"DevShutter",room:"Switches"};pe.Switches=1}return params=[],params.push({key:"Status",value:a}),params.push({key:"Level",value:t.toString()}),params.push({key:"stopable",value:r.toString()}),params.push({key:"pulsable",value:"0"}),n.params=params,n}function g(e){var a=0;a=c(e);var s=me[e.idx]||{MaxDimLevel:null,Action:null,graph:null,Selector:null,Protected:null};s||"true"!==e.Protected||(s.Protected=1),me[e.idx]=s;var t=0,r=0,s={MaxDimLevel:null,Action:null,graph:null};me[e.idx]&&(s=me[e.idx]),s.Action=6,s.MaxDimLevel=e.MaxDimLevel,me[e.idx]=s,"Open"==e.Status?(t=100,a=1):e.Status.match(/Set Level/)||"true"===e.HaveDimmer?(t=e.Level,a=t>0?1:0):(t=e.Level||0,a=0),"Venetian Blinds EU"!==e.SwitchType&&"Venetian Blinds US"!==e.SwitchType&&"RollerTrol, Hasta new"!==e.SwitchType||(r=1);var n={id:e.idx,name:e.Name,type:"DevShutter",room:"Switches"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var n={id:e.idx,name:e.Name,type:"DevShutter",room:ce[e.PlanIDs[0]]};else{var n={id:e.idx,name:e.Name,type:"DevShutter",room:"Switches"};pe.Switches=1}return params=[],params.push({key:"Status",value:a}),params.push({key:"Level",value:t.toString()}),params.push({key:"stopable",value:r.toString()}),params.push({key:"pulsable",value:"0"}),n.params=params,n}function S(e){var a=Z(e.LastUpdate,"YYYY-MM-DD HH:mm:ss").valueOf(),s={id:e.idx,name:e.Name,type:"DevMotion",room:"Switches"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:e.idx,name:e.Name,type:"DevMotion",room:ce[e.PlanIDs[0]]};else{var s={id:e.idx,name:e.Name,type:"DevMotion",room:"Switches"};pe.Switches=1}params=[];var t=c(e);return params.push({key:"Armable",value:"0"}),params.push({key:"ackable",value:"0"}),params.push({key:"Armed",value:"1"}),params.push({key:"Tripped",value:t.toString()}),params.push({key:"lasttrip",value:a.toString()}),s.params=params,s}function x(e){var a=Z(e.LastUpdate,"YYYY-MM-DD HH:mm:ss").valueOf(),s={id:e.idx,name:e.Name,type:"DevDoor",room:"Switches"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:e.idx,name:e.Name,type:"DevDoor",room:ce[e.PlanIDs[0]]};else{var s={id:e.idx,name:e.Name,type:"DevDoor",room:"Switches"};pe.Switches=1}params=[];var t=c(e);return params.push({key:"armable",value:"0"}),params.push({key:"Ackable",value:"0"}),params.push({key:"Armed",value:"1"}),params.push({key:"Tripped",value:t.toString()}),params.push({key:"lasttrip",value:a.toString()}),s.params=params,s}function k(e){var a=Z(e.LastUpdate,"YYYY-MM-DD HH:mm:ss").valueOf(),s=0;"Security"==e.Type&&(s=1);var t={id:e.idx,name:e.Name,type:"DevSmoke",room:"Switches"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var t={id:e.idx,name:e.Name,type:"DevSmoke",room:ce[e.PlanIDs[0]]};else{var t={id:e.idx,name:e.Name,type:"DevSmoke",room:"Switches"};pe.Switches=1}params=[];var r=c(e);return params.push({key:"Armable",value:"0"}),params.push({key:"ackable",value:s.toString()}),params.push({key:"Armed",value:"1"}),params.push({key:"Tripped",value:r.toString()}),params.push({key:"lasttrip",value:a.toString()}),t.params=params,t}function P(e){if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevGenericSensor",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevGenericSensor",room:"Utility"};pe.Utility=1}return e.Status?(params=[],params.push({key:"Value",value:e.Status.toString()}),a.params=params):e.Data&&(params=[],params.push({key:"Value",value:e.Data.toString()}),a.params=params),a}function b(e){var a=/([0-9]+(?:\.[0-9]+)?) ?(.+)/,s=e.Data.match(a).slice(1),t=s[0],r=s[1],n={id:e.idx,name:e.Name,type:"DevGenericSensor",room:"Utility"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var n={id:e.idx,name:e.Name,type:"DevGenericSensor",room:ce[e.PlanIDs[0]]};else{var n={id:e.idx,name:e.Name,type:"DevGenericSensor",room:"Utility"};pe.Utility=1}return params=[],params.push({key:"Value",value:t.toString(),unit:r.toString(),graphable:"true"}),n.params=params,n}function I(e){pe.Utility=1;var a,s=/([0-9]+(?:\.[0-9]+)?) Watt/,t=/([0-9]+(?:\.[0-9]+)?) kWh/,r=[],n=[];if(e.UsageDeliv){var u={id:e.idx+"_L1",name:e.Name,type:"DevElectricity",room:"Utility"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var u={id:e.idx+"_L1",name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var u={id:e.idx+"_L1",name:e.Name,type:"DevElectricity",room:"Utility"};pe.Utility=1}var r=[],l=s.exec(e.Usage),i=0;null!=l&&(i=Math.ceil(Number(l[1])));var l=t.exec(e.CounterToday),o=0;null!=l&&(o=Math.ceil(Number(l[1]))),r.push({key:"Watts",value:i,unit:"W"}),r.push({key:"ConsoTotal",value:Math.ceil(o),unit:"kWh",graphable:"true"}),u.params=r,n.push(u);var r=[];if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var m={id:e.idx+"_L2",name:e.Name+"Deliv",type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var m={id:e.idx+"_L2",name:e.Name+"Deliv",type:"DevElectricity",room:"Utility"};pe.Utility=1}var l=s.exec(e.UsageDeliv),p=0;null!=l&&(p=Math.ceil(Number(l[1])));var l=t.exec(e.CounterDelivToday),c=0;null!=l&&(c=Math.ceil(Number(l[1]))),r.push({key:"Watts",value:p,unit:"W"}),r.push({key:"ConsoTotal",value:Math.ceil(c),unit:"kWh",graphable:"true"}),m.params=r,n.push(m);var r=[],d={id:e.idx+"_L3",name:e.Name+" CounterToday",type:"DevGenericSensor",room:"Utility"};CounterToday=Math.ceil(e.Counter),r.push({key:"Value",value:CounterToday,unit:"kWh",graphable:"true"}),d.params=r,n.push(d);var r=[],v={id:e.idx+"_L4",name:e.Name+" CounterDelivToday",type:"DevGenericSensor",room:"Utility"},l=t.exec(e.CounterDelivToday),h=0;return h=Math.ceil(e.CounterDeliv),r.push({key:"Value",value:h,unit:"kWh",graphable:"false"}),v.params=r,n.push(v),n}if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0?a={id:e.idx,name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]}:(a={id:e.idx,name:e.Name,type:"DevElectricity",room:"Utility"},pe.Utility=1),e.Usage){var l=s.exec(e.Usage),i=0;if(null!=l&&(i=l[1]),i||(i=0),r.push({key:"Watts",value:i,unit:"W"}),e.Data){var l=t.exec(e.Data),y=0;null!=l&&(y=Math.ceil(Number(l[1]))),r.push({key:"ConsoTotal",value:y.toString(),unit:"kWh",graphable:"true"})}}else if(e.CounterToday){var l=t.exec(e.CounterToday),i=0;if(null!=l&&(i=l[1]),i||(i=0),r.push({key:"Watts",value:i,unit:"kWh"}),e.Counter){var l=t.exec(e.Counter),y=0;null!=l&&(y=Math.ceil(Number(l[1]))),r.push({key:"ConsoTotal",value:y.toString(),unit:"kWh",graphable:"true"})}}else{var l=s.exec(e.Data),y=0;null!=l&&(y=Math.ceil(Number(l[1]))),r.push({key:"Watts",value:y.toString(),unit:"W",graphable:"true"})}return a.params=r,a}function N(e){var a=/[\s,]+/,s=[],t=e.Data.split(a),r=0;if(null!=t){if(r=t[0],"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var n={id:e.idx+"_L1",name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var n={id:e.idx+"_L1",name:e.Name,type:"DevElectricity",room:"Utility"};pe.Utility=1}var u=[];if(u.push({key:"Watts",value:r.toString(),unit:"W",graphable:"true"}),n.params=u,s.push(n),r=t[2],"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var l={id:e.idx+"_L2",name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var l={id:e.idx+"_L2",name:e.Name,type:"DevElectricity",room:"Utility"};pe.Utility=1}var i=[];if(i.push({key:"Watts",value:r.toString(),unit:"W",graphable:"true"}),l.params=i,s.push(l),r=t[4],"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var o={id:e.idx+"_L3",name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var o={id:e.idx+"_L3",name:e.Name,type:"DevElectricity",room:"Utility"};pe.Utility=1}var m=[];m.push({key:"Watts",value:r.toString(),unit:"W",graphable:"true"}),o.params=m,s.push(o)}return s}function w(e){var a=/([0-9]+(?:\.[0-9]+)?) /;if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:e.idx,name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var s={id:e.idx,name:e.Name,type:"DevElectricity",room:"Utility"};pe.Utility=1}var t,r=[];switch(e.SwitchTypeVal){case"0":t="kWh";break;case"1":t="m3";break;case"2":t="m3";break;case"3":t=e.ValueUnits.toString();break;case"4":t="kWh"}if(e.Counter){var n=a.exec(e.CounterToday),u=0;if(null!=n&&(u=Math.ceil(Number(n[1]))),u||(u=0),n=Math.ceil(u),r.push({key:"Watts",value:u,unit:t}),e.Counter){var n=a.exec(e.Counter),l=0;null!=n&&(l=Math.ceil(Number(n[1]))),r.push({key:"ConsoTotal",value:l.toString(),unit:t,graphable:"true"})}}else{var n=a.exec(e.Data),l=0;null!=n&&(l=Math.ceil(Number(n[1]))),r.push({key:"Watts",value:l.toString(),unit:t,graphable:"true"})}return s.params=r,s}function M(e){var a=/([0-9]+(?:\.[0-9]+)?) m3/,s=/([0-9]+(?:\.[0-9]+)?)/;if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var t={id:e.idx,name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var t={id:e.idx,name:e.Name,type:"DevElectricity",room:"Utility"};pe.Utility=1}var r=[];if(e.CounterToday){var n=a.exec(e.CounterToday),u=0;null!=n&&(u=n[1]),u||(u=0),r.push({key:"Watts",value:u.toString(),unit:"m3"})}if(e.Data){var n=s.exec(e.Counter),l=0;null!=n&&(l=Math.ceil(n[1])),r.push({key:"ConsoTotal",value:l.toString(),unit:"m3"})}return t.params=r,t}function O(e){var a=/([0-9]+(?:\.[0-9]+)?) Liter/,s=/([0-9]+(?:\.[0-9]+)?) m3/,t=0;if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var r={id:e.idx,name:e.Name,type:"DevElectricity",room:ce[e.PlanIDs[0]]};else{var r={id:e.idx,name:e.Name,type:"DevElectricity",room:"Utility"};pe.Utility=1}var n=[];if(e.CounterToday){var u=a.exec(e.CounterToday),l=0;null!=u&&(l=Number(u[1]),t=Number(u[1])),l||(l=0),n.push({key:"Watts",value:l.toString(),unit:"l",graphable:"false"})}if(e.Counter){var u=s.exec(e.Counter),i=0;null!=u&&(i=Number(u[1])),n.push({key:"ConsoTotal",value:i.toString(),unit:"m3",graphable:"true"})}return r.params=n,r}function L(e){var a=/([0-9]+(?:\.[0-9]+)?) l\/min/;if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:e.idx,name:e.Name,type:"DevGenericSensor",room:ce[e.PlanIDs[0]]};else{var s={id:e.idx,name:e.Name,type:"DevGenericSensor",room:"Utility"};pe.Utility=1}var t=[],r=a.exec(e.Data),n=0;return null!=r&&(n=Number(r[1])),t.push({key:"Value",value:n.toString(),unit:"l/s",graphable:!0}),s.params=t,s}function T(e){switch(e.Type){case"Temp":if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevTemperature",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevTemperature",room:"Temp"};pe.Temp=1}return s=[],s.push({key:"Value",value:e.Temp,unit:"°C",graphable:"true"}),a.params=s,a;case"Humidity":if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevHygrometry",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevHygrometry",room:"Temp"};pe.Temp=1}return s=[],s.push({key:"Value",value:e.Humidity,unit:"%",graphable:"true"}),a.params=s,a;case"Temp + Humidity":if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevTempHygro",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevTempHygro",room:"Temp"};pe.Temp=1}var s=[];return s.push({key:"Hygro",value:e.Humidity,unit:"%",graphable:"true"}),s.push({key:"Temp",value:e.Temp,unit:"°C",graphable:"true"}),a.params=s,a;case"Temp + Humidity + Baro":var t=[];if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevTempHygro",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevTempHygro",room:"Temp"};pe.Temp=1}var s=[];if(s.push({key:"Hygro",value:e.Humidity,unit:"%",graphable:"true"}),s.push({key:"Temp",value:e.Temp,unit:"°C",graphable:"true"}),a.params=s,t.push(a),"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx+"_1",name:e.Name,type:"DevPressure",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx+"_1",name:e.Name,type:"DevPressure",room:"Weather"};pe.Weather=1}return s=[],s.push({key:"Value",value:e.Barometer,unit:"mbar",graphable:"true"}),a.params=s,t.push(a),t;default:logger.info("General: should not happen")}}function A(e){if(pe.Weather=1,"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevPressure",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevPressure",room:"Weather"};pe.Weather=1}if(params=[],"Pressure"===e.SubType)if(e.Pressure<800){var s=1e3*e.Pressure;params.push({key:"Value",value:s,unit:"mbar",graphable:"true"})}else params.push({key:"Value",value:e.Pressure,unit:"bar",graphable:"true"});else if(e.Barometer<800){var s=1e3*e.Barometer;params.push({key:"Value",value:s,unit:"mbar",graphable:"true"})}else params.push({key:"Value",value:e.Barometer,unit:"bar",graphable:"true"});return a.params=params,a}function C(e){if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevRain",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevRain",room:"Weather"};pe.Weather=1}var s=[];return"undefined"!=typeof e.Rain&&null!==e.Rain&&s.push({key:"Accumulation",value:e.Rain.toString(),unit:"mm",graphable:"true"}),"undefined"!=typeof e.RainRate&&null!==e.RainRate&&s.push({key:"Value",value:e.RainRate.toString(),unit:"mm/h",graphable:"true"}),a.params=s,a}function U(e){var a={id:e.idx,name:e.Name,type:"DevUV",room:"Weather"};if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevUV",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevUV",room:"Weather"};pe.Weather=1}return params=[],params.push({key:"Value",value:e.UVI,unit:"",graphable:"true"}),a.params=params,a}function H(e){var a=/([0-9]+(?:\.[0-9]+)?) ?(.+)/,s=e.Data.match(a).slice(1),t=s[0],r=s[1];if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var n={id:e.idx,name:e.Name,type:"DevNoise",room:ce[e.PlanIDs[0]]};else{var n={id:e.idx,name:e.Name,type:"DevNoise",room:"Utility"};pe.Utility=1}return params=[],params.push({key:"Value",value:t,unit:r.toString(),graphable:"true"}),n.params=params,n}function Y(e){var a=/(\d+) Lux/,s=a.exec(e.Data),t=0;if(null!=s&&(t=s[1]),"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var r={id:e.idx,name:e.Name,type:"DevLuminosity",room:ce[e.PlanIDs[0]],params:[]};else{var r={id:e.idx,name:e.Name,type:"DevLuminosity",room:"Weather",params:[]};pe.Weather=1}return params=[],params.push({key:"Value",value:t,unit:"lux",graphable:"true"}),r.params=params,r}function W(e){var a=/(\d+) ppm/,s=a.exec(e.Data),t=0;if(null!=s&&(t=Number(s[1])),"undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var r={id:e.idx,name:e.Name,type:"DevCO2",room:ce[e.PlanIDs[0]],params:[]};else{var r={id:e.idx,name:e.Name,type:"DevCO2",room:"Temp",params:[]};pe.Temp=1}return params=[],params.push({key:"Value",value:t.toString(),unit:"ppm",graphable:"true"}),r.params=params,r}function E(e){if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevWind",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevWind",room:"Weather"};pe.Weather=1}var s=[];return s.push({key:"Speed",value:e.Speed,unit:"km/h",graphable:"true"}),"undefined"!=typeof e.Direction&&null!==e.Direction&&s.push({key:"Direction",value:e.Direction.toString(),unit:"°",graphable:"true"}),a.params=s,a}function R(e){if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var a={id:e.idx,name:e.Name,type:"DevThermostat",room:ce[e.PlanIDs[0]]};else{var a={id:e.idx,name:e.Name,type:"DevThermostat",room:"Switches"};pe.Utility=1}var s=[];return s.push({key:"cursetpoint",value:e.SetPoint.toString()}),s.push({key:"curtemp",value:e.SetPoint.toString()}),s.push({key:"step",value:"0.5"}),s.push({key:"curmode",value:"default"}),s.push({key:"availablemodes",value:"default"}),a.params=s,a}function _(e){var a=Z(e.LastUpdate,"YYYY-MM-DD HH:mm:ss").valueOf();if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:"SC"+e.idx,name:e.Name,type:"DevScene",room:ce[e.PlanIDs[0]]};else{var s={id:"SC"+e.idx,name:e.Name,type:"DevScene",room:"Scenes"};pe.Scenes=1}return params=[],params.push({key:"LastRun",value:a}),s.params=params,s}function V(e){var a=Z(e.LastUpdate,"YYYY-MM-DD HH:mm:ss").valueOf();if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:"SC"+e.idx,name:e.Name,type:"DevMultiSwitch",room:ce[e.PlanIDs[0]]};else{var s={id:"SC"+e.idx,name:e.Name,type:"DevMultiSwitch",room:"Scenes"};pe.Scenes=1}var t=[];return t.push({key:"LastRun",value:a}),t.push({key:"Value",value:e.Status}),t.push({key:"Choices",value:"On,Off"}),s.params=t,s}function j(e){var a=Z(e.LastUpdate,"YYYY-MM-DD HH:mm:ss").valueOf();if("undefined"!=typeof e.PlanIDs&&null!==e.PlanIDs[0]&&e.PlanIDs[0]>0)var s={id:e.idx,name:e.Name,type:"DevMultiSwitch",room:ce[e.PlanIDs[0]]};else{var s={id:e.idx,name:e.Name,type:"DevMultiSwitch",room:"Switches"};pe.Switches=1}var t=[];t.push({key:"LastRun",value:a});var r={MaxDimLevel:null,Action:10,graph:null,Selector:"Normal,Auto,AutoWithEco,Away,DayOff,Custom,HeatingOff"};me[e.idx]=r;e.Level/10;return t.push({key:"Value",value:e.Status.toString()}),t.push({key:"Choices",value:"Normal,Auto,AutoWithEco,Away,DayOff,Custom,HeatingOff"}),s.params=t,s}function B(e){var a=m()+"?type=devices&rid="+e,s=te("GET",a),t=JSON.parse(s.body.toString("utf-8"));return t.result[0].Type}function q(e){var a=m()+"?type=devices&rid="+e,s=te("GET",a),t=JSON.parse(s.body.toString("utf-8"));return t.result[0].SubType}function G(){var e=m()+"?type=cameras&rid=",a=te("GET",e),s=JSON.parse(a.body.toString("utf-8")),t=[];if("undefined"!=typeof s.result&&null!==s.result)for(var r=0;r<s.result.length;r++){var n={id:"C"+r,name:s.result[r].Name,type:"DevCamera",room:"Switches"},u=[];u.push({key:"localjpegurl",value:s.result[r].ImageURL}),n.params=u,t.push(n)}return t}var J=s(6),z=s(4),F=(s(15),s(12)),K=s(13),$=s(10),Q=s(5),X=s(11),Z=s(8),ee=(s(9),s(7)),ae=s(2),se=s(1),te=(s(3),s(14)),re=s(16),ne=s(!function(){var e=new Error('Cannot find module "./package.json"');throw e.code="MODULE_NOT_FOUND",e}()),ue=z();global.logger=re;var le,ie=p(),oe=ne.version,me={},pe=[],ce=[],de="MyDomoAtHome",ve=process.env.PORT||"3002",he=process.env.SEC||"";ue.set("port",ve),ue.set("view engine","ejs");var ye=process.env.MDAH_HOME||F.resolve(a+"/..");ue.use(ee()),ue.use(ae.json()),ue.use(ae.urlencoded({extended:!0})),process.env.MDAH_HOME?(ue.use(z["static"](F.join(process.env.MDAH_HOME+"/public"))),ue.set("views",F.resolve(process.env.MDAH_HOME+"/views")),logger.add(re.transports.File,{filename:process.env.MDAH_HOME+"/var/usage.log"})):(ue.use(z["static"](F.join(a+"/public"))),ue.set("views",F.resolve(a+"/views")),logger.add(re.transports.File,{filename:"/var/log/mydomoathome/usage.log"})),r(),n(),u(),l(),$.get("debug")===!0&&ue.use(logger("dev")),ue.use(ae.json()),ue.use(ae.urlencoded({extended:!1}));var fe=function(e,a,s){if(!$.get("auth")||null===$.get("auth"))return void s();var t=$.get("auth:username"),r=$.get("auth:password"),n=se(e);return n&&n.name&&n.pass?n.name!==t||n.pass!==r?(a.set("WWW-Authenticate","Basic realm=Authorization Required"),void a.sendStatus(401)):void s():(a.set("WWW-Authenticate","Basic realm=Authorization Required"),void a.sendStatus(401))};ue.get("/",fe,function(e,a){a.render("index",{node_version:process.version,app_name:de,domo_path:m(),mdah_ver:oe,my_ip:De,my_port:ue.get("port")})}),ue.get("/system",fe,function(e,a){var s=de;a.type("json");p();a.json({id:s,apiversion:1})}),ue.get("/rooms",fe,function(e,a){a.type("json");var s={url:m()+"?type=plans&order=name&used=true",headers:{"User-Agent":"request"}};K(s,function(e,a,s){if(!e&&200==a.statusCode){var t=JSON.parse(s);if("undefined"!=typeof t.result&&null!==t.result)for(var r=0;r<t.result.length;r++)t.result[r].Devices>0&&(ce[t.result[r].idx]=t.result[r].Name,pe[t.result[r].Name]=t.result[r].Devices)}});var t=[];for(property in pe)t.push({id:property,name:property});var r={};r.rooms=t,a.json(r)}),ue.get("/devices/:deviceId/action/:actionName/:actionParam?",fe,function(e,a){a.type("json");var s=e.params.deviceId,t=e.params.actionName,r=e.params.actionParam;switch(t){case"pulse":a.type("json");var n={url:m()+"?type=command¶m=switchlight&idx="+s+"&switchcmd=On&level=0&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"setStatus":var u;u=1==r?"On":"Off",a.type("json");var n={url:m()+"?type=command¶m=switchlight&idx="+s+"&switchcmd="+u+"&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"setArmed":a.status(500).send({success:!1,errormsg:"not implemented"});break;case"setAck":a.type("json");var n={url:m()+"?type=command¶m=resetsecuritystatus&idx="+s+"&switchcmd=Normal&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"setLevel":var l,i;if(a.type("json"),"undefined"==typeof me[s]||null===me[s].Action){a.status(500).send({success:!1,errormsg:"error"});break}switch(me[s].Action){case 1:1==r?l="?type=command¶m=switchlight&idx="+s+"&switchcmd=Off&passcode="+he:0==r?l="?type=command¶m=switchlight&idx="+s+"&switchcmd=On&passcode="+he:logger.error("Should not happen"+me[s]);break;case 2:case 3:100==r?l="?type=command¶m=switchlight&idx="+s+"&switchcmd=On&passcode="+he:0==r?l="?type=command¶m=switchlight&idx="+s+"&switchcmd=Off&passcode="+he:(i=Math.ceil(r*me[s].MaxDimLevel/100),l="?type=command¶m=switchlight&idx="+s+"&switchcmd=Set%20Level&level="+i+"&passcode="+he);break;case 5:0==r?l="?type=command¶m=switchlight&idx="+s+"&switchcmd=Off&passcode="+he:100==r?l="?type=command¶m=switchlight&idx="+s+"&switchcmd=On&passcode="+he:(i=Math.ceil(r*me[s].MaxDimLevel/100),l="?type=command¶m=switchlight&idx="+s+"&switchcmd=Set%20Level&level="+i+"&passcode="+he);break;case 6:l=100==r?"?type=command¶m=switchlight&idx="+s+"&switchcmd=Off&passcode="+he:0==r?"?type=command¶m=switchlight&idx="+s+"&switchcmd=On&passcode="+he:"?type=command¶m=switchlight&idx="+s+"&switchcmd=Set%20Level&level="+r+"&passcode="+he;break;default:i=Math.ceil(r*me[s].MaxDimLevel/100),l="?type=command¶m=switchlight&idx="+s+"&switchcmd=Set%20Level&level="+i+"&passcode="+he}var n={url:m()+l,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"stopShutter":a.type("json");var n={url:m()+"?type=command¶m=switchlight&idx="+s+"&switchcmd=Stop&level=0&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"pulseShutter":a.status(500).send({success:!1,errormsg:"not implemented"});break;case"setSetPoint":a.type("json");var n={url:m()+"?type=setused&idx="+s+"&used=true&setpoint="+r+"&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({
success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"launchScene":a.type("json");var o=s.match(/^SC(\d+)/),n={url:m()+"?type=command¶m=switchscene&idx="+o[1]+"&switchcmd=On&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"setColor":a.type("json");var n={url:m()+"?type=command¶m=setcolbrightnessvalue&idx="+s+"&hex="+r.substr(2,6).toUpperCase()+"&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"setChoice":if(s.match(/^S/)){var o=s.match(/^SC(\d+)/);a.type("json");var n={url:m()+"?type=command¶m=switchscene&idx="+o[1]+"&switchcmd="+r+"&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break}if(10===me[s].Action){a.type("json");var p=0;p=10*me[s].Selector.indexOf(r);var n={url:m()+"?type=command¶m=switchmodal&idx="+s+"&status="+r+"&action=1&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break}a.type("json");var p=0;p=10*me[s].Selector.indexOf(r);var n={url:m()+"?type=command¶m=switchlight&idx="+s+"&switchcmd=Set%20Level&level="+p+"&passcode="+he,headers:{"User-Agent":"request"}};K(n,function(e,s,t){if(e||200!=s.statusCode)a.status(500).send({success:!1,errormsg:"error"});else{var r=JSON.parse(t);"OK"==r.status?a.status(200).send({success:!0}):a.status(500).send({success:!1,errormsg:r.message})}});break;case"setMode":a.status(403).send({success:!1,errormsg:"not implemented"});break;default:a.status(403).send({success:!1,errormsg:"not implemented"})}}),ue.get("/devices/:deviceId/:paramKey/histo/:startdate/:enddate",fe,function(e,a){a.type("json");var s=e.params.deviceId,t=e.params.paramKey,r=e.params.startdate,n=e.params.enddate,u=(n-r)/1e3,l="";if(s.match(/_L/)){var i;i=s.match(/(\d+)_L(.)/),s=i[1],l=i[2]||""}var o=B(s).toLowerCase(),p=o,c="&method=1";if("lux"!==o&&"energy"!==o||(o="counter",c="&method=1"),"air quality"!==o&&"p1 smart meter"!==o&&"Watts"!==t||(o="counter"),"general"===p){var d=q(s);o="Current"===d||"kWh"===d||"Solar Radiation"===d||"Visibility"===d||"Pressure"===d?"counter":"Percentage"}"temp"!==t&&"temp + humidity"!==o&&"hygro"!==t&&"humidity"!==o||(o="temp");var v;v=u<=172800?"day":u<1209600?"week":u<5270400?"month":"year",a.type("json");var h={url:m()+"?type=graph&sensor="+o+c+"&idx="+s+"&range="+v,headers:{"User-Agent":"request"}};K(h,function(e,s,n){if(e||200!=s.statusCode)a.status(403).send({success:!1,errormsg:"not implemented"});else{var u=JSON.parse(n),i=[];if(u.result){for(var o=0;o<u.result.length;o++){var m;for(var o in u.result[o])if("d"!==o)if(o.match(/_max/)||o.match(/_min/)){var c=/^([^_]*)_/;m=o.match(c).slice(1)}else m=o}if("tm"===m&&(m="te"),"temp"===t){m="te";for(var o=0;o<u.result.length;o++){var d=parseFloat(u.result[o][m]),h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}}else if("hygro"===t){m="hu";for(var o=0;o<u.result.length;o++){var d=u.result[o][m],h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}}else if("ConsoTotal"===t)if("p1 smart meter"===p){var f;1==l?(m="r1",f="r2"):2==l&&(m="v",f="v2");for(var o=0;o<u.result.length;o++){var d=parseFloat(u.result[o][m])+parseFloat(u.result[o][f]),h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}}else{m="v";for(var o=0;o<u.result.length;o++){var d=u.result[o][m],h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}}else if("Watts"===t){m="v"+l;for(var f="v"+(parseInt(l)+3),o=0;o<u.result.length;o++)if("month"===v||"year"===v){var d=(parseFloat(u.result[o][m])+parseFloat(u.result[o][f]))/2,h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}else{var d=u.result[o][m],h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}}else if("speed"===t){m="sp";for(var o=0;o<u.result.length;o++){var d=u.result[o][m],h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}}else{var D,g;"te"===m?(D="te",g="te"):"hu"===m?(D="hu",g="hu"):"mm"===m?(D="mm",g="mm"):"uvi"===m?(D="uvi",g="uvi"):(D=m+"_max",g=m+"_min");for(var o=0;o<u.result.length;o++)if("month"===v||"year"===v){var d=(parseFloat(u.result[o][D])+parseFloat(u.result[o][g]))/2,h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}else{var d=u.result[o][m],h=Z(u.result[o].d,"YYYY-MM-DD HH:mm:ss").valueOf(),y={date:h,value:d};i.push(y)}}var S={};S.values=i,a.json(S)}else{var y={date:r,value:0};i.push(y);var S={};S.values=i,a.json(S)}}})}),ue.get("/devices",fe,function(e,a){a.type("json");var s={url:m()+"?type=devices&filter=utility&order=Name",headers:{"User-Agent":"request"}},t={};K(s,function(e,a,s){if(!e&&200==a.statusCode){var r=JSON.parse(s);if("undefined"!=typeof r.result&&null!==r.result)for(var n=0;n<r.result.length;n++)"Electric"==r.result[n].SubType&&(t[r.result[n].ID]=r.result[n].Data.replace(" Watt",""))}});var s={url:m()+"?type=devices&filter=all&used=true&order=Name",headers:{"User-Agent":"request"}};K(s,function(e,s,r){if(e||200!=s.statusCode){var n=[];n.push(P({idx:"S00",Name:"Unable to connect to Domoticz",Data:m()})),n.push(P({idx:"S01",Name:"Please add this gateway in Setup/settings/Local Networks",Data:""}));var u={};u.devices=n,a.json(u)}else{var l=JSON.parse(r),n=[],i={id:"S0",name:"MyDomoAtHome",type:"DevGenericSensor"},c=[];c.push({key:"Value",value:oe,unit:"",graphable:"false"}),i.params=c,n.push(i);var B=p();if("undefined"!=typeof B&&null!==B&&o(oe,B.substring(1))<0){var i={id:"S1",name:"New version found",type:"DevGenericSensor"},c=[];c.push({key:"Value",value:ie,unit:"",graphable:"false"}),i.params=c,n.push(i)}for(var q=0;q<l.result.length;q++)switch("undefined"!=typeof l.result[q].ID&&null!==l.result[q].ID&&t[l.result[q].ID.substr(1-l.result[q].ID.length)]&&(l.result[q].Energy=t[l.result[q].ID.substr(1-l.result[q].ID.length)]),l.result[q].Type){case(l.result[q].Type.match(/Light/)||{}).input:switch(l.result[q].SwitchType){case"On/Off":case"Dusk Sensor":"RGB"==l.result[q].SubType?n.push(y(l.result[q])):"RGBW"==l.result[q].SubType?n.push(y(l.result[q])):n.push(d(l.result[q]));break;case"Push On Button":case"Push Off Button":n.push(h(l.result[q]));break;case"Switch":n.push(d(l.result[q]));break;case"Dimmer":"RGB"==l.result[q].SubType?n.push(y(l.result[q])):"RGBW"==l.result[q].SubType?n.push(y(l.result[q])):n.push(f(l.result[q]));break;case"Doorbell":n.push(f(l.result[q]));break;case"Blinds Inverted":case"Blinds Percentage Inverted":n.push(D(l.result[q]));break;case"Blinds Percentage":case"Blinds":case"Venetian Blinds EU":case"Venetian Blinds US":case"RollerTrol, Hasta new":n.push(g(l.result[q]));break;case"Motion Sensor":n.push(S(l.result[q]));break;case"Door Lock":case"Contact":n.push(x(l.result[q]));break;case"Smoke Detector":n.push(k(l.result[q]));break;case(l.result[q].SwitchType.match(/Siren/)||{}).input:n.push(d(l.result[q]));break;case"Selector":n.push(v(l.result[q]));break;case"Media Player":}break;case"Chime":n.push(f(l.result[q]));break;case"Blinds":case"RFY":switch(l.result[q].SwitchType){case"Blinds Inverted":case"Blinds Percentage Inverted":n.push(D(l.result[q]));break;case"On/Off":n.push(d(l.result[q]));break;case"Blinds Percentage":case"Blinds":case"RFY":case"Venetian Blinds EU":case"Venetian Blinds US":case"RollerTrol, Hasta new":n.push(g(l.result[q]))}break;case"Security":switch(l.result[q].SwitchType){case"Smoke Detector":n.push(k(l.result[q]));break;case"Security":n.push(P(l.result[q]))}break;case"P1 Smart Meter":switch(l.result[q].SubType){case"Energy":for(var J=I(l.result[q]),z=0;z<J.length;z++)n.push(J[z]);break;case"Gas":n.push(M(l.result[q]))}break;case"Lighting Limitless/Applamp":n.push(y(l.result[q]));break;case"YouLess Meter":switch(l.result[q].SubType){case"YouLess counter":n.push(I(l.result[q]))}break;case"Energy":case"Power":case"Usage":n.push(I(l.result[q]));break;case"Current":n.push(I(l.result[q]));break;case"Current/Energy":for(var J=N(l.result[q]),z=0;z<J.length;z++)n.push(J[z]);break;case"Temp":case"Temp + Humidity":case"Humidity":n.push(T(l.result[q]));break;case"Temp + Humidity + Baro":for(var J=T(l.result[q]),z=0;z<J.length;z++)n.push(J[z]);break;case"Rain":n.push(C(l.result[q]));break;case"UV":n.push(U(l.result[q]));break;case"Lux":n.push(Y(l.result[q]));break;case"Air Quality":n.push(W(l.result[q]));break;case"Wind":n.push(E(l.result[q]));break;case"RFXMeter":switch(l.result[q].SwitchTypeVal){case 0:n.push(M(l.result[q]));break;case 1:n.push(M(l.result[q]));break;case 2:n.push(O(l.result[q]));break;case 3:n.push(w(l.result[q]))}break;case"General":switch(l.result[q].SubType){case"Percentage":n.push(b(l.result[q]));break;case"Voltage":case"Current":n.push(b(l.result[q]));break;case"kWh":n.push(I(l.result[q]));break;case"Pressure":case"Barometer":n.push(A(l.result[q]));break;case"Visibility":case"Solar Radiation":n.push(b(l.result[q]));break;case"Text":case"Alert":n.push(P(l.result[q]));break;case"Unknown":break;case"Waterflow":n.push(L(l.result[q]));break;case"Sound Level":n.push(H(l.result[q]));break;case"Counter Incremental":n.push(w(l.result[q]));break;case"Custom Sensor":n.push(b(l.result[q]))}break;case"Heating":switch(l.result[q].SubType){case"Evohome":n.push(j(l.result[q]))}break;case"Thermostat":n.push(R(l.result[q]));break;case"Scene":n.push(_(l.result[q]));break;case"Group":n.push(V(l.result[q]))}for(var J=G(),z=0;z<J.length;z++)n.push(J[z]);var u={};u.devices=n,a.json(u)}})}),ue.use(function(e,a,s){var t=new Error("Not found");t.status=404,s(t)}),ue.use(function(e,a,s,t){s.status(e.status||500),s.send({message:e.message,error:e})}),logger.info("Domoticz server: "+m()),logger.info("Node version: "+process.versions.node),logger.info("MDAH version: "+de+" "+oe),logger.info("OS version: "+X.type()+" "+X.platform()+" "+X.release()),process.env.CONTAINER&&logger.info("Microservice: yes");var De,ge=X.networkInterfaces(),Se=[];for(var xe in ge)for(var ke in ge[xe]){var Pe=ge[xe][ke];"IPv4"!==Pe.family||Pe.internal||(Se.push(Pe.address),De=Pe.address)}o(process.versions.node,"1.0.0")<0?logger.info("Hostname: "+X.hostname()+" "+De):logger.info("Hostname: "+X.hostname()+" "+De+" in "+X.homedir()+" "+ye),process.once("SIGUSR2",function(){be(function(){process.kill(process.pid,"SIGUSR2")})}),process.once("SIGINT",function(){be(function(){process.kill(process.pid,"SIGINT")})});var be=function(){logger.warn("Received kill signal, shutting down gracefully."),Ie.close(function(){logger.warn("Closed out remaining connections."),process.exit()}),setTimeout(function(){console.error("Could not close connections in time, forcefully shutting down"),process.exit()},2e3)},Ie=J.createServer(ue);Ie.listen(ue.get("port"),function(){logger.info("MDAH port: "+ue.get("port"))}),Ie.on("error",function(e){"EADDRINUSE"==e.code&&(logger.info("Address in use, retrying..."),setTimeout(function(){Ie.close(),Ie.listen(ve)},4e3))}),e.exports=ue}).call(a,"/")},function(e,a){e.exports=require("basic-auth")},function(e,a){e.exports=require("body-parser")},function(e,a){e.exports=require("errorhandler")},function(e,a){e.exports=require("express")},function(e,a){e.exports=require("fs")},function(e,a){e.exports=require("http")},function(e,a){e.exports=require("method-override")},function(e,a){e.exports=require("moment")},function(e,a){e.exports=require("morgan")},function(e,a){e.exports=require("nconf")},function(e,a){e.exports=require("os")},function(e,a){e.exports=require("path")},function(e,a){e.exports=require("request")},function(e,a){e.exports=require("sync-request")},function(e,a){e.exports=require("underscore")},function(e,a){e.exports=require("winston")}]);
//# sourceMappingURL=backend.js.map