Example #1
0
    def status( self, medianame='name-required', status='item-required' ):
        """
        Return status of a media server
        """
        result = ClientProfiles.makeStandardResponse( cherrypy.request )

        self.__log.debug( 'MediaAccess.status %s, %s ' % (medianame, status) )
        result['stserr'] = None
        result['mediaName'] = medianame

        try :
            if ( status == 'vol' ):
                xmlStr = MediaSet.volume( self, medianame )
            elif ( status == 'playlist' ):
                 xmlStr = MediaSet.playlist( self, medianame )
            elif ( status == 'playlists' ):
                xmlStr = MediaSet.playlists( self, medianame )
            elif ( status == 'position' ):
                xmlStr = MediaSet.status( self, medianame )
            else:
                xmlStr = MediaSet.status( self, medianame )
            self.__log.debug( '%s:%s - xmlString %s' % (medianame, status, xmlStr) )
            xml = parseXmlString( xmlStr )

            if ( status == 'position' ):
                result['position'] = getNamedNodeText( xml, 'position' )
                result['duration'] = getNamedNodeText( xml, 'duration' )

            elif ( status == 'vol' ):
                result['vol'] = getNamedNodeText( xml, status )

            elif ( status == 'playlist' ):
                result['playlist'] = getElemXml( getNamedElem( xml, status ) )

            elif ( status == 'playlists' ):
                result['playlists'] = getElemXml( getNamedElem( xml, status ) )

            elif ( status == 'track' ):
                result['track'] = getNamedNodeText( xml, status )

            else:
                result[str(status)] = getNamedNodeText( xml, status )
        except Exception, ex :
            self.__log.exception( 'Error %s, %s ' % (medianame, status) )
            result['stserr'] = "unknown"
Example #2
0
 def configure( self, xml ):
     # read eventype
     # read event source
     # read parameters
     self._type = getAttrText( xml, 'type' )
     self._source = getAttrText( xml, 'source' )
     self._params = None
     paramElem = getNamedElem(xml, "params")
     if paramElem and paramElem.childNodes:
         self._params = dict()
         # There are parameters.
         for param in paramElem.childNodes:
             if param.nodeType == param.ELEMENT_NODE:
                 isList = getAttrText(param, "type") == "list"
                 txt = getElemText(param)
                 # for each element in param create param entry
                 if isList:
                     self._params[param.tagName] = txt.split(',')
                 else:
                     self._params[param.tagName] = txt
         if len(self._params) == 0:
             self._params = None
