Changes in / [20:30]


Ignore:
Location:
/trunk
Files:
2 added
2 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • /trunk/D_UvSensor1.json

    r20 r30  
    7979                "text": "Advanced" 
    8080            }, 
     81            "Position": "1", 
     82            "TabType": "javascript", 
     83            "ScriptName": "shared.js", 
     84            "Function": "advanced_device" 
     85        }, 
     86        { 
     87            "Label": { 
     88                "lang_tag": "logs", 
     89                "text": "Logs" 
     90            }, 
    8191            "Position": "2", 
    8292            "TabType": "javascript", 
    8393            "ScriptName": "shared.js", 
    84             "Function": "advanced_device" 
     94            "Function": "device_logs" 
     95        }, 
     96        { 
     97            "Label": { 
     98                "lang_tag": "notifications", 
     99                "text": "Notifications" 
     100            }, 
     101            "Position": "3", 
     102            "TabType": "javascript", 
     103            "ScriptName": "shared.js", 
     104            "Function": "device_notifications" 
    85105        } 
    86106    ], 
  • /trunk/I_RFXtrx.xml

    r20 r30  
    9090    <action> 
    9191        <serviceId>urn:upnp-rfxcom-com:serviceId:rfxtrx1</serviceId> 
    92         <name>ReceiveRollerTrol</name> 
    93         <run>if (pluginLib ~= nil) then pluginLib.enableReceiving(lul_settings.enable, "VAR_ROLLERTROL_RECEIVING") end</run> 
     92        <name>ReceiveFineOffset</name> 
     93        <run>if (pluginLib ~= nil) then pluginLib.enableReceiving(lul_settings.enable, "VAR_FINEOFFSET_RECEIVING") end</run> 
     94    </action> 
     95    <action> 
     96        <serviceId>urn:upnp-rfxcom-com:serviceId:rfxtrx1</serviceId> 
     97        <name>ReceiveRubicson</name> 
     98        <run>if (pluginLib ~= nil) then pluginLib.enableReceiving(lul_settings.enable, "VAR_RUBICSON_RECEIVING") end</run> 
     99    </action> 
     100    <action> 
     101        <serviceId>urn:upnp-rfxcom-com:serviceId:rfxtrx1</serviceId> 
     102        <name>ReceiveAE</name> 
     103        <run>if (pluginLib ~= nil) then pluginLib.enableReceiving(lul_settings.enable, "VAR_AE_RECEIVING") end</run> 
     104    </action> 
     105    <action> 
     106        <serviceId>urn:upnp-rfxcom-com:serviceId:rfxtrx1</serviceId> 
     107        <name>ReceiveBlindsT1</name> 
     108        <run>if (pluginLib ~= nil) then pluginLib.enableReceiving(lul_settings.enable, "VAR_BLINDST1_RECEIVING") end</run> 
     109    </action> 
     110    <action> 
     111        <serviceId>urn:upnp-rfxcom-com:serviceId:rfxtrx1</serviceId> 
     112        <name>ReceiveBlindsT0</name> 
     113        <run>if (pluginLib ~= nil) then pluginLib.enableReceiving(lul_settings.enable, "VAR_BLINDST0_RECEIVING") end</run> 
     114    </action> 
     115    <action> 
     116        <serviceId>urn:upnp-rfxcom-com:serviceId:rfxtrx1</serviceId> 
     117        <name>ReceiveMeiantech</name> 
     118        <run>if (pluginLib ~= nil) then pluginLib.enableReceiving(lul_settings.enable, "VAR_MEIANTECH_RECEIVING") end</run> 
    94119    </action> 
    95120    <action> 
     
    212237        <name>AddRisingSunSwitch</name> 
    213238        <run>if (pluginLib ~= nil) then pluginLib.addRisingSunSwitch(lul_settings.HouseCode or "", lul_settings.UnitCode or "") end</run> 
     239    </action> 
     240    <action> 
     241        <serviceId>urn:upnp-rfxcom-com:serviceId:rfxtrx1</serviceId> 
     242        <name>AddPhilipsSwitch</name> 
     243        <run>if (pluginLib ~= nil) then pluginLib.addPhilipsSwitch(lul_settings.HouseCode or "", lul_settings.UnitCode or "") end</run> 
    214244    </action> 
    215245    <action> 
  • /trunk/D_RainSensor1.json

    r20 r30  
    156156            "ScriptName": "shared.js", 
    157157            "Function": "advanced_device"  
     158        }, 
     159        { 
     160            "Label": { 
     161                "lang_tag": "logs", 
     162                "text": "Logs" 
     163            }, 
     164            "Position": "2", 
     165            "TabType": "javascript", 
     166            "ScriptName": "shared.js", 
     167            "Function": "device_logs" 
     168        }, 
     169        { 
     170            "Label": { 
     171                "lang_tag": "notifications", 
     172                "text": "Notifications" 
     173            }, 
     174            "Position": "3", 
     175            "TabType": "javascript", 
     176            "ScriptName": "shared.js", 
     177            "Function": "device_notifications" 
    158178        } 
    159179    ], 
  • /trunk/L_RFXtrx.lua

    r20 r30  
    3030    LIGHTING_IMPULS = { 0x10, 0x5, 7, nil, nil, "Impuls" }, 
    3131    LIGHTING_RISINGSUN = { 0x10, 0x6, 7, nil, "Risingsun Electronics", "RisingSun" }, 
     32    LIGHTING_PHILIPS = { 0x10, 0x7, 7, nil, "Philips", "SBC" }, 
    3233     
    3334    LIGHTING_AC = { 0x11, 0x0, 11, nil, nil, "AC" }, 
     
    4748    TEMP7 = { 0x50, 0x7, 8, nil, "Viking", "Viking 02811" }, 
    4849    TEMP8 = { 0x50, 0x8, 8, nil, "La Crosse Technology", "WS2300" }, 
    49     TEMP9 = { 0x50, 0x9, 8, nil, "RUBiCSON", "RUBiCSON" }, 
     50    TEMP9 = { 0x50, 0x9, 8, nil, "Rubicson", "Rubicson" }, 
     51    TEMP10 = { 0x50, 0xA, 8, nil, "TFA", "TFA 30.3133" }, 
    5052     
    5153    HUM1 = { 0x51, 0x1, 8, nil, "La Crosse Technology","La Crosse TX3" }, 
     
    8688    CURTAIN_HARRISON = { 0x18, 0x0, 7, nil, "Harrison", "Harrison" }, 
    8789     
    88     BLIND_ROLLERTROL = { 0x19, 0x0, 9, nil, "RollerTrol Automation Systems", "RollerTrol" }, 
     90    BLIND_T0 = { 0x19, 0x0, 9, nil, nil, "RollerTrol, Hasta" }, 
     91    BLIND_T1 = { 0x19, 0x1, 9, nil, "Hasta", "Hasta" }, 
    8992     
    9093    SECURITY_X10DS = { 0x20, 0x0, 8, nil, nil, "X10 security door/window sensor" }, 
     
    9497    POWERCODE_AUXDS = { 0x20, 0x7, 8, nil, "Visonic", "PowerCode door/window sensor – auxiliary contact" }, 
    9598    POWERCODE_MS = { 0x20, 0x5, 8, nil, "Visonic", "PowerCode motion sensor" }, 
     99    SECURITY_MEISR = { 0x20, 0x8, 8, nil, "Meiantech", "Meiantech/Atlantic security remote" }, 
    96100 
    97101    ELEC2 = { 0x5A, 0x1, 17, nil, "OWL", "CM119/160" }   
     
    146150    CMD_WATT = { "Watt", "POWER", "VAR_WATT" }, 
    147151    CMD_KWH = { "kWh", "POWER", "VAR_KWH" }, 
    148     CMD_BATTERY = { "BatteryLevel", nil, "VAR_BATTERY_LEVEL" } 
     152    CMD_BATTERY = { "BatteryLevel", nil, "VAR_BATTERY_LEVEL" }, 
     153    CMD_SCENE_ON = { "SceneOn", "REMOTE", "VAR_SCENE_ON" }, 
     154    CMD_SCENE_OFF = { "SceneOff", "REMOTE", "VAR_SCENE_OFF" }, 
    149155} 
    150156 
    151157-- This table defines all device variables that are used by the plugin 
    152 -- Each entry is a table of 3 elements: 
     158-- Each entry is a table of 4 elements: 
    153159-- 1) the service ID 
    154160-- 2) the variable name 
    155 -- 3) true if the variable used by the main device of type boolean 
     161-- 3) true if the variable is used by the main device and of type boolean 
     162-- 4) true if the variable can be adjusted (through value in AdjustConstant variable) 
    156163local tabVars = { 
    157     VAR_TEMP = { "urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", false }, 
    158     VAR_HUM = { "urn:micasaverde-com:serviceId:HumiditySensor1", "CurrentLevel", false }, 
    159     VAR_LIGHT = { "urn:upnp-org:serviceId:SwitchPower1", "Status", false }, 
    160     VAR_DIMMER = { "urn:upnp-org:serviceId:Dimming1", "LoadLevelStatus", false }, 
    161     VAR_PRESSURE = { "urn:upnp-org:serviceId:BarometerSensor1", "CurrentPressure", false }, 
    162     VAR_FORECAST = { "urn:upnp-org:serviceId:BarometerSensor1", "Forecast", false }, 
    163     VAR_RAIN = { "urn:upnp-org:serviceId:RainSensor1", "CurrentTRain", false }, 
    164     VAR_RAINRATE = { "urn:upnp-org:serviceId:RainSensor1", "CurrentRain", false }, 
    165     VAR_WIND = { "urn:upnp-org:serviceId:WindSensor1", "AvgSpeed", false }, 
    166     VAR_GUST = { "urn:upnp-org:serviceId:WindSensor1", "GustSpeed", false }, 
    167     VAR_DIRECTION = { "urn:upnp-org:serviceId:WindSensor1", "Direction", false }, 
    168     VAR_UV = { "urn:upnp-org:serviceId:UvSensor1", "CurrentLevel", false }, 
    169     VAR_BATTERY_LEVEL = { "urn:micasaverde-com:serviceId:HaDevice1", "BatteryLevel", false }, 
    170     VAR_BATTERY_DATE = { "urn:micasaverde-com:serviceId:HaDevice1", "BatteryDate", false }, 
    171     VAR_IO_DEVICE = { "urn:micasaverde-com:serviceId:HaDevice1", "IODevice", false }, 
    172     VAR_BAUD = { "urn:micasaverde-org:serviceId:SerialPort1", "baud", false }, 
    173     VAR_ARMED = { "urn:micasaverde-com:serviceId:SecuritySensor1", "Armed", false }, 
    174     VAR_TRIPPED = { "urn:micasaverde-com:serviceId:SecuritySensor1", "Tripped", false }, 
    175     VAR_LAST_TRIP = { "urn:micasaverde-com:serviceId:SecuritySensor1", "LastTrip", false }, 
    176     VAR_ARM_MODE = { "urn:micasaverde-com:serviceId:AlarmPartition2", "ArmMode", false }, 
    177     VAR_ARM_MODE_NUM = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ArmModeNum", false }, 
    178     VAR_DETAILED_ARM_MODE = { "urn:micasaverde-com:serviceId:AlarmPartition2", "DetailedArmMode", false }, 
    179     VAR_WATT = { "urn:micasaverde-com:serviceId:EnergyMetering1", "Watts", false }, 
    180     VAR_KWH = { "urn:micasaverde-com:serviceId:EnergyMetering1", "KWH", false }, 
    181      
    182     VAR_PLUGIN_VERSION = { "upnp-rfxcom-com:serviceId:rfxtrx1", "PluginVersion", false }, 
    183     VAR_AUTO_CREATE = { "upnp-rfxcom-com:serviceId:rfxtrx1", "AutoCreate", true }, 
    184     VAR_FIRMWARE_VERSION = { "upnp-rfxcom-com:serviceId:rfxtrx1", "FirmwareVersion", false }, 
    185     VAR_TEMP_UNIT = { "upnp-rfxcom-com:serviceId:rfxtrx1", "CelciusTemp", true }, 
    186     VAR_SPEED_UNIT = { "upnp-rfxcom-com:serviceId:rfxtrx1", "KmhSpeed", true }, 
    187     VAR_ROLLERTROL_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "RollerTrolReceiving", true }, 
    188     VAR_PROGUARD_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ProGuardReceiving", true }, 
    189     VAR_FS20_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "FS20Receiving", true }, 
    190     VAR_LACROSSE_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "LaCrosseReceiving", true }, 
    191     VAR_HIDEKI_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "HidekiReceiving", true }, 
    192     VAR_AD_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ADReceiving", true }, 
    193     VAR_MERTIK_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "MertikReceiving", true }, 
    194     VAR_VISONIC_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "VisonicReceiving", true }, 
    195     VAR_ATI_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ATIReceiving", true }, 
    196     VAR_OREGON_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "OregonReceiving", true }, 
    197     VAR_IKEA_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "IkeaReceiving", true }, 
    198     VAR_HEU_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "HEUReceiving", true }, 
    199     VAR_AC_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ACReceiving", true }, 
    200     VAR_ARC_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ARCReceiving", true }, 
    201     VAR_X10_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "X10Receiving", true }, 
    202     VAR_MOOD1ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood1ID", false }, 
    203     VAR_MOOD2ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood2ID", false }, 
    204     VAR_MOOD3ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood3ID", false }, 
    205     VAR_MOOD4ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood4ID", false }, 
    206     VAR_MOOD5ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood5ID", false }, 
    207     VAR_ASSOCIATION = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Assocation", false }, 
    208     VAR_PROGRAMMED = { "upnp-rfxcom-com:serviceId:rfxtrx1", "KopplaProgrammed", false } 
     164    VAR_TEMP = { "urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", false, true }, 
     165    VAR_HUM = { "urn:micasaverde-com:serviceId:HumiditySensor1", "CurrentLevel", false, true }, 
     166    VAR_LIGHT = { "urn:upnp-org:serviceId:SwitchPower1", "Status", false, false }, 
     167    VAR_DIMMER = { "urn:upnp-org:serviceId:Dimming1", "LoadLevelStatus", false, false }, 
     168    VAR_PRESSURE = { "urn:upnp-org:serviceId:BarometerSensor1", "CurrentPressure", false, true }, 
     169    VAR_FORECAST = { "urn:upnp-org:serviceId:BarometerSensor1", "Forecast", false, false }, 
     170    VAR_RAIN = { "urn:upnp-org:serviceId:RainSensor1", "CurrentTRain", false, false }, 
     171    VAR_RAINRATE = { "urn:upnp-org:serviceId:RainSensor1", "CurrentRain", false, false }, 
     172    VAR_WIND = { "urn:upnp-org:serviceId:WindSensor1", "AvgSpeed", false, false }, 
     173    VAR_GUST = { "urn:upnp-org:serviceId:WindSensor1", "GustSpeed", false, false }, 
     174    VAR_DIRECTION = { "urn:upnp-org:serviceId:WindSensor1", "Direction", false, false }, 
     175    VAR_UV = { "urn:upnp-org:serviceId:UvSensor1", "CurrentLevel", false, true }, 
     176    VAR_BATTERY_LEVEL = { "urn:micasaverde-com:serviceId:HaDevice1", "BatteryLevel", false, false }, 
     177    VAR_BATTERY_DATE = { "urn:micasaverde-com:serviceId:HaDevice1", "BatteryDate", false, false }, 
     178    VAR_IO_DEVICE = { "urn:micasaverde-com:serviceId:HaDevice1", "IODevice", false, false }, 
     179    VAR_BAUD = { "urn:micasaverde-org:serviceId:SerialPort1", "baud", false, false }, 
     180    VAR_ARMED = { "urn:micasaverde-com:serviceId:SecuritySensor1", "Armed", false, false }, 
     181    VAR_TRIPPED = { "urn:micasaverde-com:serviceId:SecuritySensor1", "Tripped", false, false }, 
     182    VAR_LAST_TRIP = { "urn:micasaverde-com:serviceId:SecuritySensor1", "LastTrip", false, false }, 
     183    VAR_ARM_MODE = { "urn:micasaverde-com:serviceId:AlarmPartition2", "ArmMode", false, false }, 
     184    VAR_ARM_MODE_NUM = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ArmModeNum", false, false }, 
     185    VAR_DETAILED_ARM_MODE = { "urn:micasaverde-com:serviceId:AlarmPartition2", "DetailedArmMode", false, false }, 
     186    VAR_WATT = { "urn:micasaverde-com:serviceId:EnergyMetering1", "Watts", false, false }, 
     187    VAR_KWH = { "urn:micasaverde-com:serviceId:EnergyMetering1", "KWH", false, false }, 
     188    VAR_SCENE_ON = { "urn:micasaverde-com:serviceId:SceneController1", "sl_SceneActivated", false, false }, 
     189    VAR_SCENE_OFF = { "urn:micasaverde-com:serviceId:SceneController1", "sl_SceneDeactivated", false, false }, 
     190     
     191    VAR_PLUGIN_VERSION = { "upnp-rfxcom-com:serviceId:rfxtrx1", "PluginVersion", false, false }, 
     192    VAR_AUTO_CREATE = { "upnp-rfxcom-com:serviceId:rfxtrx1", "AutoCreate", true, false }, 
     193    VAR_FIRMWARE_VERSION = { "upnp-rfxcom-com:serviceId:rfxtrx1", "FirmwareVersion", false, false }, 
     194    VAR_TEMP_UNIT = { "upnp-rfxcom-com:serviceId:rfxtrx1", "CelciusTemp", true, false }, 
     195    VAR_SPEED_UNIT = { "upnp-rfxcom-com:serviceId:rfxtrx1", "KmhSpeed", true, false }, 
     196    VAR_FINEOFFSET_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "FineOffsetReceiving", true, false }, 
     197    VAR_RUBICSON_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "RubicsonReceiving", true, false }, 
     198    VAR_AE_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "AEReceiving", true, false }, 
     199    VAR_BLINDST1_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "BlindsT1Receiving", true, false }, 
     200    VAR_BLINDST0_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "BlindsT0Receiving", true, false }, 
     201    VAR_PROGUARD_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ProGuardReceiving", true, false }, 
     202    VAR_FS20_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "FS20Receiving", true, false }, 
     203    VAR_LACROSSE_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "LaCrosseReceiving", true, false }, 
     204    VAR_HIDEKI_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "HidekiReceiving", true, false }, 
     205    VAR_AD_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ADReceiving", true, false }, 
     206    VAR_MERTIK_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "MertikReceiving", true, false }, 
     207    VAR_VISONIC_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "VisonicReceiving", true, false }, 
     208    VAR_ATI_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ATIReceiving", true, false }, 
     209    VAR_OREGON_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "OregonReceiving", true, false }, 
     210    VAR_MEIANTECH_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "MeiantechReceiving", true, false }, 
     211    VAR_HEU_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "HEUReceiving", true, false }, 
     212    VAR_AC_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ACReceiving", true, false }, 
     213    VAR_ARC_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "ARCReceiving", true, false }, 
     214    VAR_X10_RECEIVING = { "upnp-rfxcom-com:serviceId:rfxtrx1", "X10Receiving", true, false }, 
     215    VAR_MOOD1ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood1ID", false, false }, 
     216    VAR_MOOD2ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood2ID", false, false }, 
     217    VAR_MOOD3ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood3ID", false, false }, 
     218    VAR_MOOD4ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood4ID", false, false }, 
     219    VAR_MOOD5ID = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Mood5ID", false, false }, 
     220    VAR_ASSOCIATION = { "upnp-rfxcom-com:serviceId:rfxtrx1", "Assocation", false, false }, 
     221    VAR_PROGRAMMED = { "upnp-rfxcom-com:serviceId:rfxtrx1", "KopplaProgrammed", false, false }, 
     222    VAR_ADJUST_CONSTANT = { "upnp-rfxcom-com:serviceId:rfxtrx1", "AdjustConstant", false, false }, 
     223    VAR_REPEAT_EVENT = { "upnp-rfxcom-com:serviceId:rfxtrx1", "RepeatEvent", false, false } 
    209224} 
    210225 
    211226-- This table defines all kinds of child that can be managed by the plugin 
    212 -- Each entry is a table of 6 elements: 
     227-- Each entry is a table of 7 elements: 
    213228-- 1) device type (URN) 
    214229-- 2) XML description file 
     
    217232-- 5) a boolean indicating if variable "Association" must be created for this device type 
    218233-- 6) a boolean indicating if variable "KopplaProgrammed" must be created for this device type 
     234-- 7) a boolean indicating if variable "AdjustConstant" must be created for this device type 
    219235local tableDeviceTypes = { 
    220     DOOR = { "urn:schemas-micasaverde-com:device:DoorSensor:1", "D_DoorSensor1.xml", "RFX Door ", "DS/", false, false }, 
    221     MOTION = { "urn:schemas-micasaverde-com:device:MotionSensor:1", "D_MotionSensor1.xml", "RFX Motion ", "MS/", false, false }, 
    222     LIGHT = { "urn:schemas-upnp-org:device:BinaryLight:1", "D_BinaryLight1.xml", "RFX Light ", "LS/", true, true }, 
    223     DIMMER = { "urn:schemas-upnp-org:device:DimmableLight:1", "D_DimmableLight1.xml", "RFX dim Light ", "DL/", true, true }, 
    224     COVER = { "urn:schemas-micasaverde-com:device:WindowCovering:1", "D_WindowCovering1.xml", "RFX Window ", "WC/", true, false }, 
    225     TEMP = { "urn:schemas-micasaverde-com:device:TemperatureSensor:1", "D_TemperatureSensor1.xml", "RFX Temp ", "TS/", false, false }, 
    226     HUM = { "urn:schemas-micasaverde-com:device:HumiditySensor:1", "D_HumiditySensor1.xml", "RFX Hum ", "HS/", false, false }, 
    227     BARO = { "urn:schemas-micasaverde-com:device:BarometerSensor:1", "D_BarometerSensor1.xml", "RFX Baro ", "BS/", false, false }, 
    228     WIND = { "urn:schemas-micasaverde-com:device:WindSensor:1", "D_WindSensor1.xml", "RFX Wind ", "WS/", false, false }, 
    229     RAIN = { "urn:schemas-micasaverde-com:device:RainSensor:1", "D_RainSensor1.xml", "RFX Rain ", "RS/", false, false }, 
    230     UV = { "urn:schemas-micasaverde-com:device:UvSensor:1", "D_UvSensor1.xml", "RFX UV ", "UV/", false, false }, 
    231     POWER = { "urn:schemas-micasaverde-com:device:PowerMeter:1", "D_PowerMeter1.xml", "RFX Power ", "PM/", false, false }, 
    232     ALARM = { "urn:schemas-micasaverde-com:device:AlarmPartition:3", "D_X10AlarmPartition2.xml", "RFX Alarm ", "AR/", false, false } 
     236    DOOR = { "urn:schemas-micasaverde-com:device:DoorSensor:1", "D_DoorSensor1.xml", "RFX Door ", "DS/", false, false, false }, 
     237    MOTION = { "urn:schemas-micasaverde-com:device:MotionSensor:1", "D_MotionSensor1.xml", "RFX Motion ", "MS/", false, false, false }, 
     238    LIGHT = { "urn:schemas-upnp-org:device:BinaryLight:1", "D_BinaryLight1.xml", "RFX Light ", "LS/", true, true, false }, 
     239    DIMMER = { "urn:schemas-upnp-org:device:DimmableLight:1", "D_DimmableLight1.xml", "RFX dim Light ", "DL/", true, true, false }, 
     240    COVER = { "urn:schemas-micasaverde-com:device:WindowCovering:1", "D_WindowCovering1.xml", "RFX Window ", "WC/", true, false, false }, 
     241    TEMP = { "urn:schemas-micasaverde-com:device:TemperatureSensor:1", "D_TemperatureSensor1.xml", "RFX Temp ", "TS/", false, false, true }, 
     242    HUM = { "urn:schemas-micasaverde-com:device:HumiditySensor:1", "D_HumiditySensor1.xml", "RFX Hum ", "HS/", false, false, true }, 
     243    BARO = { "urn:schemas-micasaverde-com:device:BarometerSensor:1", "D_BarometerSensor1.xml", "RFX Baro ", "BS/", false, false, true }, 
     244    WIND = { "urn:schemas-micasaverde-com:device:WindSensor:1", "D_WindSensor1.xml", "RFX Wind ", "WS/", false, false, false }, 
     245    RAIN = { "urn:schemas-micasaverde-com:device:RainSensor:1", "D_RainSensor1.xml", "RFX Rain ", "RS/", false, false, false }, 
     246    UV = { "urn:schemas-micasaverde-com:device:UvSensor:1", "D_UvSensor1.xml", "RFX UV ", "UV/", false, false, true }, 
     247    POWER = { "urn:schemas-micasaverde-com:device:PowerMeter:1", "D_PowerMeter1.xml", "RFX Power ", "PM/", false, false, false }, 
     248    ALARM = { "urn:schemas-micasaverde-com:device:SecurityRemote:1", "D_SecurityRemote1.xml", "RFX Remote ", "SR/", false, false, false }, 
     249    REMOTE = { "urn:schemas-micasaverde-com:device:SceneController:1", "D_SceneController1.xml", "RFX Remote ", "RC/", false, false, false } 
    233250} 
    234251 
     
    302319    tableMsgTypes.LIGHTING_IMPULS[4] = decodeLighting1 
    303320    tableMsgTypes.LIGHTING_RISINGSUN[4] = decodeLighting1 
     321    tableMsgTypes.LIGHTING_PHILIPS[4] = decodeLighting1 
    304322    tableMsgTypes.LIGHTING_AC[4] = decodeLighting2 
    305323    tableMsgTypes.LIGHTING_HEU[4] = decodeLighting2 
     
    316334    tableMsgTypes.TEMP8[4] = decodeTemp 
    317335    tableMsgTypes.TEMP9[4] = decodeTemp 
     336    tableMsgTypes.TEMP10[4] = decodeTemp 
    318337    tableMsgTypes.HUM1[4] = decodeHum 
    319338    tableMsgTypes.HUM2[4] = decodeHum 
     
    345364    tableMsgTypes.UV3[4] = decodeUV 
    346365    tableMsgTypes.CURTAIN_HARRISON[4] = decodeCurtain 
    347     tableMsgTypes.BLIND_ROLLERTROL[4] = decodeBlind 
     366    tableMsgTypes.BLIND_T0[4] = decodeBlind 
     367    tableMsgTypes.BLIND_T1[4] = decodeBlind 
    348368    tableMsgTypes.SECURITY_X10DS[4] = decodeSecurityDS 
    349369    tableMsgTypes.SECURITY_X10MS[4] = decodeSecurityMS 
    350     tableMsgTypes.SECURITY_X10SR[4] = decodeX10Remote 
     370    tableMsgTypes.SECURITY_X10SR[4] = decodeSecurityRemote 
     371    tableMsgTypes.SECURITY_MEISR[4] = decodeSecurityRemote 
    351372    tableMsgTypes.POWERCODE_PRIMDS[4] = decodeSecurityDS 
    352373    tableMsgTypes.POWERCODE_AUXDS[4] = decodeSecurityDS 
     
    430451 
    431452    local altid 
     453    local altid2 
    432454    local tableCmds = {} 
    433455     
     
    472494 
    473495    altid = "L3.0/A08" 
     496    altid2 = "L3.0/A" 
    474497    --table.insert(tableCmds, { altid, tableCommands.CMD_ON[1], nil, 0 } ) 
     498    --table.insert(tableCmds, { altid2, tableCommands.CMD_SCENE_ON[1], 8, 0 } ) 
    475499    table.insert(tableCmds, { altid, tableCommands.CMD_OFF[1], nil, 0 } ) 
    476     table.insert(tableCmds, { altid, tableCommands.CMD_ON[1], nil, 30 } ) 
     500    table.insert(tableCmds, { altid2, tableCommands.CMD_SCENE_OFF[1], 8, 0 } ) 
     501    table.insert(tableCmds, { altid, tableCommands.CMD_OFF[1], nil, 15 } ) 
     502    table.insert(tableCmds, { altid2, tableCommands.CMD_SCENE_OFF[1], 8, 15 } ) 
    477503 
    478504    altid = "L3.0/410" 
    479505    table.insert(tableCmds, { altid, tableCommands.CMD_DIM[1], 75, 0 } ) 
    480506 
    481     altid = "X10/AR/456789" 
     507    altid = "X10/SR/456789" 
    482508    --table.insert(tableCmds, { altid, tableCommands.CMD_ARM_MODE[1], "Disarmed", 0 } ) 
    483509    table.insert(tableCmds, { altid, tableCommands.CMD_ARM_MODE[1], "Armed", 0 } ) 
     
    497523    table.insert(tableCmds, { altid, tableCommands.CMD_DOOR[1], "0", 15 } ) 
    498524 
     525    altid = "L1.7/P05" 
     526    altid2 = "L1.7/P" 
     527    table.insert(tableCmds, { altid, tableCommands.CMD_ON[1], nil, 0 } ) 
     528    table.insert(tableCmds, { altid2, tableCommands.CMD_SCENE_ON[1], 5, 0 } ) 
     529    table.insert(tableCmds, { altid, tableCommands.CMD_ON[1], nil, 10 } ) 
     530    table.insert(tableCmds, { altid2, tableCommands.CMD_SCENE_ON[1], 5, 10 } ) 
     531    table.insert(tableCmds, { altid, tableCommands.CMD_OFF[1], nil, 20 } ) 
     532    table.insert(tableCmds, { altid2, tableCommands.CMD_SCENE_OFF[1], 5, 20 } ) 
     533    table.insert(tableCmds, { altid, tableCommands.CMD_OFF[1], nil, 30 } ) 
     534    table.insert(tableCmds, { altid2, tableCommands.CMD_SCENE_OFF[1], 5, 30 } ) 
     535     
     536    altid = "MEI/SR/234567" 
     537    --table.insert(tableCmds, { altid, tableCommands.CMD_ARM_MODE[1], "Disarmed", 0 } ) 
     538    table.insert(tableCmds, { altid, tableCommands.CMD_ARM_MODE[1], "Armed", 0 } ) 
     539    --table.insert(tableCmds, { altid, tableCommands.CMD_ARM_MODE_NUM[1], "0", 0 } ) 
     540    table.insert(tableCmds, { altid, tableCommands.CMD_ARM_MODE_NUM[1], "1", 0 } ) 
     541    --table.insert(tableCmds, { altid, tableCommands.CMD_DETAILED_ARM_MODE[1], "Disarmed", 0 } ) 
     542    --table.insert(tableCmds, { altid, tableCommands.CMD_DETAILED_ARM_MODE[1], "Armed", 0 } ) 
     543    table.insert(tableCmds, { altid, tableCommands.CMD_DETAILED_ARM_MODE[1], "Stay", 0 } ) 
     544    --table.insert(tableCmds, { altid, tableCommands.CMD_PANIC[1], "1", 0 } ) 
     545    --table.insert(tableCmds, { altid, tableCommands.CMD_PANIC[1], "0", 0 } ) 
     546     
    499547    actOnMessage(tableCmds, dateMsg) 
    500548 
     
    530578        msg3 = msg3 + 0x80 
    531579    end 
     580    if (luup.variable_get(tabVars.VAR_FINEOFFSET_RECEIVING[1], tabVars.VAR_FINEOFFSET_RECEIVING[2], THIS_DEVICE) == "1") 
     581    then 
     582        msg3 = msg3 + 0x04 
     583    end 
     584    if (luup.variable_get(tabVars.VAR_RUBICSON_RECEIVING[1], tabVars.VAR_RUBICSON_RECEIVING[2], THIS_DEVICE) == "1") 
     585    then 
     586        msg3 = msg3 + 0x02 
     587    end 
     588    if (luup.variable_get(tabVars.VAR_AE_RECEIVING[1], tabVars.VAR_AE_RECEIVING[2], THIS_DEVICE) == "1") 
     589    then 
     590        msg3 = msg3 + 0x01 
     591    end 
    532592 
    533593    local msg4 = 0 
    534     if (luup.variable_get(tabVars.VAR_ROLLERTROL_RECEIVING[1], tabVars.VAR_ROLLERTROL_RECEIVING[2], THIS_DEVICE) == "1") 
     594    if (luup.variable_get(tabVars.VAR_BLINDST1_RECEIVING[1], tabVars.VAR_BLINDST1_RECEIVING[2], THIS_DEVICE) == "1") 
     595    then 
     596        msg4 = msg4 + 0x80 
     597    end 
     598    if (luup.variable_get(tabVars.VAR_BLINDST0_RECEIVING[1], tabVars.VAR_BLINDST0_RECEIVING[2], THIS_DEVICE) == "1") 
    535599    then 
    536600        msg4 = msg4 + 0x40 
     
    574638        msg5 = msg5 + 0x20 
    575639    end 
    576     if (luup.variable_get(tabVars.VAR_IKEA_RECEIVING[1], tabVars.VAR_IKEA_RECEIVING[2], THIS_DEVICE) == "1") 
     640    if (luup.variable_get(tabVars.VAR_MEIANTECH_RECEIVING[1], tabVars.VAR_MEIANTECH_RECEIVING[2], THIS_DEVICE) == "1") 
    577641    then 
    578642        msg5 = msg5 + 0x10 
     
    10261090    elseif (category == 6) 
    10271091    then 
    1028         type = tableMsgTypes.BLIND_ROLLERTROL[1] 
     1092        type = tableMsgTypes.BLIND_T0[1] 
    10291093        subType = tonumber(string.sub(id, 5, 5)) 
    10301094        if (cmd == tableCommands.CMD_OPEN[1]) 
     
    11391203    log("requestQuickArmMode " .. id .. " state " .. state) 
    11401204 
    1141     if ((string.len(id) ~= 16) or (string.sub(id, 1, 10) ~= "AR/X10/AR/")) 
     1205    if ((string.len(id) ~= 16) or (string.sub(id, 1, 10) ~= "SR/X10/SR/" and string.sub(id, 1, 10) ~= "SR/MEI/SR/")) 
    11421206    then 
    11431207        log("Unexpected device id " .. id .. ". Quick Arm Mode command not sent", 2) 
    11441208        return 
     1209    end 
     1210     
     1211    local type = nil 
     1212    local subtype = nil 
     1213    if (string.sub(id, 1, 9) == "SR/X10/SR") 
     1214    then 
     1215        type = tableMsgTypes.SECURITY_X10SR[1] 
     1216        subType = tableMsgTypes.SECURITY_X10SR[2] 
     1217    elseif (string.sub(id, 1, 9) == "SR/MEI/SR") 
     1218    then 
     1219        type = tableMsgTypes.SECURITY_MEISR[1] 
     1220        subType = tableMsgTypes.SECURITY_MEISR[2] 
    11451221    end 
    11461222 
    11471223    local cmd = nil 
    11481224    local cmdValue = nil 
     1225    local delay = 0 
    11491226    local cmd2 = nil 
    11501227    local cmd2Value  = nil 
     1228    local delay2 = 0 
    11511229    local cmd3 = nil 
    11521230    local cmd3Value  = nil 
     1231    local delay3 = 0 
     1232    local cmd4 = nil 
     1233    local cmd4Value  = nil 
     1234    local delay4 = 0 
    11531235    local cmdCode = nil 
    11541236    local data = nil 
    1155      
    1156     if (state == "Armed") 
     1237    local exitDelay = 0 
     1238     
     1239    if (state == "Armed" and exitDelay > 0) 
     1240    then 
     1241        cmdCode = 0x0A 
     1242        cmd = tableCommands.CMD_DETAILED_ARM_MODE[1] 
     1243        cmdValue = "ExitDelay" 
     1244        cmd2 = tableCommands.CMD_ARM_MODE[1] 
     1245        cmd2Value = "Armed" 
     1246        delay2 = exitDelay 
     1247        cmd3 = tableCommands.CMD_DETAILED_ARM_MODE[1] 
     1248        cmd3Value = "Armed" 
     1249        delay3 = exitDelay 
     1250        cmd4 = tableCommands.CMD_ARM_MODE_NUM[1] 
     1251        cmd4Value = "1" 
     1252        delay4 = exitDelay 
     1253    elseif (state == "ArmedInstant" or (state == "Armed" and exitDelay == 0)) 
    11571254    then 
    11581255        cmdCode = 0x09 
     
    11631260        cmd3 = tableCommands.CMD_ARM_MODE_NUM[1] 
    11641261        cmd3Value = "1" 
    1165     elseif (state == "Stay") 
     1262    elseif (state == "Stay" and exitDelay > 0) 
     1263    then 
     1264        cmdCode = 0x0C 
     1265        cmd = tableCommands.CMD_DETAILED_ARM_MODE[1] 
     1266        cmdValue = "ExitDelay" 
     1267        cmd2 = tableCommands.CMD_ARM_MODE[1] 
     1268        cmd2Value = "Armed" 
     1269        delay2 = exitDelay 
     1270        cmd3 = tableCommands.CMD_DETAILED_ARM_MODE[1] 
     1271        cmd3Value = "Stay" 
     1272        delay3 = exitDelay 
     1273        cmd4 = tableCommands.CMD_ARM_MODE_NUM[1] 
     1274        cmd4Value = "1" 
     1275        delay4 = exitDelay 
     1276    elseif (state == "StayInstant" or (state == "Stay" and exitDelay == 0)) 
    11661277    then 
    11671278        cmdCode = 0x0B 
     
    11991310        if (cmd ~= nil) 
    12001311        then 
    1201             table.insert(tableCmds, { string.sub(id, 4), cmd, cmdValue, 0 } ) 
     1312            table.insert(tableCmds, { string.sub(id, 4), cmd, cmdValue, delay } ) 
    12021313        end 
    12031314        if (cmd2 ~= nil) 
    12041315        then 
    1205             table.insert(tableCmds, { string.sub(id, 4), cmd2, cmd2Value, 0 } ) 
     1316            table.insert(tableCmds, { string.sub(id, 4), cmd2, cmd2Value, delay2 } ) 
    12061317        end 
    12071318        if (cmd3 ~= nil) 
    12081319        then 
    1209             table.insert(tableCmds, { string.sub(id, 4), cmd3, cmd3Value, 0 } ) 
     1320            table.insert(tableCmds, { string.sub(id, 4), cmd3, cmd3Value, delay3 } ) 
     1321        end 
     1322        if (cmd4 ~= nil) 
     1323        then 
     1324            table.insert(tableCmds, { string.sub(id, 4), cmd4, cmd4Value, delay4 } ) 
    12101325        end 
    12111326        table.insert(tableMsgSent, { sequenceNum, tableCmds }) 
    12121327 
    1213         sendCommand(tableMsgTypes.SECURITY_X10SR[1], tableMsgTypes.SECURITY_X10SR[2], data) 
     1328        sendCommand(type, subType, data) 
    12141329    end 
    12151330     
     
    12211336    log("requestPanicMode " .. id .. " state " .. state) 
    12221337 
    1223     if ((string.len(id) ~= 16) or (string.sub(id, 1, 10) ~= "AR/X10/AR/")) 
     1338    if ((string.len(id) ~= 16) or (string.sub(id, 1, 10) ~= "SR/X10/SR/" and string.sub(id, 1, 10) ~= "SR/MEI/SR/")) 
    12241339    then 
    12251340        log("Unexpected device id " .. id .. ". Panic Mode command not sent", 2) 
    12261341        return 
     1342    end 
     1343     
     1344    local type = nil 
     1345    local subtype = nil 
     1346    if (string.sub(id, 1, 9) == "SR/X10/SR") 
     1347    then 
     1348        type = tableMsgTypes.SECURITY_X10SR[1] 
     1349        subType = tableMsgTypes.SECURITY_X10SR[2] 
     1350    elseif (string.sub(id, 1, 9) == "SR/MEI/SR") 
     1351    then 
     1352        type = tableMsgTypes.SECURITY_MEISR[1] 
     1353        subType = tableMsgTypes.SECURITY_MEISR[2] 
    12271354    end 
    12281355     
     
    12361363    table.insert(tableMsgSent, { sequenceNum, tableCmds }) 
    12371364 
    1238     sendCommand(tableMsgTypes.SECURITY_X10SR[1], tableMsgTypes.SECURITY_X10SR[2], data) 
     1365    sendCommand(type, subtype, data) 
    12391366     
    12401367end 
     
    14561583end 
    14571584 
     1585function addPhilipsSwitch(houseCode, unitCode) 
     1586 
     1587    log("addPhilipsSwitch " .. houseCode .. " " .. unitCode) 
     1588 
     1589    if (string.find(houseCode, "[A-P]$") ~= 1) 
     1590    then 
     1591        log("action AddPhilipsSwitch: unexpected value for first argument; must be a string from A to P", 2) 
     1592        return 
     1593    end 
     1594    if ((string.find(unitCode, "%d+$") ~= 1) or (tonumber(unitCode) < 1) or (tonumber(unitCode) > 8)) 
     1595    then 
     1596        log("action AddPhilipsSwitch: unexpected value for second argument; must be a decimal value from 1 to 8", 2) 
     1597        return 
     1598    end 
     1599     
     1600    local altid = "L1." .. tableMsgTypes.LIGHTING_PHILIPS[2] .. "/" 
     1601                    .. houseCode .. string.format("%02d", tonumber(unitCode)) 
     1602 
     1603    if (findChild(THIS_DEVICE, altid, nil) == nil) 
     1604    then 
     1605        createChildren({ { altid, "LIGHT" } }) 
     1606    else 
     1607        log("action AddPhilipsSwitch: child already exists.", 2) 
     1608    end 
     1609 
     1610end 
     1611 
    14581612function addACSwitch(remoteId, unitCode) 
    14591613 
     
    17771931    end 
    17781932     
    1779     local altid = "B" .. tableMsgTypes.BLIND_ROLLERTROL[2] .. "/" 
     1933    local altid = "B" .. tableMsgTypes.BLIND_T0[2] .. "/" 
    17801934                        .. string.format("%06X", tonumber(remoteId, 16)) .. "/" .. string.format("%02d", tonumber(unitCode)) 
    17811935 
     
    19902144        undecMsg = (bitw.band(msg4, 0x80) == 0x80) 
    19912145        luup.variable_set(tabVars.VAR_FIRMWARE_VERSION[1], tabVars.VAR_FIRMWARE_VERSION[2], "v" .. firmware, THIS_DEVICE) 
     2146 
     2147        if (bitw.band(msg3, 0x04) == 0x04) 
     2148        then 
     2149            luup.variable_set(tabVars.VAR_FINEOFFSET_RECEIVING[1], tabVars.VAR_FINEOFFSET_RECEIVING[2], "1", THIS_DEVICE) 
     2150            log("   - FineOffset / Viking") 
     2151        else 
     2152            luup.variable_set(tabVars.VAR_FINEOFFSET_RECEIVING[1], tabVars.VAR_FINEOFFSET_RECEIVING[2], "0", THIS_DEVICE) 
     2153        end 
     2154        if (bitw.band(msg3, 0x02) == 0x02) 
     2155        then 
     2156            luup.variable_set(tabVars.VAR_RUBICSON_RECEIVING[1], tabVars.VAR_RUBICSON_RECEIVING[2], "1", THIS_DEVICE) 
     2157            log("   - Rubicson") 
     2158        else 
     2159            luup.variable_set(tabVars.VAR_RUBICSON_RECEIVING[1], tabVars.VAR_RUBICSON_RECEIVING[2], "0", THIS_DEVICE) 
     2160        end 
     2161        if (bitw.band(msg3, 0x01) == 0x01) 
     2162        then 
     2163            luup.variable_set(tabVars.VAR_AE_RECEIVING[1], tabVars.VAR_AE_RECEIVING[2], "1", THIS_DEVICE) 
     2164            log("   - AE (Blyss)") 
     2165        else 
     2166            luup.variable_set(tabVars.VAR_AE_RECEIVING[1], tabVars.VAR_AE_RECEIVING[2], "0", THIS_DEVICE) 
     2167        end 
     2168 
     2169        if (bitw.band(msg4, 0x80) == 0x80) 
     2170        then 
     2171            luup.variable_set(tabVars.VAR_BLINDST1_RECEIVING[1], tabVars.VAR_BLINDST1_RECEIVING[2], "1", THIS_DEVICE) 
     2172            log("   - Hasta (old)") 
     2173        else 
     2174            luup.variable_set(tabVars.VAR_BLINDST1_RECEIVING[1], tabVars.VAR_BLINDST1_RECEIVING[2], "0", THIS_DEVICE) 
     2175        end 
    19922176        if (bitw.band(msg4, 0x40) == 0x40) 
    19932177        then 
    1994             luup.variable_set(tabVars.VAR_ROLLERTROL_RECEIVING[1], tabVars.VAR_ROLLERTROL_RECEIVING[2], "1", THIS_DEVICE) 
    1995             log("   - RollerTrol") 
     2178            luup.variable_set(tabVars.VAR_BLINDST0_RECEIVING[1], tabVars.VAR_BLINDST0_RECEIVING[2], "1", THIS_DEVICE) 
     2179            log("   - RollerTrol / Hasta (new)") 
    19962180        else 
    1997             luup.variable_set(tabVars.VAR_ROLLERTROL_RECEIVING[1], tabVars.VAR_ROLLERTROL_RECEIVING[2], "0", THIS_DEVICE) 
     2181            luup.variable_set(tabVars.VAR_BLINDST0_RECEIVING[1], tabVars.VAR_BLINDST0_RECEIVING[2], "0", THIS_DEVICE) 
    19982182        end 
    19992183        if (bitw.band(msg4, 0x20) == 0x20) 
     
    20212205        then 
    20222206            luup.variable_set(tabVars.VAR_HIDEKI_RECEIVING[1], tabVars.VAR_HIDEKI_RECEIVING[2], "1", THIS_DEVICE) 
    2023             log("   - Hideki") 
     2207            log("   - Hideki / UPM") 
    20242208        else 
    20252209            luup.variable_set(tabVars.VAR_HIDEKI_RECEIVING[1], tabVars.VAR_HIDEKI_RECEIVING[2], "0", THIS_DEVICE) 
     
    20622246        if (bitw.band(msg5, 0x10) == 0x10) 
    20632247        then 
    2064             luup.variable_set(tabVars.VAR_IKEA_RECEIVING[1], tabVars.VAR_IKEA_RECEIVING[2], "1", THIS_DEVICE) 
    2065             log("   - Ikea Koppla") 
     2248            luup.variable_set(tabVars.VAR_MEIANTECH_RECEIVING[1], tabVars.VAR_MEIANTECH_RECEIVING[2], "1", THIS_DEVICE) 
     2249            log("   - Meiantech") 
    20662250        else 
    2067             luup.variable_set(tabVars.VAR_IKEA_RECEIVING[1], tabVars.VAR_IKEA_RECEIVING[2], "0", THIS_DEVICE) 
     2251            luup.variable_set(tabVars.VAR_MEIANTECH_RECEIVING[1], tabVars.VAR_MEIANTECH_RECEIVING[2], "0", THIS_DEVICE) 
    20682252        end 
    20692253        if (bitw.band(msg5, 0x08) == 0x08) 
     
    21102294function decodeLighting1(subType, data, seqNum) 
    21112295 
    2112     local altid = "L1." .. subType .. "/" 
    2113                     .. string.sub(data, 1, 1) .. string.format("%02d", tonumber(string.byte(data, 2))) 
    2114  
     2296    local altid2 = "L1." .. subType .. "/" 
     2297                    .. string.sub(data, 1, 1) 
     2298    local altid = altid2 .. string.format("%02d", tonumber(string.byte(data, 2))) 
     2299 
     2300    local tableCmds = {} 
     2301    local cmd = nil 
     2302    local cmdValue = nil 
     2303    local cmdDelay = 0 
     2304    local cmd2 = nil 
     2305    local cmd2Value = nil 
     2306    local cmd2Delay = 0 
     2307    local cmdCode = string.byte(data, 3) 
     2308    if (cmdCode == 0) 
     2309    then 
     2310        cmd = tableCommands.CMD_OFF[1] 
     2311        cmd2 = tableCommands.CMD_SCENE_OFF[1] 
     2312        cmd2Value = tonumber(string.byte(data, 2)) 
     2313    elseif (cmdCode == 1) 
     2314    then 
     2315        cmd = tableCommands.CMD_ON[1] 
     2316        cmd2 = tableCommands.CMD_SCENE_ON[1] 
     2317        cmd2Value = tonumber(string.byte(data, 2)) 
     2318    elseif (cmdCode == 7) 
     2319    then 
     2320        altid = altid2 
     2321        cmd = tableCommands.CMD_DOOR[1] 
     2322        cmdValue = "1" 
     2323        cmd2 = tableCommands.CMD_DOOR[1] 
     2324        cmd2Value = "0" 
     2325        cmd2Delay = 5 
     2326    else 
     2327        log("Lighting1 command not yet implemented: " .. cmdCode, 2) 
     2328    end 
     2329    if (cmd ~= nil) 
     2330    then 
     2331        table.insert(tableCmds, { altid, cmd, cmdValue, cmdDelay } ) 
     2332    end 
     2333    if (cmd2 ~= nil) 
     2334    then 
     2335        table.insert(tableCmds, { altid2, cmd2, cmd2Value, cmd2Delay } ) 
     2336    end 
     2337     
     2338    return tableCmds 
     2339     
     2340end 
     2341 
     2342function decodeLighting2(subType, data, seqNum) 
     2343 
     2344    local altid2 = "L2." .. subType .. "/" 
     2345                        .. string.format("%X", bitw.band(string.byte(data, 1), 0x03)) 
     2346                        .. string.format("%02X", tonumber(string.byte(data, 2))) 
     2347                        .. string.format("%02X", tonumber(string.byte(data, 3))) 
     2348                        .. string.format("%02X", tonumber(string.byte(data, 4))) 
     2349    local altid = altid2 .. "/" .. string.format("%02d", tonumber(string.byte(data, 5))) 
     2350     
     2351    local tableCmds = {} 
     2352    local cmd = nil 
     2353    local cmdValue = nil 
     2354    local cmdDelay = 0 
     2355    local cmd2 = nil 
     2356    local cmd2Value = nil 
     2357    local cmd2Delay = 0 
     2358    local cmdCode = string.byte(data, 6) 
     2359    if (cmdCode == 0) 
     2360    then 
     2361        cmd = tableCommands.CMD_OFF[1] 
     2362        cmd2 = tableCommands.CMD_SCENE_OFF[1] 
     2363        cmd2Value = tonumber(string.byte(data, 5)) 
     2364    elseif (cmdCode == 1) 
     2365    then 
     2366        cmd = tableCommands.CMD_ON[1] 
     2367        cmd2 = tableCommands.CMD_SCENE_ON[1] 
     2368        cmd2Value = tonumber(string.byte(data, 5)) 
     2369    elseif (cmdCode == 2) 
     2370    then 
     2371        cmd = tableCommands.CMD_DIM[1] 
     2372        cmdValue = math.floor((string.byte(data, 7) + 1) * 100 / 0x10 + 0.5) 
     2373    else 
     2374        log("Lighting2 command not yet implemented: " .. cmdCode, 2) 
     2375    end 
     2376    if (cmd ~= nil) 
     2377    then 
     2378        table.insert(tableCmds, { altid, cmd, cmdValue, cmdDelay } ) 
     2379    end 
     2380    if (cmd2 ~= nil) 
     2381    then 
     2382        table.insert(tableCmds, { altid2, cmd2, cmd2Value, cmd2Delay } ) 
     2383    end 
     2384     
     2385    return tableCmds 
     2386     
     2387end 
     2388 
     2389function decodeLighting3(subType, data, seqNum) 
     2390 
     2391    local ids = {} 
     2392    local altid = "L3." .. subType .. "/" 
     2393                        .. string.format("%X", bitw.band(string.byte(data, 1), 0x0F)) 
     2394    if (bitw.band(string.byte(data, 2), 0x01) ~= 0) 
     2395    then 
     2396        table.insert(ids, 1) 
     2397    end 
     2398    if (bitw.band(string.byte(data, 2), 0x02) ~= 0) 
     2399    then 
     2400        table.insert(ids, 2) 
     2401    end 
     2402    if (bitw.band(string.byte(data, 2), 0x04) ~= 0) 
     2403    then 
     2404        table.insert(ids, 3) 
     2405    end 
     2406    if (bitw.band(string.byte(data, 2), 0x08) ~= 0) 
     2407    then 
     2408        table.insert(ids, 4) 
     2409    end 
     2410    if (bitw.band(string.byte(data, 2), 0x10) ~= 0) 
     2411    then 
     2412        table.insert(ids, 5) 
     2413    end 
     2414    if (bitw.band(string.byte(data, 2), 0x20) ~= 0) 
     2415    then 
     2416        table.insert(ids, 6) 
     2417    end 
     2418    if (bitw.band(string.byte(data, 2), 0x40) ~= 0) 
     2419    then 
     2420        table.insert(ids, 7) 
     2421    end 
     2422    if (bitw.band(string.byte(data, 2), 0x80) ~= 0) 
     2423    then 
     2424        table.insert(ids, 8) 
     2425    end 
     2426    if (bitw.band(string.byte(data, 3), 0x01) ~= 0) 
     2427    then 
     2428        table.insert(ids, 9) 
     2429    end 
     2430    if (bitw.band(string.byte(data, 3), 0x02) ~= 0) 
     2431    then 
     2432        table.insert(ids, 10) 
     2433    end 
     2434     
    21152435    local tableCmds = {} 
    21162436    local cmd = nil 
    21172437    local cmdValue = nil 
    21182438    local cmd2 = nil 
    2119     local cmd2Value = nil 
    2120     local cmdCode = string.byte(data, 3) 
    2121     if (cmdCode == 0) 
     2439    local cmdCode = string.byte(data, 4) 
     2440    log("Koppla message received with command code: " .. cmdCode) 
     2441    if (cmdCode == 0x1A) 
    21222442    then 
    21232443        cmd = tableCommands.CMD_OFF[1] 
    2124     elseif (cmdCode == 1) 
     2444        cmd2 = tableCommands.CMD_SCENE_OFF[1] 
     2445    elseif (cmdCode == 0x10) 
    21252446    then 
    21262447        cmd = tableCommands.CMD_ON[1] 
    2127     elseif (cmdCode == 7) 
    2128     then 
    2129         altid = "L1." .. subType .. "/" .. string.sub(data, 1, 1) 
    2130         cmd = tableCommands.CMD_DOOR[1] 
    2131         cmdValue = "1" 
    2132         cmd2 = tableCommands.CMD_DOOR[1] 
    2133         cmd2Value = "0" 
    2134     else 
    2135         log("Lighting1 command not yet implemented: " .. cmdCode, 2) 
    2136     end 
    2137     if (cmd ~= nil) 
    2138     then 
    2139         table.insert(tableCmds, { altid, cmd, cmdValue, 0 } ) 
    2140     end 
    2141     if (cmd2 ~= nil) 
    2142     then 
    2143         table.insert(tableCmds, { altid, cmd2, cmd2Value, 5 } ) 
     2448        cmd2 = tableCommands.CMD_SCENE_ON[1] 
     2449    elseif (cmdCode >= 0x11 and cmdCode <= 0x19) 
     2450    then 
     2451        cmd = tableCommands.CMD_DIM[1] 
     2452        cmdValue = (cmdCode - ox10) * 10 
     2453    else 
     2454        log("Lighting3 command not yet implemented: " .. cmdCode, 2) 
     2455    end 
     2456     
     2457    if (ids ~= nil and #ids > 0) 
     2458    then 
     2459        for i, v in ipairs(ids) 
     2460        do 
     2461            if (cmd ~= nil) 
     2462            then 
     2463                table.insert(tableCmds, { altid .. string.format("%02d", v), cmd, cmdValue, 0 } ) 
     2464            end 
     2465            if (cmd2 ~= nil) 
     2466            then 
     2467                table.insert(tableCmds, { altid, cmd2, v, 0 } ) 
     2468            end 
     2469        end 
    21442470    end 
    21452471     
     
    21482474end 
    21492475 
    2150 function decodeLighting2(subType, data, seqNum) 
    2151  
    2152     local altid = "L2." .. subType .. "/" 
    2153                         .. string.format("%X", bitw.band(string.byte(data, 1), 0x03)) 
     2476function decodeLighting5(subType, data, seqNum) 
     2477 
     2478    local altid2 = "L5." .. subType .. "/" 
     2479                        .. string.format("%02X", tonumber(string.byte(data, 1))) 
    21542480                        .. string.format("%02X", tonumber(string.byte(data, 2))) 
    21552481                        .. string.format("%02X", tonumber(string.byte(data, 3))) 
    2156                         .. string.format("%02X", tonumber(string.byte(data, 4))) 
    2157                         .. "/" .. string.format("%02d", tonumber(string.byte(data, 5))) 
     2482    local altid = altid2 .. "/" .. string.format("%02d", tonumber(string.byte(data, 4))) 
    21582483     
    21592484    local tableCmds = {} 
    21602485    local cmd = nil 
    21612486    local cmdValue = nil 
    2162     local cmdCode = string.byte(data, 6) 
    2163     if (cmdCode == 0) 
    2164     then 
    2165         cmd = tableCommands.CMD_OFF[1] 
    2166     elseif (cmdCode == 1) 
    2167     then 
    2168         cmd = tableCommands.CMD_ON[1] 
    2169     elseif (cmdCode == 2) 
    2170     then 
    2171         cmd = tableCommands.CMD_DIM[1] 
    2172         cmdValue = math.floor((string.byte(data, 7) + 1) * 100 / 0x10 + 0.5) 
    2173     else 
    2174         log("Lighting2 command not yet implemented: " .. cmdCode, 2) 
    2175     end 
    2176     if (cmd ~= nil) 
    2177     then 
    2178         table.insert(tableCmds, { altid, cmd, cmdValue, 0 } ) 
    2179     end 
    2180      
    2181     return tableCmds 
    2182      
    2183 end 
    2184  
    2185 function decodeLighting3(subType, data, seqNum) 
    2186  
    2187     local altid = {} 
    2188     local prefix = "L3." .. subType .. "/" 
    2189                         .. string.format("%X", bitw.band(string.byte(data, 1), 0x0F)) 
    2190     if (bitw.band(string.byte(data, 2), 0x01) ~= 0) 
    2191     then 
    2192         table.insert(altid, prefix .. "01") 
    2193     elseif (bitw.band(string.byte(data, 2), 0x02) ~= 0) 
    2194     then 
    2195         table.insert(altid, prefix .. "02") 
    2196     elseif (bitw.band(string.byte(data, 2), 0x04) ~= 0) 
    2197     then 
    2198         table.insert(altid, prefix .. "03") 
    2199     elseif (bitw.band(string.byte(data, 2), 0x08) ~= 0) 
    2200     then 
    2201         table.insert(altid, prefix .. "04") 
    2202     elseif (bitw.band(string.byte(data, 2), 0x10) ~= 0) 
    2203     then 
    2204         table.insert(altid, prefix .. "05") 
    2205     elseif (bitw.band(string.byte(data, 2), 0x20) ~= 0) 
    2206     then 
    2207         table.insert(altid, prefix .. "06") 
    2208     elseif (bitw.band(string.byte(data, 2), 0x40) ~= 0) 
    2209     then 
    2210         table.insert(altid, prefix .. "07") 
    2211     elseif (bitw.band(string.byte(data, 2), 0x80) ~= 0) 
    2212     then 
    2213         table.insert(altid, prefix .. "08") 
    2214     elseif (bitw.band(string.byte(data, 3), 0x01) ~= 0) 
    2215     then 
    2216         table.insert(altid, prefix .. "09") 
    2217     elseif (bitw.band(string.byte(data, 3), 0x02) ~= 0) 
    2218     then 
    2219         table.insert(altid, prefix .. "10") 
    2220     end 
    2221      
    2222     local tableCmds = {} 
    2223     local cmd = nil 
    2224     local cmdValue = nil 
    2225     local cmdCode = string.byte(data, 4) 
    2226     log("Koppla message received with command code: " .. cmdCode) 
    2227     if (cmdCode == 0x1A) 
    2228     then 
    2229         cmd = tableCommands.CMD_OFF[1] 
    2230     elseif (cmdCode == 0x10) 
    2231     then 
    2232         cmd = tableCommands.CMD_ON[1] 
    2233     elseif (cmdCode >= 0x11 and cmdCode <= 0x19) 
    2234     then 
    2235         cmd = tableCommands.CMD_DIM[1] 
    2236         cmdValue = (cmdCode - ox10) * 10 
    2237     else 
    2238         log("Lighting3 command not yet implemented: " .. cmdCode, 2) 
    2239     end 
    2240      
    2241     if (cmd ~= nil and altid ~= nil and #altid > 0) 
    2242     then 
    2243         for i, v in ipairs(altid) 
    2244         do 
    2245             table.insert(tableCmds, { v, cmd, cmdValue, 0 } ) 
    2246         end 
    2247     end 
    2248      
    2249     return tableCmds 
    2250      
    2251 end 
    2252  
    2253 function decodeLighting5(subType, data, seqNum) 
    2254  
    2255     local altid = "L5." .. subType .. "/" 
    2256                         .. string.format("%02X", tonumber(string.byte(data, 1))) 
    2257                         .. string.format("%02X", tonumber(string.byte(data, 2))) 
    2258                         .. string.format("%02X", tonumber(string.byte(data, 3))) 
    2259                         .. "/" .. string.format("%02d", tonumber(string.byte(data, 4))) 
    2260      
    2261     local tableCmds = {} 
    2262     local cmd = nil 
    2263     local cmdValue = nil 
     2487    local cmdDelay = 0 
     2488    local cmd2 = nil 
     2489    local cmd2Value = nil 
     2490    local cmd2Delay = 0 
    22642491    local cmdCode = string.byte(data, 5) 
    22652492        if (cmdCode == 0) 
    22662493    then 
    22672494        cmd = tableCommands.CMD_OFF[1] 
     2495        cmd2 = tableCommands.CMD_SCENE_OFF[1] 
     2496        cmd2Value = tonumber(string.byte(data, 4)) 
    22682497    elseif (cmdCode == 1) 
    22692498    then 
    22702499        cmd = tableCommands.CMD_ON[1] 
     2500        cmd2 = tableCommands.CMD_SCENE_ON[1] 
     2501        cmd2Value = tonumber(string.byte(data, 4)) 
    22712502    elseif (cmdCode == 3) 
    22722503    then 
     
    23122543    if (cmd ~= nil) 
    23132544    then 
    2314         table.insert(tableCmds, { altid, cmd, cmdValue, 0 } ) 
     2545        table.insert(tableCmds, { altid, cmd, cmdValue, cmdDelay } ) 
     2546    end 
     2547    if (cmd2 ~= nil) 
     2548    then 
     2549        table.insert(tableCmds, { altid2, cmd2, cmd2Value, cmd2Delay } ) 
    23152550    end 
    23162551     
     
    27973032end 
    27983033 
    2799 function decodeX10Remote(subType, data, seqNum) 
     3034function decodeSecurityRemote(subType, data, seqNum) 
    28003035 
    28013036    local altid = "" 
     
    28083043    local cmd3Value = nil 
    28093044    local cmd = tonumber(string.byte(data, 4)) 
     3045    local prefix 
     3046     
     3047    if (subType == tableMsgTypes.SECURITY_X10SR[2]) 
     3048    then 
     3049        prefix = "X10" 
     3050    elseif (subType == tableMsgTypes.SECURITY_MEISR[2]) 
     3051    then 
     3052        prefix = "MEI" 
     3053    end 
    28103054                     
    28113055    if (cmd == 0x09 or cmd == 0x0A) 
    28123056    then 
    2813         altid = "X10/AR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
     3057        altid = prefix .. "/SR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
    28143058                        .. string.format("%02X", tonumber(string.byte(data, 2))) 
    2815                         .. string.format("%02X", tonumber(string.byte(data, 3)))  
     3059                        .. string.format("%02X", tonumber(string.byte(data, 3))) 
    28163060        cmd = tableCommands.CMD_ARM_MODE[1] 
    28173061        cmdValue = "Armed" 
     
    28223066    elseif (cmd == 0x0B or cmd == 0x0C) 
    28233067    then 
    2824         altid = "X10/AR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
     3068        altid = prefix .. "/SR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
    28253069                        .. string.format("%02X", tonumber(string.byte(data, 2))) 
    2826                         .. string.format("%02X", tonumber(string.byte(data, 3)))  
     3070                        .. string.format("%02X", tonumber(string.byte(data, 3))) 
    28273071        cmd = tableCommands.CMD_ARM_MODE[1] 
    28283072        cmdValue = "Armed" 
     
    28333077    elseif (cmd == 0x0D) 
    28343078    then 
    2835         altid = "X10/AR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
     3079        altid = prefix .. "/SR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
    28363080                        .. string.format("%02X", tonumber(string.byte(data, 2))) 
    2837                         .. string.format("%02X", tonumber(string.byte(data, 3)))  
     3081                        .. string.format("%02X", tonumber(string.byte(data, 3))) 
    28383082        cmd = tableCommands.CMD_ARM_MODE[1] 
    28393083        cmdValue = "Disarmed" 
     
    28443088    elseif (cmd == 0x06) 
    28453089    then 
    2846         altid = "X10/AR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
     3090        altid = prefix .. "/SR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
    28473091                        .. string.format("%02X", tonumber(string.byte(data, 2))) 
    28483092                        .. string.format("%02X", tonumber(string.byte(data, 3)))  
     
    28513095    elseif (cmd == 0x07) 
    28523096    then 
    2853         altid = "X10/AR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
     3097        altid = prefix .. "/SR/" .. string.format("%02X", tonumber(string.byte(data, 1))) 
    28543098                        .. string.format("%02X", tonumber(string.byte(data, 2))) 
    28553099                        .. string.format("%02X", tonumber(string.byte(data, 3)))  
     
    29793223                local programmed = IsKopplaProgrammed(k, false) 
    29803224                table.insert(tableDevices, { v.id, key, associations, programmed }) 
     3225                if (tableDeviceTypes[key][7] == true) 
     3226                then 
     3227                    local adjustConst = luup.variable_get(tabVars.VAR_ADJUST_CONSTANT[1], tabVars.VAR_ADJUST_CONSTANT[2], k) 
     3228                    if (adjustConst == nil) 
     3229                    then 
     3230                        luup.variable_set(tabVars.VAR_ADJUST_CONSTANT[1], tabVars.VAR_ADJUST_CONSTANT[2], "", k) 
     3231                    end 
     3232                end 
     3233                if (key == "LIGHT") 
     3234                then 
     3235                    local repeatEvt = luup.variable_get(tabVars.VAR_REPEAT_EVENT[1], tabVars.VAR_REPEAT_EVENT[2], k) 
     3236                    if (repeatEvt == nil) 
     3237                    then 
     3238                        luup.variable_set(tabVars.VAR_REPEAT_EVENT[1], tabVars.VAR_REPEAT_EVENT[2], "0", k) 
     3239                    end 
     3240                end 
    29813241            end 
    29823242        end 
     
    31913451                    if ((deviceType == nil or v.device_type == deviceType[1]) and variable ~= nil and value ~= nil) 
    31923452                    then 
     3453                        if (v.device_type == tableDeviceTypes.LIGHT[1]) 
     3454                        then 
     3455                            local repeatEvt = luup.variable_get(tabVars.VAR_REPEAT_EVENT[1], tabVars.VAR_REPEAT_EVENT[2], device) 
     3456                            if (repeatEvt == "1") 
     3457                            then 
     3458                                --log("SET " .. variable[2] .. " from " .. v.id .. " with value " .. -1) 
     3459                                luup.variable_set(variable[1], variable[2], -1, device) 
     3460                            end 
     3461                        end 
     3462                        if (deviceType ~= nil and deviceType[7] == true and variable[4] == true) 
     3463                        then 
     3464                            local adjustConst = luup.variable_get(tabVars.VAR_ADJUST_CONSTANT[1], tabVars.VAR_ADJUST_CONSTANT[2], device) 
     3465                            if (adjustConst ~= nil and adjustConst ~= "") 
     3466                            then 
     3467                                --log("Adjust value of " .. adjustConst .. " on device " .. v.id) 
     3468                                value = tonumber(value) + tonumber(adjustConst) 
     3469                            end 
     3470                        end 
    31933471                        --log("SET " .. variable[2] .. " from " .. v.id .. " with value " .. value) 
    31943472                        luup.variable_set(variable[1], variable[2], value, device) 
     
    34403718                        end 
    34413719                    end 
     3720                    if (parameters ~= "") 
     3721                    then 
     3722                        parameters = parameters .. "\n" 
     3723                    end 
     3724                    parameters = parameters .. tabVars.VAR_REPEAT_EVENT[1] .. "," .. tabVars.VAR_REPEAT_EVENT[2] .. "=0" 
    34423725                    luup.chdev.append(THIS_DEVICE, child_devices, deviceType[4] .. subId, deviceType[3] .. subId , 
    34433726                                        deviceType[1], deviceType[2], "", parameters, false) 
     
    34813764                    parameters = parameters .. tabVars.VAR_PROGRAMMED[1] .. "," .. tabVars.VAR_PROGRAMMED[2] .. "=1" 
    34823765                end 
     3766                if (deviceType[7] == true) 
     3767                then 
     3768                    if (parameters ~= "") 
     3769                    then 
     3770                        parameters = parameters .. "\n" 
     3771                    end 
     3772                    parameters = parameters .. tabVars.VAR_ADJUST_CONSTANT[1] .. "," .. tabVars.VAR_ADJUST_CONSTANT[2] .. "=" 
     3773                end 
     3774                if (deviceType == tableDeviceTypes.LIGHT) 
     3775                then 
     3776                    if (parameters ~= "") 
     3777                    then 
     3778                        parameters = parameters .. "\n" 
     3779                    end 
     3780                    parameters = parameters .. tabVars.VAR_REPEAT_EVENT[1] .. "," .. tabVars.VAR_REPEAT_EVENT[2] .. "=0" 
     3781                end 
    34833782                luup.chdev.append(THIS_DEVICE, child_devices, deviceType[4] .. deviceId, 
    34843783                                deviceType[3] .. deviceId , deviceType[1], deviceType[2], "", parameters, false) 
     
    35623861    local countPM = 0 
    35633862    local countUV = 0 
    3564     local countAR = 0 
     3863    local countSR = 0 
     3864    local countRC = 0 
    35653865    for i, v in ipairs(tableDevices) 
    35663866    do 
     
    36043904        elseif (key == "ALARM") 
    36053905        then 
    3606             countAR = countAR + 1 
     3906            countSR = countSR + 1 
     3907        elseif (key == "REMOTE") 
     3908        then 
     3909            countRC = countRC + 1 
    36073910        end 
    36083911    end 
     
    36203923    log("         UV sensors: " .. countUV) 
    36213924    log("      power sensors: " .. countPM) 
    3622     log("      alarm remotes: " .. countAR) 
     3925    log("   security remotes: " .. countSR) 
     3926    log("    remote controls: " .. countRC) 
    36233927 
    36243928end 
  • /trunk/D_WindSensor1.json

    r20 r30  
    172172      "Function": "advanced_device" 
    173173    }, 
     174        { 
     175            "Label": { 
     176                "lang_tag": "logs", 
     177                "text": "Logs" 
     178            }, 
     179            "Position": "2", 
     180            "TabType": "javascript", 
     181            "ScriptName": "shared.js", 
     182            "Function": "device_logs" 
     183        }, 
     184        { 
     185            "Label": { 
     186                "lang_tag": "notifications", 
     187                "text": "Notifications" 
     188            }, 
     189            "Position": "3", 
     190            "TabType": "javascript", 
     191            "ScriptName": "shared.js", 
     192            "Function": "device_notifications" 
     193        } 
    174194  ], 
    175195    "eventList2": [ 
  • /trunk/D_BarometerSensor1.json

    r20 r30  
    134134            "ScriptName": "shared.js", 
    135135            "Function": "advanced_device" 
     136        }, 
     137        { 
     138            "Label": { 
     139                "lang_tag": "logs", 
     140                "text": "Logs" 
     141            }, 
     142            "Position": "2", 
     143            "TabType": "javascript", 
     144            "ScriptName": "shared.js", 
     145            "Function": "device_logs" 
     146        }, 
     147        { 
     148            "Label": { 
     149                "lang_tag": "notifications", 
     150                "text": "Notifications" 
     151            }, 
     152            "Position": "3", 
     153            "TabType": "javascript", 
     154            "ScriptName": "shared.js", 
     155            "Function": "device_notifications" 
    136156        } 
    137157    ], 
  • /trunk/S_RFXtrx.xml

    r20 r30  
    169169  </action> 
    170170  <action> 
    171     <name>ReceiveRollerTrol</name> 
     171    <name>ReceiveFineOffset</name> 
     172    <argumentList> 
     173        <argument> 
     174            <name>enable</name> 
     175            <direction>in</direction> 
     176            </argument> 
     177    </argumentList> 
     178  </action> 
     179  <action> 
     180    <name>ReceiveRubicson</name> 
     181    <argumentList> 
     182        <argument> 
     183            <name>enable</name> 
     184            <direction>in</direction> 
     185            </argument> 
     186    </argumentList> 
     187  </action> 
     188  <action> 
     189    <name>ReceiveAE</name> 
     190    <argumentList> 
     191        <argument> 
     192            <name>enable</name> 
     193            <direction>in</direction> 
     194            </argument> 
     195    </argumentList> 
     196  </action> 
     197  <action> 
     198    <name>ReceiveBlindsT1</name> 
     199    <argumentList> 
     200        <argument> 
     201            <name>enable</name> 
     202            <direction>in</direction> 
     203            </argument> 
     204    </argumentList> 
     205  </action> 
     206  <action> 
     207    <name>ReceiveBlindsT0</name> 
     208    <argumentList> 
     209        <argument> 
     210            <name>enable</name> 
     211            <direction>in</direction> 
     212            </argument> 
     213    </argumentList> 
     214  </action> 
     215  <action> 
     216    <name>ReceiveMeiantech</name> 
    172217    <argumentList> 
    173218        <argument> 
     
    408453  <action> 
    409454    <name>AddRisingSunSwitch</name> 
     455    <argumentList> 
     456        <argument> 
     457            <name>HouseCode</name> 
     458            <direction>in</direction> 
     459        </argument> 
     460        <argument> 
     461            <name>UnitCode</name> 
     462            <direction>in</direction> 
     463        </argument> 
     464    </argumentList> 
     465  </action> 
     466  <action> 
     467    <name>AddPhilipsSwitch</name> 
    410468    <argumentList> 
    411469        <argument> 
  • /trunk/D_RFXtrx.json

    r20 r30  
    101101                    "Label": { 
    102102                        "lang_tag": "temp_unit", 
    103                         "text": "Temprature unit" 
     103                        "text": "Temperature unit" 
    104104                    }, 
    105105                    "Display": { 
     
    406406                    "Label": { 
    407407                        "lang_tag": "hideki_receiving", 
    408                         "text": "Hideki" 
     408                        "text": "Hideki / UPM" 
    409409                    }, 
    410410                    "Display": { 
     
    471471                    "Label": { 
    472472                        "lang_tag": "ad_receiving", 
    473                         "text": "AD" 
     473                        "text": "AD (LightwaveRF)" 
    474474                    }, 
    475475                    "Display": { 
     
    665665                    "ControlType": "label", 
    666666                    "Label": { 
     667                        "lang_tag": "bindsT0_receiving", 
     668                        "text": "RollerTrol / Hasta" 
     669                    }, 
     670                    "Display": { 
     671                        "Top": 300, 
     672                        "Left": 25, 
     673                        "Width": 75, 
     674                        "Height": 20  
     675                    } 
     676                }, 
     677                { 
     678                    "ControlType": "button", 
     679                    "Label": { 
     680                        "lang_tag": "cmd_blindsT0_enable", 
     681                        "text": "Enable" 
     682                    }, 
     683                    "Display": { 
     684                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     685                        "Variable": "BlindsT0Receiving", 
     686                        "Value": "1", 
     687                        "Top": 295, 
     688                        "Left": 135, 
     689                        "Width": 75, 
     690                        "Height": 20  
     691                    }, 
     692                    "Command": {  
     693                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     694                        "Action": "ReceiveBlindsT0",  
     695                        "Parameters": [ 
     696                            { 
     697                                "Name": "enable", 
     698                                "Value": "1" 
     699                            } 
     700                        ]  
     701                    }  
     702                }, 
     703                { 
     704                    "ControlType": "button", 
     705                    "Label": { 
     706                        "lang_tag": "cmd_blindsT0_disable", 
     707                        "text": "Disable" 
     708                    }, 
     709                    "Display": { 
     710                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     711                        "Variable": "BlindsT0Receiving", 
     712                        "Value": "0", 
     713                        "Top": 295, 
     714                        "Left": 225, 
     715                        "Width": 75, 
     716                        "Height": 20  
     717                    }, 
     718                    "Command": {  
     719                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     720                        "Action": "ReceiveBlindsT0",  
     721                        "Parameters": [ 
     722                            { 
     723                                "Name": "enable", 
     724                                "Value": "0" 
     725                            } 
     726                        ]  
     727                    }  
     728                }, 
     729                { 
     730                    "ControlType": "label", 
     731                    "Label": { 
     732                        "lang_tag": "bindsT1_receiving", 
     733                        "text": "Hasta (old)" 
     734                    }, 
     735                    "Display": { 
     736                        "Top": 330, 
     737                        "Left": 25, 
     738                        "Width": 75, 
     739                        "Height": 20  
     740                    } 
     741                }, 
     742                { 
     743                    "ControlType": "button", 
     744                    "Label": { 
     745                        "lang_tag": "cmd_blindsT1_enable", 
     746                        "text": "Enable" 
     747                    }, 
     748                    "Display": { 
     749                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     750                        "Variable": "BlindsT1Receiving", 
     751                        "Value": "1", 
     752                        "Top": 325, 
     753                        "Left": 135, 
     754                        "Width": 75, 
     755                        "Height": 20  
     756                    }, 
     757                    "Command": {  
     758                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     759                        "Action": "ReceiveBlindsT1",  
     760                        "Parameters": [ 
     761                            { 
     762                                "Name": "enable", 
     763                                "Value": "1" 
     764                            } 
     765                        ]  
     766                    }  
     767                }, 
     768                { 
     769                    "ControlType": "button", 
     770                    "Label": { 
     771                        "lang_tag": "cmd_blindsT1_disable", 
     772                        "text": "Disable" 
     773                    }, 
     774                    "Display": { 
     775                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     776                        "Variable": "BlindsT1Receiving", 
     777                        "Value": "0", 
     778                        "Top": 325, 
     779                        "Left": 225, 
     780                        "Width": 75, 
     781                        "Height": 20  
     782                    }, 
     783                    "Command": {  
     784                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     785                        "Action": "ReceiveBlindsT1",  
     786                        "Parameters": [ 
     787                            { 
     788                                "Name": "enable", 
     789                                "Value": "0" 
     790                            } 
     791                        ]  
     792                    }  
     793                }, 
     794                { 
     795                    "ControlType": "label", 
     796                    "Label": { 
     797                        "lang_tag": "fineoffset_receiving", 
     798                        "text": "FineOffset / Viking" 
     799                    }, 
     800                    "Display": { 
     801                        "Top": 360, 
     802                        "Left": 25, 
     803                        "Width": 75, 
     804                        "Height": 20  
     805                    } 
     806                }, 
     807                { 
     808                    "ControlType": "button", 
     809                    "Label": { 
     810                        "lang_tag": "cmd_fineoffset_enable", 
     811                        "text": "Enable" 
     812                    }, 
     813                    "Display": { 
     814                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     815                        "Variable": "FineOffsetReceiving", 
     816                        "Value": "1", 
     817                        "Top": 355, 
     818                        "Left": 135, 
     819                        "Width": 75, 
     820                        "Height": 20  
     821                    }, 
     822                    "Command": {  
     823                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     824                        "Action": "ReceiveFineOffset",  
     825                        "Parameters": [ 
     826                            { 
     827                                "Name": "enable", 
     828                                "Value": "1" 
     829                            } 
     830                        ]  
     831                    }  
     832                }, 
     833                { 
     834                    "ControlType": "button", 
     835                    "Label": { 
     836                        "lang_tag": "cmd_fineoffset_disable", 
     837                        "text": "Disable" 
     838                    }, 
     839                    "Display": { 
     840                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     841                        "Variable": "FineOffsetReceiving", 
     842                        "Value": "0", 
     843                        "Top": 355, 
     844                        "Left": 225, 
     845                        "Width": 75, 
     846                        "Height": 20  
     847                    }, 
     848                    "Command": {  
     849                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     850                        "Action": "ReceiveFineOffset",  
     851                        "Parameters": [ 
     852                            { 
     853                                "Name": "enable", 
     854                                "Value": "0" 
     855                            } 
     856                        ]  
     857                    }  
     858                }, 
     859                { 
     860                    "ControlType": "label", 
     861                    "Label": { 
    667862                        "lang_tag": "ati_receiving", 
    668863                        "text": "ATI" 
     
    795990                    "ControlType": "label", 
    796991                    "Label": { 
    797                         "lang_tag": "rollertrol_receiving", 
    798                         "text": "RollerTrol" 
     992                        "lang_tag": "meiantech_receiving", 
     993                        "text": "Meiantech" 
    799994                    }, 
    800995                    "Display": { 
     
    8081003                    "ControlType": "button", 
    8091004                    "Label": { 
    810                         "lang_tag": "cmd_rollertrol_enable", 
     1005                        "lang_tag": "cmd_meiantech_enable", 
    8111006                        "text": "Enable" 
    8121007                    }, 
    8131008                    "Display": { 
    8141009                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
    815                         "Variable": "RollerTrolReceiving", 
     1010                        "Variable": "MeiantechReceiving", 
    8161011                        "Value": "1", 
    8171012                        "Top": 145, 
     
    8221017                    "Command": {  
    8231018                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
    824                         "Action": "ReceiveRollerTrol",  
     1019                        "Action": "ReceiveMeiantech",  
    8251020                        "Parameters": [ 
    8261021                            { 
     
    8341029                    "ControlType": "button", 
    8351030                    "Label": { 
    836                         "lang_tag": "cmd_rollertrol_disable", 
     1031                        "lang_tag": "cmd_meiantech_disable", 
    8371032                        "text": "Disable" 
    8381033                    }, 
    8391034                    "Display": { 
    8401035                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
    841                         "Variable": "RollerTrolReceiving", 
     1036                        "Variable": "MeiantechReceiving", 
    8421037                        "Value": "0", 
    8431038                        "Top": 145, 
     
    8481043                    "Command": {  
    8491044                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
    850                         "Action": "ReceiveRollerTrol",  
     1045                        "Action": "ReceiveMeiantech",  
    8511046                        "Parameters": [ 
    8521047                            { 
     
    11181313                }, 
    11191314                { 
     1315                    "ControlType": "label", 
     1316                    "Label": { 
     1317                        "lang_tag": "rubicson_receiving", 
     1318                        "text": "Rubicson" 
     1319                    }, 
     1320                    "Display": { 
     1321                        "Top": 300, 
     1322                        "Left": 325, 
     1323                        "Width": 75, 
     1324                        "Height": 20  
     1325                    } 
     1326                }, 
     1327                { 
     1328                    "ControlType": "button", 
     1329                    "Label": { 
     1330                        "lang_tag": "cmd_rubicson_enable", 
     1331                        "text": "Enable" 
     1332                    }, 
     1333                    "Display": { 
     1334                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     1335                        "Variable": "RubicsonReceiving", 
     1336                        "Value": "1", 
     1337                        "Top": 295, 
     1338                        "Left": 435, 
     1339                        "Width": 75, 
     1340                        "Height": 20  
     1341                    }, 
     1342                    "Command": {  
     1343                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     1344                        "Action": "ReceiveRubicson",  
     1345                        "Parameters": [ 
     1346                            { 
     1347                                "Name": "enable", 
     1348                                "Value": "1" 
     1349                            } 
     1350                        ]  
     1351                    }  
     1352                }, 
     1353                { 
     1354                    "ControlType": "button", 
     1355                    "Label": { 
     1356                        "lang_tag": "cmd_rubicson_disable", 
     1357                        "text": "Disable" 
     1358                    }, 
     1359                    "Display": { 
     1360                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     1361                        "Variable": "RubicsonReceiving", 
     1362                        "Value": "0", 
     1363                        "Top": 295, 
     1364                        "Left": 525, 
     1365                        "Width": 75, 
     1366                        "Height": 20  
     1367                    }, 
     1368                    "Command": {  
     1369                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     1370                        "Action": "ReceiveRubicson",  
     1371                        "Parameters": [ 
     1372                            { 
     1373                                "Name": "enable", 
     1374                                "Value": "0" 
     1375                            } 
     1376                        ]  
     1377                    }  
     1378                }, 
     1379                { 
     1380                    "ControlType": "label", 
     1381                    "Label": { 
     1382                        "lang_tag": "ae_receiving", 
     1383                        "text": "AE (Blyss)" 
     1384                    }, 
     1385                    "Display": { 
     1386                        "Top": 330, 
     1387                        "Left": 325, 
     1388                        "Width": 75, 
     1389                        "Height": 20  
     1390                    } 
     1391                }, 
     1392                { 
     1393                    "ControlType": "button", 
     1394                    "Label": { 
     1395                        "lang_tag": "cmd_ae_enable", 
     1396                        "text": "Enable" 
     1397                    }, 
     1398                    "Display": { 
     1399                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     1400                        "Variable": "AEReceiving", 
     1401                        "Value": "1", 
     1402                        "Top": 325, 
     1403                        "Left": 435, 
     1404                        "Width": 75, 
     1405                        "Height": 20  
     1406                    }, 
     1407                    "Command": {  
     1408                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     1409                        "Action": "ReceiveAE",  
     1410                        "Parameters": [ 
     1411                            { 
     1412                                "Name": "enable", 
     1413                                "Value": "1" 
     1414                            } 
     1415                        ]  
     1416                    }  
     1417                }, 
     1418                { 
     1419                    "ControlType": "button", 
     1420                    "Label": { 
     1421                        "lang_tag": "cmd_ae_disable", 
     1422                        "text": "Disable" 
     1423                    }, 
     1424                    "Display": { 
     1425                        "Service": "upnp-rfxcom-com:serviceId:rfxtrx1", 
     1426                        "Variable": "AEReceiving", 
     1427                        "Value": "0", 
     1428                        "Top": 325, 
     1429                        "Left": 525, 
     1430                        "Width": 75, 
     1431                        "Height": 20  
     1432                    }, 
     1433                    "Command": {  
     1434                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     1435                        "Action": "ReceiveAE",  
     1436                        "Parameters": [ 
     1437                            { 
     1438                                "Name": "enable", 
     1439                                "Value": "0" 
     1440                            } 
     1441                        ]  
     1442                    }  
     1443                }, 
     1444                { 
    11201445                    "ControlType": "button", 
    11211446                    "Label": { 
     
    11241449                    }, 
    11251450                    "Display": { 
    1126                         "Top": 305, 
     1451                        "Top": 395, 
    11271452                        "Left": 25, 
    11281453                        "Width": 150, 
     
    11431468                    }, 
    11441469                    "Display": { 
    1145                         "Top": 300, 
     1470                        "Top": 390, 
    11461471                        "Left": 200, 
    11471472                        "Width": 225, 
     
    12481573                    "Label": { 
    12491574                        "lang_tag": "unitcode_help2", 
    1250                         "text": "Except for Chacon EMW200: 1 to 4; for Flamingo and Impuls: 1 to 64; for Phenix: 1 to 32" 
     1575                        "text": "Except for Chacon EMW200: 1 to 4; for Flamingo and Impuls: 1 to 64; for Phenix: 1 to 32; for Philips: 1 to 8" 
    12511576                    }, 
    12521577                    "Display": { 
     
    12611586                    "Label": { 
    12621587                        "lang_tag": "cmd_add_switch_x10", 
    1263                         "text": "Add Switch (X10)" 
     1588                        "text": "Add X10 Switch" 
    12641589                    }, 
    12651590                    "Display": { 
     
    12881613                    "Label": { 
    12891614                        "lang_tag": "cmd_add_switch_arc", 
    1290                         "text": "Add Switch (ARC)" 
     1615                        "text": "Add ARC Switch" 
    12911616                    }, 
    12921617                    "Display": { 
     
    13151640                    "Label": { 
    13161641                        "lang_tag": "cmd_add_switch_waveman", 
    1317                         "text": "Add Switch (Waveman)" 
     1642                        "text": "Add Waveman Switch" 
    13181643                    }, 
    13191644                    "Display": { 
     
    13421667                    "Label": { 
    13431668                        "lang_tag": "cmd_add_switch_ab400", 
    1344                         "text": "Add Switch (Flamingo)" 
     1669                        "text": "Add Flamingo Switch" 
    13451670                    }, 
    13461671                    "Display": { 
     
    13691694                    "Label": { 
    13701695                        "lang_tag": "cmd_add_switch_impuls", 
    1371                         "text": "Add Switch (Impuls)" 
     1696                        "text": "Add Impuls Switch" 
    13721697                    }, 
    13731698                    "Display": { 
     
    13961721                    "Label": { 
    13971722                        "lang_tag": "cmd_add_switch_phenix", 
    1398                         "text": "Add Switch (Phenix)" 
     1723                        "text": "Add Phenix Switch" 
    13991724                    }, 
    14001725                    "Display": { 
     
    14231748                    "Label": { 
    14241749                        "lang_tag": "cmd_add_switch_emw200", 
    1425                         "text": "Add Switch (EMW200)" 
     1750                        "text": "Add EMW200 Switch" 
    14261751                    }, 
    14271752                    "Display": { 
     
    14501775                    "Label": { 
    14511776                        "lang_tag": "cmd_add_switch_risingsun", 
    1452                         "text": "Add Switch (RisingSun)" 
     1777                        "text": "Add RisingSun Switch" 
    14531778                    }, 
    14541779                    "Display": { 
     
    14761801                    "ControlType": "button", 
    14771802                    "Label": { 
    1478                         "lang_tag": "cmd_add_harrison", 
    1479                         "text": "Add Harrison Curtain" 
     1803                        "lang_tag": "cmd_add_philips", 
     1804                        "text": "Add Philips Switch" 
    14801805                    }, 
    14811806                    "Display": { 
     
    14871812                    "Command": {  
    14881813                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
    1489                         "Action": "AddHarrisonCurtain",  
     1814                        "Action": "AddPhilipsSwitch",  
    14901815                        "Parameters": [ 
    14911816                            { 
     
    15011826                }, 
    15021827                { 
     1828                    "ControlType": "button", 
     1829                    "Label": { 
     1830                        "lang_tag": "cmd_add_harrison", 
     1831                        "text": "Add Harrison Curtain" 
     1832                    }, 
     1833                    "Display": { 
     1834                        "Top": 165, 
     1835                        "Left": 100, 
     1836                        "Width": 150, 
     1837                        "Height": 20  
     1838                    }, 
     1839                    "Command": {  
     1840                        "Service": "urn:upnp-rfxcom-com:serviceId:rfxtrx1",  
     1841                        "Action": "AddHarrisonCurtain",  
     1842                        "Parameters": [ 
     1843                            { 
     1844                                "Name": "HouseCode", 
     1845                                "ID": "HouseCode" 
     1846                            }, 
     1847                            { 
     1848                                "Name": "UnitCode", 
     1849                                "ID": "UnitCode" 
     1850                            } 
     1851                        ]  
     1852                    } 
     1853                }, 
     1854                { 
    15031855                    "ControlType": "label", 
    15041856                    "Label": { 
     
    15071859                    }, 
    15081860                    "Display": { 
    1509                         "Top": 170, 
     1861                        "Top": 200, 
    15101862                        "Left": 25, 
    15111863                        "Width": 75, 
     
    15171869                    "ID": "RemoteId", 
    15181870                    "Display": { 
    1519                         "Top": 165, 
     1871                        "Top": 195, 
    15201872                        "Left": 100, 
    15211873                        "Width": 60, 
     
    15301882                    }, 
    15311883                    "Display": { 
    1532                         "Top": 160, 
     1884                        "Top": 190, 
    15331885                        "Left": 180, 
    15341886                        "Width": 225, 
     
    15431895                    }, 
    15441896                    "Display": { 
    1545                         "Top": 175, 
     1897                        "Top": 205, 
    15461898                        "Left": 180, 
    15471899                        "Width": 225, 
     
    15561908                    }, 
    15571909                    "Display": { 
    1558                         "Top": 200, 
     1910                        "Top": 230, 
    15591911                        "Left": 25, 
    15601912                        "Width": 75, 
     
    15661918                    "ID": "UnitCode2", 
    15671919                    "Display": { 
    1568                         "Top": 195, 
     1920                        "Top": 225, 
    15691921                        "Left": 100, 
    15701922                        "Width": 20, 
     
    15791931                    }, 
    15801932                    "Display": { 
    1581                         "Top": 200, 
     1933                        "Top": 230, 
    15821934                        "Left": 180, 
    15831935                        "Width": 225, 
     
    15891941                    "Label": { 
    15901942                        "lang_tag": "cmd_add_switch_ac", 
    1591                         "text": "Add Switch (AC)" 
    1592                     }, 
    1593                     "Display": { 
    1594                         "Top": 225, 
     1943                        "text": "Add AC Switch" 
     1944                    }, 
     1945                    "Display": { 
     1946                        "Top": 255, 
    15951947                        "Left": 100, 
    15961948                        "Width": 150, 
     
    16161968                    "Label": { 
    16171969                        "lang_tag": "cmd_add_dimmer_ac", 
    1618                         "text": "Add Dimmer (AC)" 
    1619                     }, 
    1620                     "Display": { 
    1621                         "Top": 225, 
     1970                        "text": "Add AC Dimmer" 
     1971                    }, 
     1972                    "Display": { 
     1973                        "Top": 255, 
    16221974                        "Left": 265, 
    16231975                        "Width": 150, 
     
    16461998                    }, 
    16471999                    "Display": { 
    1648                         "Top": 225, 
     2000                        "Top": 255, 
    16492001                        "Left": 430, 
    16502002                        "Width": 150, 
     
    16702022                    "Label": { 
    16712023                        "lang_tag": "cmd_add_switch_heu", 
    1672                         "text": "Add Switch (HomeEasy EU)" 
    1673                     }, 
    1674                     "Display": { 
    1675                         "Top": 255, 
     2024                        "text": "Add HomeEasy EU Switch" 
     2025                    }, 
     2026                    "Display": { 
     2027                        "Top": 285, 
    16762028                        "Left": 100, 
    16772029                        "Width": 200, 
     
    16972049                    "Label": { 
    16982050                        "lang_tag": "cmd_add_dimmer_heu", 
    1699                         "text": "Add Dimmer (HomeEasy EU)" 
    1700                     }, 
    1701                     "Display": { 
    1702                         "Top": 255, 
     2051                        "text": "Add HomeEasy EU Dimmer" 
     2052                    }, 
     2053                    "Display": { 
     2054                        "Top": 285, 
    17032055                        "Left": 325, 
    17042056                        "Width": 200, 
     
    17242076                    "Label": { 
    17252077                        "lang_tag": "cmd_add_switch_anslut", 
    1726                         "text": "Add Switch (ANSLUT)" 
    1727                     }, 
    1728                     "Display": { 
    1729                         "Top": 285, 
     2078                        "text": "Add ANSLUT Switch" 
     2079                    }, 
     2080                    "Display": { 
     2081                        "Top": 315, 
    17302082                        "Left": 100, 
    17312083                        "Width": 150, 
     
    17512103                    "Label": { 
    17522104                        "lang_tag": "cmd_add_dimmer_anslut", 
    1753                         "text": "Add Dimmer (ANSLUT)" 
    1754                     }, 
    1755                     "Display": { 
    1756                         "Top": 285, 
     2105                        "text": "Add ANSLUT Dimmer" 
     2106                    }, 
     2107                    "Display": { 
     2108                        "Top": 315, 
    17572109                        "Left": 265, 
    17582110                        "Width": 150, 
     
    17782130                    "Label": { 
    17792131                        "lang_tag": "cmd_add_switch_lwrf", 
    1780                         "text": "Add Switch (LWRF)" 
    1781                     }, 
    1782                     "Display": { 
    1783                         "Top": 315, 
     2132                        "text": "Add LWRF Switch" 
     2133                    }, 
     2134                    "Display": { 
     2135                        "Top": 345, 
    17842136                        "Left": 100, 
    17852137                        "Width": 150, 
     
    18052157                    "Label": { 
    18062158                        "lang_tag": "cmd_add_dimmer_lwrf", 
    1807                         "text": "Add Dimmer (LWRF)" 
    1808                     }, 
    1809                     "Display": { 
    1810                         "Top": 315, 
     2159                        "text": "Add LWRF Dimmer" 
     2160                    }, 
     2161                    "Display": { 
     2162                        "Top": 345, 
    18112163                        "Left": 265, 
    18122164                        "Width": 150, 
     
    18322184                    "Label": { 
    18332185                        "lang_tag": "cmd_add_wc_lwrf", 
    1834                         "text": "Add Window Cover (LWRF)" 
    1835                     }, 
    1836                     "Display": { 
    1837                         "Top": 315, 
     2186                        "text": "Add LWRF Window Cover" 
     2187                    }, 
     2188                    "Display": { 
     2189                        "Top": 345, 
    18382190                        "Left": 430, 
    18392191                        "Width": 195, 
     
    18622214                    }, 
    18632215                    "Display": { 
    1864                         "Top": 350, 
     2216                        "Top": 380, 
    18652217                        "Left": 25, 
    18662218                        "Width": 75, 
     
    18712223                    "ControlType": "input", 
    18722224                    "ID": "SystemCode", 
    1873                     "Display": { 
    1874                         "Top": 345, 
    1875                         "Left": 100, 
    1876                         "Width": 20, 
    1877                         "Height": 20  
    1878                     } 
    1879                 }, 
    1880                 { 
    1881                     "ControlType": "label", 
    1882                     "Label": { 
    1883                         "lang_tag": "system_code_help", 
    1884                         "text": "Decimal value from 1 to 16" 
    1885                     }, 
    1886                     "Display": { 
    1887                         "Top": 350, 
    1888                         "Left": 140, 
    1889                         "Width": 225, 
    1890                         "Height": 20  
    1891                     } 
    1892                 }, 
    1893                 { 
    1894                     "ControlType": "label", 
    1895                     "Label": { 
    1896                         "lang_tag": "channel", 
    1897                         "text": "Channel" 
    1898                     }, 
    1899                     "Display": { 
    1900                         "Top": 380, 
    1901                         "Left": 25, 
    1902                         "Width": 75, 
    1903                         "Height": 20  
    1904                     } 
    1905                 }, 
    1906                 { 
    1907                     "ControlType": "input", 
    1908                     "ID": "Channel", 
    19092225                    "Display": { 
    19102226                        "Top": 375, 
     
    19172233                    "ControlType": "label", 
    19182234                    "Label": { 
    1919                         "lang_tag": "channel_help", 
    1920                         "text": "Decimal value from 1 to 10" 
     2235                        "lang_tag": "system_code_help", 
     2236                        "text": "Decimal value from 1 to 16" 
    19212237                    }, 
    19222238                    "Display": { 
     
    19282244                }, 
    19292245                { 
     2246                    "ControlType": "label", 
     2247                    "Label": { 
     2248                        "lang_tag": "channel", 
     2249                        "text": "Channel" 
     2250                    }, 
     2251                    "Display": { 
     2252                        "Top": 410, 
     2253                        "Left": 25, 
     2254                        "Width": 75, 
     2255                        "Height": 20  
     2256                    } 
     2257                }, 
     2258                { 
     2259                    "ControlType": "input", 
     2260                    "ID": "Channel", 
     2261                    "Display": { 
     2262                        "Top": 405, 
     2263                        "Left": 100, 
     2264                        "Width": 20, 
     2265                        "Height": 20  
     2266                    } 
     2267                }, 
     2268                { 
     2269                    "ControlType": "label", 
     2270                    "Label": { 
     2271                        "lang_tag": "channel_help", 
     2272                        "text": "Decimal value from 1 to 10" 
     2273                    }, 
     2274                    "Display": { 
     2275                        "Top": 410, 
     2276                        "Left": 140, 
     2277                        "Width": 225, 
     2278                        "Height": 20  
     2279                    } 
     2280                }, 
     2281                { 
    19302282                    "ControlType": "button", 
    19312283                    "Label": { 
    19322284                        "lang_tag": "cmd_add_switch_koppla", 
    1933                         "text": "Add Switch (Koppla)" 
    1934                     }, 
    1935                     "Display": { 
    1936                         "Top": 415, 
     2285                        "text": "Add Koppla Switch" 
     2286                    }, 
     2287                    "Display": { 
     2288                        "Top": 445, 
    19372289                        "Left": 100, 
    19382290                        "Width": 150, 
     
    19582310                    "Label": { 
    19592311                        "lang_tag": "cmd_add_dimmer_koppla", 
    1960                         "text": "Add Dimmer (Koppla)" 
    1961                     }, 
    1962                     "Display": { 
    1963                         "Top": 415, 
     2312                        "text": "Add Koppla Dimmer" 
     2313                    }, 
     2314                    "Display": { 
     2315                        "Top": 445, 
    19642316                        "Left": 265, 
    19652317                        "Width": 150, 
Note: See TracChangeset for help on using the changeset viewer.