Difference between revisions of "Lighting Plugin"
(New page: Category:Lighting Category:LinuxMCE_Plugins == Description == == How to use Climate devices in Orbiter ==) |
Wierdbeard65 (Talk | contribs) m |
||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
+ | {{versioninfo}} | ||
[[Category:Lighting]] | [[Category:Lighting]] | ||
[[Category:LinuxMCE_Plugins]] | [[Category:LinuxMCE_Plugins]] | ||
Line 4: | Line 5: | ||
== Description == | == Description == | ||
− | == How to use | + | Lighting plugin takes care of lighting devices. Handles commands, events and sets according device states. It also gives content to Orbiter plugin when it renders Lighting devices on Orbiter's floorplans. Although, in 710 no info is displayed beside Lighting devices on floorplan - have yet to discover what is the cause.... |
+ | |||
+ | == Important Code snippets == | ||
+ | |||
+ | |||
+ | === Lighting_Plugin::GetFloorplanDeviceInfo === | ||
+ | This method determines what group of commands will be shown on right column beside floorplan. In the last if, it also determines what will be displayed on floorplan (OSD string is the content that will be displayed on floorplan)... It also determines the color of object on floorplan. But since state of lighting device is something like XX/NN) where : | ||
+ | #XX means ON or OFF state of device | ||
+ | #NN means Level (0 for OFF, up to 100 for ON) | ||
+ | |||
+ | It seems that OSD is set to show all state info on floorplan. Don't know why this isn't so. Anyway, it can also be seen that all lights have dimmable controls, while if device is in Lighting Category and not one of predefined light types, then it gets only On/Off controls on Orbiter. | ||
+ | |||
+ | IMHO such behaviour should be determined on base of device template, not object type. In such situation, dimmable controls are also displayed for on/off light switches, which is not correct (although we probably got used to that). But this clearly explains that you get On/Off floorplan controls for instance for brightness sensor. | ||
+ | |||
+ | I just wonder what is the correct path out of this inconsistency. Is it adding new floorplan types for on/off lights or determine command groups by device template and not floorplan type... ??? | ||
+ | |||
+ | |||
+ | Code of highlighted method: | ||
+ | |||
+ | <pre> | ||
+ | void Lighting_Plugin::GetFloorplanDeviceInfo(DeviceData_Router *pDeviceData_Router,EntertainArea *pEntertainArea,int iFloorplanObjectType,int &iPK_FloorplanObjectType_Color,int &Color,string &sDescription,string &OSD,int &PK_DesignObj_Toolbar) | ||
+ | { | ||
+ | switch(iFloorplanObjectType) | ||
+ | { | ||
+ | case FLOORPLANOBJECTTYPE_LIGHT_CEILING_LIGHT_CONST: | ||
+ | case FLOORPLANOBJECTTYPE_LIGHT_TABLE_LAMP_CONST: | ||
+ | case FLOORPLANOBJECTTYPE_LIGHT_WALL_SCONCE_CONST: | ||
+ | case FLOORPLANOBJECTTYPE_LIGHT_FLOOR_LAMP_CONST: | ||
+ | case FLOORPLANOBJECTTYPE_LIGHT_CHANDALIER_CONST: | ||
+ | case FLOORPLANOBJECTTYPE_LIGHT_PICTURE_LIGHT_CONST: | ||
+ | case FLOORPLANOBJECTTYPE_LIGHT_ACCENT_LIGHT_CONST: | ||
+ | OSD = pDeviceData_Router->m_sState_get(); | ||
+ | if(OSD.find("OFF") != string::npos) | ||
+ | iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_OFF_CONST; | ||
+ | else | ||
+ | iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_ON_CONST; | ||
+ | |||
+ | PK_DesignObj_Toolbar=DESIGNOBJ_grpLightControls_CONST; | ||
+ | break; | ||
+ | default: | ||
+ | OSD = pDeviceData_Router->m_sState_get(); | ||
+ | if(OSD.find("OFF") != string::npos) | ||
+ | iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_OFF_CONST; | ||
+ | else | ||
+ | iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_ON_CONST; | ||
+ | |||
+ | PK_DesignObj_Toolbar=DESIGNOBJ_grpLightControlsOnOff_CONST; | ||
+ | break; | ||
+ | }; | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | === Lighting_Plugin:: Commands and Events === | ||
+ | |||
+ | This one processes received messages/events. It can beclearly seen that currently following commands : | ||
+ | <pre> | ||
+ | if( pMessage->m_dwID==COMMAND_Set_Level_CONST ) | ||
+ | if( pMessage->m_dwID==COMMAND_Generic_On_CONST ) | ||
+ | else if( pMessage->m_dwID==COMMAND_Generic_Off_CONST ) | ||
+ | </pre> | ||
+ | and events | ||
+ | <pre> | ||
+ | if( pMessage->m_dwID == EVENT_Device_OnOff_CONST ) | ||
+ | else if (pMessage->m_dwID == EVENT_State_Changed_CONST) | ||
+ | Follow me events | ||
+ | Get_Video_Frame (probably cause of automatic lighting on cameras) | ||
+ | </pre> | ||
+ | are processed. | ||
+ | |||
+ | |||
+ | |||
+ | == How to use Lighting devices in Orbiter == | ||
+ | |||
+ | == Potential problems with current content of Lighting Plugin == | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ''''My personal comment(Bulek): | ||
+ | |||
+ | *''Inconsistency of group commands with device template : | ||
+ | Either group of commands should be determined by device template or we should have separate floorplan objects for separate command groups. Don't know which one or third path is correct in here. Any opinions ? | ||
+ | |||
+ | |||
+ | *''why is not state info actually drawn on floorplans ? it seems that OSD is properly set up - the cause must be somewhere else... I guess similar problem is with Blinds, Drapes and Shutter devices... | ||
+ | |||
+ | '''My plans: | ||
+ | |||
+ | *''I plan to correct that behaviour, if leading developers confirm the right way to do it. | ||
+ | |||
+ | *''I also plan to support use of yet unsupported color gray (if light is dimmed) like: | ||
+ | On LIGHT_CEILING_LIGHT_ON -256 yellow | ||
+ | Off LIGHT_CEILING_LIGHT_OFF -16777216 black | ||
+ | Dim LIGHT_CEILING_LIGHT_DIM -4144960 bright gray | ||
+ | Same goes for : | ||
+ | LIGHT_TABLE_LAMP,LIGHT_WALL_SCONCE,LIGHT_FLOOR_LAMP,LIGHT_CHANDALIER,LIGHT_PICTURE_LIGHT,LIGHT_ACCENT_LIGHT | ||
+ | |||
+ | |||
+ | [[User:Bulek|Bulek]] 15:37, 2 December 2008 (CET) |
Latest revision as of 07:24, 3 May 2010
Version | Status | Date Updated | Updated By |
---|---|---|---|
710 | Unknown | N/A | N/A |
810 | Unknown | N/A | N/A |
1004 | Unknown | N/A | N/A |
1204 | Unknown | N/A | N/A |
1404 | Unknown | N/A | N/A |
Usage Information |
Contents
Description
Lighting plugin takes care of lighting devices. Handles commands, events and sets according device states. It also gives content to Orbiter plugin when it renders Lighting devices on Orbiter's floorplans. Although, in 710 no info is displayed beside Lighting devices on floorplan - have yet to discover what is the cause....
Important Code snippets
Lighting_Plugin::GetFloorplanDeviceInfo
This method determines what group of commands will be shown on right column beside floorplan. In the last if, it also determines what will be displayed on floorplan (OSD string is the content that will be displayed on floorplan)... It also determines the color of object on floorplan. But since state of lighting device is something like XX/NN) where :
- XX means ON or OFF state of device
- NN means Level (0 for OFF, up to 100 for ON)
It seems that OSD is set to show all state info on floorplan. Don't know why this isn't so. Anyway, it can also be seen that all lights have dimmable controls, while if device is in Lighting Category and not one of predefined light types, then it gets only On/Off controls on Orbiter.
IMHO such behaviour should be determined on base of device template, not object type. In such situation, dimmable controls are also displayed for on/off light switches, which is not correct (although we probably got used to that). But this clearly explains that you get On/Off floorplan controls for instance for brightness sensor.
I just wonder what is the correct path out of this inconsistency. Is it adding new floorplan types for on/off lights or determine command groups by device template and not floorplan type... ???
Code of highlighted method:
void Lighting_Plugin::GetFloorplanDeviceInfo(DeviceData_Router *pDeviceData_Router,EntertainArea *pEntertainArea,int iFloorplanObjectType,int &iPK_FloorplanObjectType_Color,int &Color,string &sDescription,string &OSD,int &PK_DesignObj_Toolbar) { switch(iFloorplanObjectType) { case FLOORPLANOBJECTTYPE_LIGHT_CEILING_LIGHT_CONST: case FLOORPLANOBJECTTYPE_LIGHT_TABLE_LAMP_CONST: case FLOORPLANOBJECTTYPE_LIGHT_WALL_SCONCE_CONST: case FLOORPLANOBJECTTYPE_LIGHT_FLOOR_LAMP_CONST: case FLOORPLANOBJECTTYPE_LIGHT_CHANDALIER_CONST: case FLOORPLANOBJECTTYPE_LIGHT_PICTURE_LIGHT_CONST: case FLOORPLANOBJECTTYPE_LIGHT_ACCENT_LIGHT_CONST: OSD = pDeviceData_Router->m_sState_get(); if(OSD.find("OFF") != string::npos) iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_OFF_CONST; else iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_ON_CONST; PK_DesignObj_Toolbar=DESIGNOBJ_grpLightControls_CONST; break; default: OSD = pDeviceData_Router->m_sState_get(); if(OSD.find("OFF") != string::npos) iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_OFF_CONST; else iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_LIGHT_CEILING_LIGHT_ON_CONST; PK_DesignObj_Toolbar=DESIGNOBJ_grpLightControlsOnOff_CONST; break; }; }
Lighting_Plugin:: Commands and Events
This one processes received messages/events. It can beclearly seen that currently following commands :
if( pMessage->m_dwID==COMMAND_Set_Level_CONST ) if( pMessage->m_dwID==COMMAND_Generic_On_CONST ) else if( pMessage->m_dwID==COMMAND_Generic_Off_CONST )
and events
if( pMessage->m_dwID == EVENT_Device_OnOff_CONST ) else if (pMessage->m_dwID == EVENT_State_Changed_CONST) Follow me events Get_Video_Frame (probably cause of automatic lighting on cameras)
are processed.
How to use Lighting devices in Orbiter
Potential problems with current content of Lighting Plugin
'My personal comment(Bulek):
- Inconsistency of group commands with device template :
Either group of commands should be determined by device template or we should have separate floorplan objects for separate command groups. Don't know which one or third path is correct in here. Any opinions ?
- why is not state info actually drawn on floorplans ? it seems that OSD is properly set up - the cause must be somewhere else... I guess similar problem is with Blinds, Drapes and Shutter devices...
My plans:
- I plan to correct that behaviour, if leading developers confirm the right way to do it.
- I also plan to support use of yet unsupported color gray (if light is dimmed) like:
On LIGHT_CEILING_LIGHT_ON -256 yellow Off LIGHT_CEILING_LIGHT_OFF -16777216 black Dim LIGHT_CEILING_LIGHT_DIM -4144960 bright gray Same goes for : LIGHT_TABLE_LAMP,LIGHT_WALL_SCONCE,LIGHT_FLOOR_LAMP,LIGHT_CHANDALIER,LIGHT_PICTURE_LIGHT,LIGHT_ACCENT_LIGHT
Bulek 15:37, 2 December 2008 (CET)