Example #3
0
    def makeConfigCommands(self,dom,override):
        """
        Convert the supplied DOM object into a list of webbrick
        configuration commands.  The override parameter is a dictionary
        of values that can be used to override values in the supplied
        DOM when generating the configuration commands; e.g.
            "password" - overrides password used with "LG" command
            "IP"       - overrides IP{ addresss et with "IA" command
        """
        p    = override.get("password") or "password"
        cmds = ["LG"+p,"SS1"]

        template = (
            # elem1 elem2 cmd   override    transform
            ("NN",  None, "NN", "NodeName", getNameText),   # Node name
            ("SN",  None, "SN", "NodeNum",  getElemText),   # Node number

            ("NOs", "NO", "NO", None,       idNameAttr),    # Name Digital Output
            ("CDs", "CD", "ND", None,       idNameAttr),    # Name Digital Input
            ("CDs", "CD", "CD", None,       idTrigger),     # Configure Digital Input
            #Monitors are now DIs 8-11
            #("NMs", "NM", "NM", None,       idNameAttr),    # Name Monitor Input

            ("NAs", "NA", "NA", None,       idNameAttr),    # Name Analogue Output
            ("CIs", "CI", "NI", None,       idNameAttr),    # Name Analogue Input
            ("CIs", "CI", "CI", None,       idAnalogLo),    # Configure Analogue Input Low threshold
            ("CIs", "CI", "CI", None,       idAnalogHi),    # Configure Analogue Input High threshold
            ("CTs", "CT", "NT", None,       idNameAttr),    # Name Temperature Sensor
            ("CTs", "CT", "CT", None,       idTempLo),      # Configure Temperature Sensor Low threshold
            ("CTs", "CT", "CT", None,       idTempHi),      # Configure Temperature Sensor High threshold
            ("SRs", "SR", "SR", None,       idValAttr),     # Rotary encoder step
            ("IR",  None, "IR", None,       maskNF(0x40)),  # Enable infrared receive?
            ("IR",  None, "IT", None,       maskNF(0x20)),  # Enable infrared transmit?
            ("IR",  None, "IA", None,       maskInt(0x1F)), # Infrared receiving address
            ("SF",  None, "SF", None,       getElemText),   # Fade rate
            ("MM",  None, "SM", None,       mimicLoHiFade), # Set mimic hi/lo/faderate
            ("MM",  None, "CM", None,       mimicAChan(0)), # Configure mimic channel for analog out 0
            ("MM",  None, "CM", None,       mimicAChan(1)), # Configure mimic channel for analog out 1
            ("MM",  None, "CM", None,       mimicAChan(2)), # Configure mimic channel for analog out 2
            ("MM",  None, "CM", None,       mimicAChan(3)), # Configure mimic channel for analog out 3
            ("MM",  None, "CM", None,       mimicDChan(0)), # Configure mimic channel for digital out 0
            ("MM",  None, "CM", None,       mimicDChan(1)), # Configure mimic channel for digital out 1
            ("MM",  None, "CM", None,       mimicDChan(2)), # Configure mimic channel for digital out 2
            ("MM",  None, "CM", None,       mimicDChan(3)), # Configure mimic channel for digital out 3
            ("MM",  None, "CM", None,       mimicDChan(4)), # Configure mimic channel for digital out 4
            ("MM",  None, "CM", None,       mimicDChan(5)), # Configure mimic channel for digital out 5
            ("MM",  None, "CM", None,       mimicDChan(6)), # Configure mimic channel for digital out 6
            ("MM",  None, "CM", None,       mimicDChan(7)), # Configure mimic channel for digital out 7
            ("CWs", "CW", "CW", None,       idElemText),    # Configure Dwell
            ("CSs", "CS", "CS", None,       idElemText),    # Configure Preset Point
            ("CEs", "CE", "CE", None,       idSchedule),    # Configure Schedule Event
            ("CCs", "CC", "CC", None,       idScene)        # Configure Scene
            )

        # for webbrick 6.5, when triggers changed.
        template6_5 = (
            # elem1 elem2 cmd   override    transform
            ("NN",  None, "NN", "NodeName", getNameText),   # Node name
            ("SN",  None, "SN", "NodeNum",  getElemText),   # Node number

            ("NOs", "NO", "NO", None,       idNameAttr),    # Name Digital Output
            ("CDs", "CD", "ND", None,       idNameAttr),    # Name Digital Input
            ("CDs", "CD", "CD", None,       idTrigger65),   # Configure Digital Input
            #Monitors are now DIs 8-11
            #("NMs", "NM", "NM", None,      idNameAttr),    # Name Monitor Input

            ("NAs", "NA", "NA", None,       idNameAttr),    # Name Analogue Output
            ("CIs", "CI", "NI", None,       idNameAttr),    # Name Analogue Input
            ("CIs", "CI", "CI", None,       idAnalogLo65),  # Configure Analogue Input Low threshold
            ("CIs", "CI", "CI", None,       idAnalogHi65),  # Configure Analogue Input High threshold
            ("CTs", "CT", "NT", None,       idNameAttr),    # Name Temperature Sensor
            ("CTs", "CT", "CT", None,       idTempLo65),    # Configure Temperature Sensor Low threshold
            ("CTs", "CT", "CT", None,       idTempHi65),    # Configure Temperature Sensor High threshold
            ("SRs", "SR", "SR", None,       idValAttr),     # Rotary encoder step
            ("SE",  None, "CR", None,       serialConfig),  # Serial config
            ("IR",  None, "IR", None,       maskNF(0x40)),  # Enable infrared receive?
            ("IR",  None, "IT", None,       maskNF(0x20)),  # Enable infrared transmit?
            ("IR",  None, "IA", None,       maskInt(0x1F)), # Infrared receiving address
            ("SF",  None, "SF", None,       getElemText),   # Fade rate
            ("MM",  None, "SM", None,       mimicLoHiFade), # Set mimic hi/lo/faderate
            ("MM",  None, "CM", None,       mimicAChan(0)), # Configure mimic channel for analog out 0
            ("MM",  None, "CM", None,       mimicAChan(1)), # Configure mimic channel for analog out 1
            ("MM",  None, "CM", None,       mimicAChan(2)), # Configure mimic channel for analog out 2
            ("MM",  None, "CM", None,       mimicAChan(3)), # Configure mimic channel for analog out 3
            ("MM",  None, "CM", None,       mimicDChan(0)), # Configure mimic channel for digital out 0
            ("MM",  None, "CM", None,       mimicDChan(1)), # Configure mimic channel for digital out 1
            ("MM",  None, "CM", None,       mimicDChan(2)), # Configure mimic channel for digital out 2
            ("MM",  None, "CM", None,       mimicDChan(3)), # Configure mimic channel for digital out 3
            ("MM",  None, "CM", None,       mimicDChan(4)), # Configure mimic channel for digital out 4
            ("MM",  None, "CM", None,       mimicDChan(5)), # Configure mimic channel for digital out 5
            ("MM",  None, "CM", None,       mimicDChan(6)), # Configure mimic channel for digital out 6
            ("MM",  None, "CM", None,       mimicDChan(7)), # Configure mimic channel for digital out 7
            ("CWs", "CW", "CW", None,       idElemText),    # Configure Dwell
            ("CSs", "CS", "CS", None,       idElemText),    # Configure Preset Point
            ("CEs", "CE", "CE", None,       idSchedule65),    # Configure Schedule Event
            ("CCs", "CC", "CC", None,       idScene)        # Configure Scene
            )

        ver_template = template
        # is this a version 6.5 webbrick, version is on root level 
        ver_str = getAttrText( getNamedElem(dom,"WebbrickConfig") , "Ver")
        if ver_str and ver_str > "6.4.1904":
            ver_template = template6_5

        for (en1,en2,cn,ov,transform) in ver_template:
            # Construct command, allowing for supplied override
            def mkCmd(cn,ov,transform,e):
                Trace("Generate command %s for element %s"%(cn,getElemXml(e)), "WebBrickConfig.WebBrickConfig")
                try:
                    val = (ov and override.get(ov)) or transform(e)
                except Exception, exc:
                    raise WebBrickConfigException(command=cn, element=getElemXml(e), cause=str(exc))
                return val and cn+val
            # Select top-level element
            Trace("Processing config element "+en1, "WebBrickConfig.WebBrickConfig")
            try:
                elms = dom.getElementsByTagName(en1)
                elm1 = elms and elms[0]
            except Exception, e:
                raise WebBrickConfigException(command=cn, cause=str(e))