def wait_for_resource_value_changes(self, wait: int=10):
        """
        Long polling for changes and return a dictionary with resource:value
        for changes
        """
        changes = {}
        payload = """<waitForResourceValueChanges1
                     xmlns=\"utcs\">{timeout}</waitForResourceValueChanges1>
                  """.format(timeout=wait)
        xdoc = self.connection.soap_action('/ws/ResourceInteractionService',
                                           'getResourceValue', payload)
        if not xdoc:
            return False
        result = xdoc.findall(
            './SOAP-ENV:Body/ns1:waitForResourceValueChanges2/ns1:arrayItem',
            IHCSoapClient.ihcns)
        for item in result:
            ihcid = item.find('ns1:resourceID', IHCSoapClient.ihcns)
            if ihcid is None:
                continue
            bvalue = item.find('./ns1:value/ns2:value', IHCSoapClient.ihcns)
            if bvalue is not None:
                changes[int(ihcid.text)] = bvalue.text == 'true'
                continue
            ivalue = item.find('./ns1:value/ns3:integer', IHCSoapClient.ihcns)
            if ivalue is not None:
                changes[int(ihcid.text)] = int(ivalue.text)
            fvalue = item.find('./ns1:value/ns2:floatingPointValue',
                               IHCSoapClient.ihcns)
            if fvalue is not None:
                changes[int(ihcid.text)] = float(fvalue.text)
                continue
            
            enumName = item.find('./ns1:value/ns2:enumName',
                               IHCSoapClient.ihcns)
            if enumName is not None:
                changes[int(ihcid.text)] = enumName.text
        return changes
def wait_for_resource_value_changes ( self , wait : int = 10 ) : changes = { } payload = """<waitForResourceValueChanges1
                     xmlns=\"utcs\">{timeout}</waitForResourceValueChanges1>
                  """ . format ( timeout = wait ) xdoc = self . connection . soap_action ( '/ws/ResourceInteractionService' , 'getResourceValue' , payload ) if not xdoc : return False result = xdoc . findall ( './SOAP-ENV:Body/ns1:waitForResourceValueChanges2/ns1:arrayItem' , IHCSoapClient . ihcns ) for item in result : ihcid = item . find ( 'ns1:resourceID' , IHCSoapClient . ihcns ) if ihcid is None : continue bvalue = item . find ( './ns1:value/ns2:value' , IHCSoapClient . ihcns ) if bvalue is not None : changes [ int ( ihcid . text ) ] = bvalue . text == 'true' continue ivalue = item . find ( './ns1:value/ns3:integer' , IHCSoapClient . ihcns ) if ivalue is not None : changes [ int ( ihcid . text ) ] = int ( ivalue . text ) fvalue = item . find ( './ns1:value/ns2:floatingPointValue' , IHCSoapClient . ihcns ) if fvalue is not None : changes [ int ( ihcid . text ) ] = float ( fvalue . text ) continue enumName = item . find ( './ns1:value/ns2:enumName' , IHCSoapClient . ihcns ) if enumName is not None : changes [ int ( ihcid . text ) ] = enumName . text return changes
Long polling for changes and return a dictionary with resource:value
        for changes