def get_changed_devices(self, timestamp):
if timestamp is None:<EOL><INDENT>payload = {}<EOL><DEDENT>else:<EOL><INDENT>payload = {<EOL>'<STR_LIT>': SUBSCRIPTION_WAIT,<EOL>'<STR_LIT>': SUBSCRIPTION_MIN_WAIT<EOL>}<EOL>payload.update(timestamp)<EOL><DEDENT>payload.update({<EOL>'<STR_LIT:id>': '<STR_LIT>',<EOL>})<EOL>logger.debug("<STR_LIT>", str(payload))<EOL>r = self.data_request(payload, TIMEOUT*<NUM_LIT:2>)<EOL>r.raise_for_status()<EOL>if r.text == "<STR_LIT>":<EOL><INDENT>raise PyveraError("<STR_LIT>")<EOL><DEDENT>try:<EOL><INDENT>result = r.json()<EOL><DEDENT>except ValueError as ex:<EOL><INDENT>raise PyveraError("<STR_LIT>" + str(ex))<EOL><DEDENT>if not ( type(result) is dict<EOL>and '<STR_LIT>' in result and '<STR_LIT>' in result ):<EOL><INDENT>raise PyveraError("<STR_LIT>")<EOL><DEDENT>device_data = result.get('<STR_LIT>')<EOL>timestamp = {<EOL>'<STR_LIT>': result.get('<STR_LIT>'),<EOL>'<STR_LIT>': result.get('<STR_LIT>')<EOL>}<EOL>return [device_data, timestamp]<EOL>
Get data since last timestamp.

        This is done via a blocking call, pass NONE for initial state.