Changes in / [20:30]


Ignore:
Files:
20 added
4 edited

Legend:

Unmodified
Added
Removed
  • /trunk

    • Property svn:ignore
      •  

        old new  
        11compressit 
        22pushit 
         3backup 
  • /trunk/I_PingSensor.xml

    r20 r30  
    1111  <functions> 
    1212    local PING_SID = "urn:demo-ted-striker:serviceId:PingSensor1" 
     13    local SWITCH_SID = "urn:upnp-org:serviceId:SwitchPower1" 
    1314    local SECURITY_SID = "urn:micasaverde-com:serviceId:SecuritySensor1" 
    1415    local HADEVICE_SID = "urn:micasaverde-com:serviceId:HaDevice1" 
    1516    local GATEWAY_SID = "urn:micasaverde-com:serviceId:HomeAutomationGateway1" 
    1617 
    17     local DEBUG_MODE = false 
     18    local DEBUG_MODE = true 
    1819    local DEFAULT_PERIOD = 15 
    1920    local DEFAULT_ADDRESS = "127.0.0.1" 
     
    3536    -- Initializes variables if none were found in config 
    3637    -- 
    37     local function initSettings(address, period, invert) 
     38    local function initSettings(address, period, invert, enable) 
    3839      -- 
    3940      -- Create a fallback delay if no parameters are given 
    4041      -- 
    41       if (period == nil or period &lt;= DEFAULT_PERIOD) then 
     42      if (period == nil or tonumber(period) &lt;= DEFAULT_PERIOD) then 
    4243        period = DEFAULT_PERIOD 
    4344      end 
     
    4748      -- 
    4849      address = address or DEFAULT_ADDRESS 
     50 
     51      -- 
     52      -- Default to being enabled. 
     53      -- 
     54      enable = enable or "1" 
    4955 
    5056      -- 
     
    5763      luup.variable_set(PING_SID, "Address", address, parentDevice) 
    5864      luup.variable_set(PING_SID, "Invert", invert, parentDevice) 
     65      luup.variable_set(SWITCH_SID, "Target", enable, parentDevice) 
     66      luup.variable_set(SWITCH_SID, "Status", enable, parentDevice) 
    5967 
    6068      luup.variable_set(HADEVICE_SID, "LastUpdate", os.time(os.date('*t')), parentDevice) 
     
    6472      log("Initialized variable: 'Period' = " .. period) 
    6573      log("Initialized variable: 'Invert' = " .. invert) 
    66  
    67       -- 
    68       -- due to strange behavior we have to restart the lua engine 
    69       -- if we wouldn't, the sensor would not appear as sensor in the UI 
    70       -- (the results of the action call do not matter) 
    71       -- 
    72       log("RESTARTING LUA TO INITIALIZE PING SENSOR!") 
    73       lul_resultcode, lul_resultstring, lul_job, lul_returnarguments = luup.call_action(GATEWAY_SID, "Reload", {}, 0) 
    74  
    75       return address, period, invert 
     74      log("Initialized variable: 'Enable' = " .. enable) 
     75 
     76      luup.task("Please restart Luup to initialize the plugin.", 1, "Ping Sensor", -1) 
     77 
     78      return address, period, invert, enable 
    7679    end 
    7780 
    7881 
    7982    local function readSettings(parentDevice) 
    80       local address = "" 
    81       local period = "" 
    82       local invert = "" 
    83  
    8483      -- 
    8584      -- Get local address and delay between repetition from configuration 
    8685      -- 
    87       address = luup.variable_get(PING_SID, "Address", parentDevice) 
    88       period = luup.variable_get(PING_SID, "Period", parentDevice) 
    89       invert = luup.variable_get(PING_SID, "Invert", parentDevice) 
     86      local address = luup.variable_get(PING_SID, "Address", parentDevice) 
     87      local period = luup.variable_get(PING_SID, "Period", parentDevice) 
     88      local invert = luup.variable_get(PING_SID, "Invert", parentDevice) 
     89      local enable = luup.variable_get(SWITCH_SID, "Status", parentDevice) 
    9090 
    9191      -- 
    9292      -- init configuration variables if they were empty 
    9393      -- 
    94       if (address == nil or period == nil or invert == nil) then 
    95         address, period, invert = initSettings(address, period, invert) 
    96       end 
    97  
    98       return address, period, invert 
     94      if (address == nil or period == nil or invert == nil or enable == nil) then 
     95        address, period, invert, enable = initSettings(address, period, invert, enable) 
     96      end 
     97 
     98      return address, period, invert, enable 
    9999    end 
    100100 
     
    120120      -- 
    121121      -- log("Address found was: " .. address .. " / Delay found was: " .. tostring(period) .. "s") 
    122       local address, period, invert = readSettings(parentDevice) 
     122      local address, period, invert, enable = readSettings(parentDevice) 
    123123      if (address == nil or period == nil) then 
    124124        log("#" .. tostring(parentDevice) .. " starting up with id " .. luup.devices[parentDevice].id .. "could not be started.") 
     
    131131      -- 
    132132      PARENT_DEVICE = parentDevice 
    133       PING_ADDRESS = address 
    134       PING_DELAY = period 
    135       PING_INVERT = invert 
    136133 
    137134      -- 
     
    203200    local function setResult(parentDevice, pingResult) 
    204201      -- Store the current ping result only when it has changed 
    205       local currentState = luup.variable_get(SECURITY_SID, "Tripped", parentDevice) 
    206       if (currentState ~= pingResult) then 
     202      local origTripped = luup.variable_get(SECURITY_SID, "Tripped", parentDevice) 
     203      origTripped = origTripped or "0" 
     204 
     205      if (origTripped  ~= pingResult) then 
    207206        local time = os.time(os.date('*t')) 
    208         local origTripped = luup.variable_get(SECURITY_SID, "Tripped", parentDevice) 
    209         origTripped = origTripped or "0" 
    210207 
    211208        luup.variable_set(SECURITY_SID, "Tripped", pingResult, parentDevice) 
     
    226223      -- 
    227224      -- Reset the timer at the beginning, just in case the subsequent code fails. 
    228       --  
     225      -- 
    229226      -- The last parameter is temporary, can be removed in later builds once bug fix 
    230227      -- is in place (http://forum.micasaverde.com/index.php?topic=1608.0) 
    231228      -- 
    232       luup.call_timer("refreshCache", 1, tostring(PING_DELAY), "") 
    233  
    234       -- ping the address, write result, inverted if necessary. 
    235       setResult(PARENT_DEVICE, invertResult(executePing(PING_ADDRESS), PING_INVERT)) 
     229      local address, period, invert, enable = readSettings(parentDevice) 
     230      luup.call_timer("refreshCache", 1, tostring(period), "") 
     231 
     232      -- 
     233      -- To avoid having to be able to "cancel" a running timer, esp after repeated 
     234      -- enable/disable calls, we simply "do nothing" in this code if the timer is 
     235      -- disabled.  The actual timer itself is never stopped, we simply don't respond 
     236      -- if we're disabled. 
     237      -- 
     238      if (enable == "1") then 
     239        -- ping the address, write result, inverted if necessary. 
     240        setResult(PARENT_DEVICE, invertResult(executePing(address), invert)) 
     241        debug("Ping Enabled, executed") 
     242      else 
     243        debug("Ping Disabled, not executed " .. (enable or "No value")) 
     244      end 
    236245    end 
    237246  </functions> 
     
    295304      </run> 
    296305    </action> 
     306 
     307    <action> 
     308      <serviceId>urn:upnp-org:serviceId:SwitchPower1</serviceId> 
     309      <name>SetTarget</name> 
     310      <run> 
     311        luup.variable_set(SWITCH_SID, "Target", lul_settings.newTargetValue, parentDevice) 
     312        luup.variable_set(SWITCH_SID, "Status", lul_settings.newTargetValue, parentDevice) 
     313      </run> 
     314    </action> 
    297315  </actionList> 
    298316</implementation> 
  • /trunk/D_PingSensor.xml

    r20 r30  
    2525        <SCPDURL>S_SecuritySensor1.xml</SCPDURL> 
    2626      </service> 
     27      <service> 
     28        <serviceType>urn:schemas-upnp-org:service:SwitchPower:1</serviceType> 
     29        <serviceId>urn:upnp-org:serviceId:SwitchPower1</serviceId> 
     30        <SCPDURL>S_SwitchPower1.xml</SCPDURL> 
     31      </service> 
    2732    </serviceList> 
    2833    <implementationList> 
  • /trunk/D_PingSensor.json

    r20 r30  
    77    "imgIconMax": "", 
    88    "halloIconsDir": "pics\/hallo", 
     9    "inScene": "1", 
    910    "DisplayStatus": { 
    1011        "Service": "urn:micasaverde-com:serviceId:SecuritySensor1", 
    1112        "Variable": "Tripped", 
    1213        "MinValue": "0", 
    13         "MaxValue": "1"  
     14        "MaxValue": "1" 
    1415    }, 
    1516        "doc_url": { 
     
    1819        "doc_version": 1, 
    1920        "doc_platform": 0, 
    20         "doc_page": "sensors"  
     21        "doc_page": "sensors" 
    2122    }, 
    2223    "ToggleButton": 1, 
     
    2526            "Label": { 
    2627                "lang_tag": "tabname_control", 
    27                 "text": "Control"  
     28                "text": "Control" 
    2829            }, 
    2930            "Position": "0", 
    3031            "TabType": "flash", 
     32            "SceneGroup":[ 
     33                { 
     34                    "id": "1", 
     35                    "top": "0.5", 
     36                    "left": "0", 
     37                    "x": "2", 
     38                    "y": "1" 
     39                }, 
     40                { 
     41                    "id": "2", 
     42                    "top": "2", 
     43                    "left": "0", 
     44                    "x": "2", 
     45                    "y": "1" 
     46                } 
     47            ], 
    3148            "ControlGroup":[ 
    3249            { 
    3350                "id": "1", 
    34                 "isSingle": "1" 
     51                "isSingle": "1", 
     52                "scenegroup": "1" 
    3553            }, 
    3654            { 
    3755                "id": "2", 
    38                 "isSingle": "1" 
     56                "isSingle": "1", 
     57                "scenegroup": "2" 
    3958            } 
    4059            ], 
     
    4564                    "Label": { 
    4665                        "lang_tag": "cmd_arm", 
    47                         "text": "Arm"  
     66                        "text": "Arm" 
    4867                    }, 
    4968                    "Display": { 
     
    5473                        "Left": 50, 
    5574                        "Width": 75, 
    56                         "Height": 20  
     75                        "Height": 20 
    5776                    }, 
    5877                    "Command": { 
     
    6281                            { 
    6382                                "Name": "newArmedValue", 
    64                                 "Value": "1"  
    65                             }  
    66                         ]  
    67                     }  
     83                                "Value": "1" 
     84                            } 
     85                        ] 
     86                    } 
    6887                }, 
    6988                { 
     
    7291                    "Label": { 
    7392                        "lang_tag": "cmd_bypass", 
    74                         "text": "Bypass"  
    75                     }, 
     93                        "text": "Bypass" 
     94                    }, 
     95                    "left": "1", 
    7696                    "Display": { 
    7797                        "Service": "urn:micasaverde-com:serviceId:SecuritySensor1", 
     
    81101                        "Left": 145, 
    82102                        "Width": 75, 
    83                         "Height": 20  
     103                        "Height": 20 
    84104                    }, 
    85105                    "Command": { 
     
    89109                            { 
    90110                                "Name": "newArmedValue", 
    91                                 "Value": "0"  
    92                             }  
    93                         ]  
    94                     }  
     111                                "Value": "0" 
     112                            } 
     113                        ] 
     114                    } 
    95115                }, 
    96116                { 
     
    144164                        "text": "Invert" 
    145165                    }, 
     166                    "left": "1", 
    146167                    "Display": { 
    147168                        "Service": "urn:demo-ted-striker:serviceId:PingSensor1", 
     
    164185                    } 
    165186                } 
    166             ]  
     187            ] 
    167188        }, 
    168189        { 
    169190            "Label": { 
    170191                "lang_tag": "advanced", 
    171                 "text": "Advanced"  
     192                "text": "Advanced" 
    172193            }, 
    173194            "Position": "2", 
    174195            "TabType": "javascript", 
    175196            "ScriptName": "shared.js", 
    176             "Function": "advanced_device"  
     197            "Function": "advanced_device" 
    177198        }, 
    178199        { 
    179200            "Label": { 
    180201                "lang_tag": "logs", 
    181                 "text": "Logs"  
     202                "text": "Logs" 
    182203            }, 
    183204            "Position": "4", 
    184205            "TabType": "javascript", 
    185206            "ScriptName": "shared.js", 
    186             "Function": "device_logs"  
     207            "Function": "device_logs" 
    187208        }, 
    188209        { 
    189210            "Label": { 
    190211                "lang_tag": "notifications", 
    191                 "text": "Notifications"  
     212                "text": "Notifications" 
    192213            }, 
    193214            "Position": "5", 
    194215            "TabType": "javascript", 
    195216            "ScriptName": "shared.js", 
    196             "Function": "device_notifications"  
    197         }  
     217            "Function": "device_notifications" 
     218        } 
    198219    ], 
    199220    "sceneList": { 
     
    204225                "action": "SetArmed", 
    205226                "arguments": { 
    206                     "newArmedValue": "1"  
     227                    "newArmedValue": "1" 
    207228                }, 
    208229                "display": { 
     
    210231                    "variable": "Armed", 
    211232                    "value": "1" 
    212                 }  
     233                } 
    213234            }, 
    214235            "cmd_2": { 
     
    217238                "action": "SetArmed", 
    218239                "arguments": { 
    219                     "newArmedValue": "0"  
     240                    "newArmedValue": "0" 
    220241                }, 
    221242                "display": { 
     
    223244                    "variable": "Armed", 
    224245                    "value": "0" 
    225                 }  
    226             }  
    227         }  
     246                } 
     247            } 
     248        }, 
     249        "group_2": { 
     250            "cmd_3": { 
     251                "label": "Enable", 
     252                "serviceId": "urn:upnp-org:serviceId:SwitchPower1", 
     253                "action": "SetTarget", 
     254                "arguments": { 
     255                    "newTargetValue": "1" 
     256                }, 
     257                "display": { 
     258                    "service": "urn:upnp-org:serviceId:SwitchPower1", 
     259                    "variable": "Status", 
     260                    "value": "1" 
     261                } 
     262            }, 
     263            "cmd_4": { 
     264                "label": "Disable", 
     265                "serviceId": "urn:upnp-org:serviceId:SwitchPower1", 
     266                "action": "SetTarget", 
     267                "arguments": { 
     268                    "newTargetValue": "0" 
     269                }, 
     270                "display": { 
     271                    "service": "urn:upnp-org:serviceId:SwitchPower1", 
     272                    "variable": "Status", 
     273                    "value": "0" 
     274                } 
     275            } 
     276        } 
    228277    }, 
    229278    "eventList": { 
     
    237286                    "allowedValueList": { 
    238287                        "Yes": "1", 
    239                         "No": "0"  
     288                        "No": "0" 
    240289                    }, 
    241290                    "name": "Tripped", 
    242291                    "comparisson": "=", 
    243292                    "prefix": "Tripped?", 
    244                     "suffix": ""  
    245                 }  
    246             }  
     293                    "suffix": "" 
     294                } 
     295            } 
    247296        }, 
    248297        "event_2": { 
     
    252301                "Armed": { 
    253302                    "value": "1", 
    254                     "comparisson": "="  
    255                 }  
     303                    "comparisson": "=" 
     304                } 
    256305            }, 
    257306            "argumentList": { 
     
    260309                    "allowedValueList": { 
    261310                        "Yes": "1", 
    262                         "No": "0"  
     311                        "No": "0" 
    263312                    }, 
    264313                    "name": "Tripped", 
    265314                    "comparisson": "=", 
    266315                    "prefix": "Tripped?", 
    267                     "suffix": " "  
    268                 }  
    269             }  
     316                    "suffix": " " 
     317                } 
     318            } 
    270319        } 
    271320    }, 
    272     "DeviceType": "urn:schemas-micasaverde-com:device:MotionSensor:1", 
     321    "eventList2": [ 
     322        { 
     323            "id": 1, 
     324            "label": { 
     325                "lang_tag": "door_window_motion_sensor_is_tripped", 
     326                "text": "A sensor (door\/window\/motion\/etc.) is tripped" 
     327            }, 
     328            "serviceId": "urn:micasaverde-com:serviceId:SecuritySensor1", 
     329            "argumentList": [ 
     330                { 
     331                    "id": 1, 
     332                    "dataType": "boolean", 
     333                    "defaultValue": "", 
     334                    "allowedValueList": [ 
     335                        { 
     336                            "Yes": "1", 
     337                            "HumanFriendlyText": { 
     338                                "lang_tag": "", 
     339                                "text": "_DEVICE_NAME_ is Tripped" 
     340                            } 
     341                        }, 
     342                        { 
     343                            "No": "0", 
     344                            "HumanFriendlyText": { 
     345                                "lang_tag": "", 
     346                                "text": "_DEVICE_NAME_ is not Tripped" 
     347                            } 
     348                        } 
     349                    ], 
     350                    "name": "Tripped", 
     351                    "comparisson": "=", 
     352                    "prefix": {}, 
     353                    "suffix": {} 
     354                } 
     355            ] 
     356        }, 
     357        { 
     358            "id": 2, 
     359            "label": { 
     360                "lang_tag": "an_armed_sensor_is_tripped", 
     361                "text": "An armed sensor is tripped" 
     362            }, 
     363            "serviceId": "urn:micasaverde-com:serviceId:SecuritySensor1", 
     364            "serviceStateTable": { 
     365                "Armed": { 
     366                    "value": "1", 
     367                    "comparisson": "=" 
     368                } 
     369            }, 
     370            "argumentList": [ 
     371                { 
     372                    "id": 1, 
     373                    "dataType": "boolean", 
     374                    "allowedValueList": [ 
     375                        { 
     376                            "Yes": "1", 
     377                            "HumanFriendlyText": { 
     378                                "lang_tag": "hft_sensor_tripped", 
     379                                "text": "_DEVICE_NAME_ is Tripped" 
     380                            } 
     381                        }, 
     382                        { 
     383                            "No": "0", 
     384                            "HumanFriendlyText": { 
     385                                "lang_tag": "hft_sensor_not_tripped", 
     386                                "text": "_DEVICE_NAME_ is not Tripped" 
     387                            } 
     388                        } 
     389                    ], 
     390                    "name": "Tripped", 
     391                    "comparisson": "=", 
     392                    "prefix": {}, 
     393                    "suffix": {} 
     394                } 
     395            ] 
     396        } 
     397    ], 
     398    "DeviceType": "urn:schemas-micasaverde-com:device:MotionSensor:1" 
    273399} 
Note: See TracChangeset for help on using the changeset viewer.