Changeset 45
- Timestamp:
- 2012-11-02 20:18:57 (12 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/I_RFXtrx.xml ¶
r43 r45 397 397 <run>if (pluginLib ~= nil) then pluginLib.sendATICode(lul_device, lul_settings.Code or "") end</run> 398 398 </action> 399 <action> 400 <serviceId>urn:upnp-org:serviceId:HVAC_UserOperatingMode1</serviceId> 401 <name>SetModeTarget</name> 402 <run>if (pluginLib ~= nil) then pluginLib.setModeTarget(lul_device, lul_settings.NewModeTarget) end</run> 403 </action> 404 <action> 405 <serviceId>urn:micasaverde-com:serviceId:HaDevice1</serviceId> 406 <name>ToggleState</name> 407 <run>if (pluginLib ~= nil) then pluginLib.toggleState(lul_device) end</run> 408 </action> 399 409 </actionList> 400 410 </implementation> -
TabularUnified trunk/L_RFXtrx.lua ¶
r44 r45 48 48 LIGHTING_BLYSS = { 0x15, 0x0, 11, nil, "Thomson", "Blyss" }, 49 49 50 HEATER3_MERTIK1 = { 0x42, 0x0, 8, nil, "Mertik", "Mertik Maxitrol G6R-H4T1" }, 51 HEATER3_MERTIK2 = { 0x42, 0x1, 8, nil, "Mertik", "Mertik Maxitrol G6R-H4TB" }, 52 50 53 TEMP1 = { 0x50, 0x1, 8, nil, "Oregon Scientific", "THR128/138, THC138" }, 51 54 TEMP2 = { 0x50, 0x2, 8, nil, "Oregon Scientific", "THC238/268, THN132, THWR288, THRN122, THN122, AW129/131" }, … … 175 178 CMD_ATI_SCENE_ON = { "ATISceneOn", "ATI_REMOTE", "VAR_SCENE_ON" }, 176 179 CMD_ATI_SCENE_OFF = { "ATISceneOff", "ATI_REMOTE", "VAR_SCENE_OFF" }, 180 CMD_HEATER = { "Heater", "HEATER", "VAR_HEATER" }, 181 CMD_HEATER_SW = { "HeaterSwitch", "HEATER", "VAR_HEATER_SW" }, 182 CMD_HEATER_UP = { "HeaterUp", "HEATER", nil }, 183 CMD_HEATER_DOWN = { "HeaterDown", "HEATER", nil } 177 184 } 178 185 … … 213 220 VAR_SCENE_OFF = { "urn:micasaverde-com:serviceId:SceneController1", "sl_SceneDeactivated", false, false }, 214 221 VAR_EXIT_DELAY = { "urn:rfxcom-com:serviceId:SecurityRemote1", "ExitDelay", false, false }, 215 222 VAR_HEATER = { "urn:upnp-org:serviceId:HVAC_UserOperatingMode1", "ModeStatus", false, false }, 223 VAR_HEATER_SW = { "urn:upnp-org:serviceId:SwitchPower1", "Status", false, false }, 224 --VAR_HEATER_HA = { "urn:micasaverde-com:serviceId:HaDevice1", "Status", false, false }, 225 216 226 VAR_PLUGIN_VERSION = { "upnp-rfxcom-com:serviceId:rfxtrx1", "PluginVersion", false, false }, 217 227 VAR_AUTO_CREATE = { "upnp-rfxcom-com:serviceId:rfxtrx1", "AutoCreate", true, false }, … … 272 282 REMOTE = { "urn:rfxcom-com:device:X10ChaconRemote:1", "D_X10ChaconRemote1.xml", "RFX Remote ", "RC/", false, false, false }, 273 283 LWRF_REMOTE = { "urn:rfxcom-com:device:LWRFRemote:1", "D_LWRFRemote1.xml", "RFX Remote ", "RC/", false, false, false }, 274 ATI_REMOTE = { "urn:rfxcom-com:device:ATIRemote:1", "D_ATIRemote1.xml", "RFX Remote ", "RC/", false, false, false } 284 ATI_REMOTE = { "urn:rfxcom-com:device:ATIRemote:1", "D_ATIRemote1.xml", "RFX Remote ", "RC/", false, false, false }, 285 HEATER = { "urn:schemas-upnp-org:device:Heater:1", "D_Heater1.xml", "RFX Heater ", "HT/", false, false, false } 275 286 } 276 287 … … 389 400 tableMsgTypes.LIGHTING_LIGHTWARERF[4] = decodeLighting5 390 401 tableMsgTypes.LIGHTING_BLYSS[4] = decodeLighting6 402 tableMsgTypes.HEATER3_MERTIK1[4] = decodeThermostat3 403 tableMsgTypes.HEATER3_MERTIK2[4] = decodeThermostat3 391 404 tableMsgTypes.TEMP1[4] = decodeTemp 392 405 tableMsgTypes.TEMP2[4] = decodeTemp … … 683 696 then 684 697 category = 7 698 elseif ((string.len(id) == 15) and (string.sub(id, 1, 5) == "HT/HT") and (string.sub(id, 7, 7) == ".") and (string.sub(id, 9, 9) == "/")) 699 then 700 category = 8 685 701 else 686 702 log("Unexpected device id " .. id .. ". Switch Power command not sent", 2) … … 852 868 cmdCode, 0) 853 869 end 870 -- elseif (category == 8) 871 -- then 872 -- TODO: Mertik 854 873 else 855 874 log("Unimpemented lighting type " .. category .. ". Switch Power command not sent", 2) … … 1502 1521 end 1503 1522 1523 function setModeTarget(device, NewModeTarget) 1524 local id = luup.devices[device].id 1525 log("setModeTarget " .. id .. " target " .. NewModeTarget) 1526 1527 local category 1528 if ((string.len(id) == 15) and (string.sub(id, 1, 5) == "HT/HT") and (string.sub(id, 7, 7) == ".") and (string.sub(id, 9, 9) == "/")) 1529 then 1530 category = 3 1531 else 1532 log("Unexpected device id " .. id .. ". Set Mode command not sent", 2) 1533 return 1534 end 1535 1536 local type = nil 1537 local subType = nil 1538 local data = nil 1539 1540 if (category == 3) -- Mertik 1541 then 1542 type = tableMsgTypes.HEATER3_MERTIK1[1] 1543 subType = tonumber(string.sub(id, 8, 8)) 1544 local tableCmds = {} 1545 local cmdCode = nil 1546 --local currentState = luup.variable_get(tabVars.VAR_HEATER[1], tabVars.VAR_HEATER[2], device) or "Off" 1547 local currentSwState = luup.variable_get(tabVars.VAR_HEATER_SW[1], tabVars.VAR_HEATER_SW[2], device) or "0" 1548 if (NewModeTarget == "HeatOn") 1549 then 1550 if (currentSwState == "0") 1551 then 1552 cmdCode = 0x01 -- Turn on 1553 table.insert(tableCmds, { string.sub(id, 4), tableCommands.CMD_HEATER_SW[1], 1, 0 }) 1554 table.insert(tableCmds, { string.sub(id, 4), tableCommands.CMD_HEATER[1], "HeatOn", 0 }) 1555 else 1556 cmdCode = 0x04 -- Run up 1557 table.insert(tableCmds, { string.sub(id, 4), tableCommands.CMD_HEATER[1], "HeatOn", 0 }) 1558 end 1559 elseif (NewModeTarget == "Off") 1560 then 1561 if (currentSwState == "1") 1562 then 1563 cmdCode = 0x00 -- Turn off 1564 table.insert(tableCmds, { string.sub(id, 4), tableCommands.CMD_HEATER_SW[1], 0, 0 }) 1565 table.insert(tableCmds, { string.sub(id, 4), tableCommands.CMD_HEATER[1], "Off", 0 }) 1566 else 1567 cmdCode = 0x05 -- Run down 1568 table.insert(tableCmds, { string.sub(id, 4), tableCommands.CMD_HEATER[1], "Off", 0 }) 1569 end 1570 else 1571 log("setModeTarget: unexpected value for NewModeTarget parameter", 2) 1572 return 1573 end 1574 local remoteId = string.sub(id, 10, 15) 1575 data = string.char(tonumber(string.sub(remoteId, 1, 2), 16), 1576 tonumber(string.sub(remoteId, 3, 4), 16), 1577 tonumber(string.sub(remoteId, 5, 6), 16), 1578 cmdCode, 0) 1579 end 1580 1581 if (data ~= nil) 1582 then 1583 sendCommand(type, subType, data, tableCmds) 1584 end 1585 1586 end 1587 1588 function toggleState(device) 1589 local devType = string.sub(luup.devices[device].id, 1, 2) 1590 1591 -- Only implemented for Light Switches and HeaTers so far 1592 if (devType == "LS") 1593 then 1594 local curStat = luup.variable_get(tabVars.VAR_LIGHT[1], tabVars.VAR_LIGHT[2], device) or "0" 1595 local newTargetState 1596 if (curStat == "0") 1597 then 1598 newTargetState = "1" 1599 else 1600 newTargetState = "0" 1601 end 1602 switchPower(device, newTargetState) 1603 elseif (devType == "HT") 1604 then 1605 local curStat = luup.variable_get(tabVars.VAR_HEATER[1], tabVars.VAR_HEATER[2], device) or "Off" 1606 local NewModeTarget 1607 if (curStat == "Off") 1608 then 1609 NewModeTarget = "HeatOn" 1610 else 1611 NewModeTarget = "Off" 1612 end 1613 setModeTarget(device, NewModeTarget) 1614 end 1615 end 1616 1504 1617 function addX10Switch(houseCode, unitCode) 1505 1618 … … 2864 2977 return tableCmds 2865 2978 2979 end 2980 2981 function decodeThermostat3(subType, data, seqNum) 2982 2983 local altid = "HT3." .. subType .. "/" 2984 .. string.format("%02X", tonumber(string.byte(data, 1))) 2985 .. string.format("%02X", tonumber(string.byte(data, 2))) 2986 .. string.format("%02X", tonumber(string.byte(data, 3))) 2987 2988 local tableCmds = {} 2989 local cmdCode = string.byte(data, 4) 2990 2991 -- 0: "Off", 1: "On", 2: "Up", 3: "Down", 4: "Run Up/2nd Off", 5: "Run Down/2nd On", 6: "Stop" 2992 if (cmdCode == 0x00) 2993 then 2994 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER_SW[1], 0, 0 } ) 2995 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER[1], "Off", 0 } ) 2996 elseif (cmdCode == 0x01) 2997 then 2998 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER_SW[1], 1, 0 } ) 2999 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER[1], "HeatOn", 0 } ) 3000 elseif (cmdCode == 0x02) 3001 then 3002 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER_UP[1], nil, 0 } ) 3003 elseif (cmdCode == 0x03) 3004 then 3005 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER_DOWN[1], nil, 0 } ) 3006 elseif (cmdCode == 0x04) 3007 then 3008 if (subType == 0x00) 3009 then 3010 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER[1], "HeatOn", 0 } ) 3011 else 3012 --table.insert(tableCmds, { altid, tableCommands.CMD_HEATER_2NDOFF[1], 0, 0 } ) 3013 end 3014 elseif (cmdCode == 0x05) 3015 then 3016 if (subType == 0x00) 3017 then 3018 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER[1], "Off", 0 } ) 3019 else 3020 --table.insert(tableCmds, { altid, tableCommands.CMD_HEATER_2NDON[1], 0, 0 } ) 3021 end 3022 elseif (cmdCode == 0x06) and (subType == 0x00) 3023 then 3024 table.insert(tableCmds, { altid, tableCommands.CMD_HEATER[1], "Off", 0 } ) 3025 else 3026 log("Thermostat3 command not yet implemented: " .. cmdCode, 2) 3027 end 3028 3029 return tableCmds 3030 2866 3031 end 2867 3032 … … 4221 4386 local countSR = 0 4222 4387 local countRC = 0 4388 local countHT = 0 4223 4389 for i, v in ipairs(tableDevices) 4224 4390 do … … 4269 4435 then 4270 4436 countRC = countRC + 1 4437 elseif (key == "HEATER") 4438 then 4439 countHT = countHT + 1 4271 4440 end 4272 4441 end … … 4287 4456 log(" security remotes: " .. countSR) 4288 4457 log(" remote controls: " .. countRC) 4458 log(" heating devices: " .. countHT) 4289 4459 4290 4460 end
Note: See TracChangeset
for help on using the changeset viewer.