added motion_region

pull/106/head
Jeff Culverhouse 11 months ago
parent 9e6a22e9da
commit 445ba9610a

@ -236,22 +236,15 @@ class AmcrestAPI(object):
device = self.devices[device_id] device = self.devices[device_id]
config = device['config'] config = device['config']
# if code != 'NewFile' and code != 'InterVideoAccess':
# self.logger.info(f'Event on {device_id} - {code}: {payload}') # self.logger.info(f'Event on {device_id} - {code}: {payload}')
# VideoMotion: motion detection event
# VideoLoss: video loss detection event
# VideoBlind: video blind detection event
# AlarmLocal: alarm detection event
# StorageNotExist: storage not exist event
# StorageFailure: storage failure event
# StorageLowSpace: storage low space event
# AlarmOutput: alarm output event
# SmartMotionHuman: human detection event
# SmartMotionVehicle: vehicle detection event
if ((code == 'ProfileAlarmTransmit' and config['is_ad110']) if ((code == 'ProfileAlarmTransmit' and config['is_ad110'])
or (code == 'VideoMotion' and not config['is_ad110'])): or (code == 'VideoMotion' and not config['is_ad110'])):
motion_payload = 'on' if payload['action'] == 'Start' else 'off' motion_payload = {
'state': 'on' if payload['action'] == 'Start' else 'off',
'region': ', '.join(payload['data']['RegionName'])
}
self.events.append({ 'device_id': device_id, 'event': 'motion', 'payload': motion_payload }) self.events.append({ 'device_id': device_id, 'event': 'motion', 'payload': motion_payload })
elif code == 'CrossRegionDetection' and payload['data']['ObjectType'] == 'Human': elif code == 'CrossRegionDetection' and payload['data']['ObjectType'] == 'Human':
human_payload = 'on' if payload['action'] == 'Start' else 'off' human_payload = 'on' if payload['action'] == 'Start' else 'off'

@ -442,7 +442,7 @@ class AmcrestMqtt(object):
device_states['human'] = 'off' device_states['human'] = 'off'
components[self.get_slug(device_id, 'snapshot_camera')] = { components[self.get_slug(device_id, 'snapshot_camera')] = {
'name': 'Latest Snapshot', 'name': 'Latest snapshot',
'platform': 'camera', 'platform': 'camera',
'topic': self.get_discovery_subtopic(device_id, 'camera','snapshot'), 'topic': self.get_discovery_subtopic(device_id, 'camera','snapshot'),
'image_encoding': 'b64', 'image_encoding': 'b64',
@ -462,7 +462,7 @@ class AmcrestMqtt(object):
# copy the snapshot camera for the eventshot camera, with a couple of changes # copy the snapshot camera for the eventshot camera, with a couple of changes
components[self.get_slug(device_id, 'event_camera')] = \ components[self.get_slug(device_id, 'event_camera')] = \
components[self.get_slug(device_id, 'snapshot_camera')] | { components[self.get_slug(device_id, 'snapshot_camera')] | {
'name': 'Motion Snapshot', 'name': 'Motion snapshot',
'topic': self.get_discovery_subtopic(device_id, 'camera','eventshot'), 'topic': self.get_discovery_subtopic(device_id, 'camera','eventshot'),
'unique_id': self.get_slug(device_id, 'eventshot_camera'), 'unique_id': self.get_slug(device_id, 'eventshot_camera'),
} }
@ -501,9 +501,17 @@ class AmcrestMqtt(object):
'payload_off': 'off', 'payload_off': 'off',
'device_class': 'motion', 'device_class': 'motion',
'state_topic': self.get_discovery_topic(device_id, 'motion'), 'state_topic': self.get_discovery_topic(device_id, 'motion'),
'value_template': '{{ value_json.state }}',
'unique_id': self.get_slug(device_id, 'motion'), 'unique_id': self.get_slug(device_id, 'motion'),
} }
device_states['motion'] = 'off' components[self.get_slug(device_id, 'motion_region')] = {
'name': 'Motion region',
'platform': 'sensor',
'state_topic': self.get_discovery_topic(device_id, 'motion'),
'value_template': '{{ value_json.region }}',
'unique_id': self.get_slug(device_id, 'motion_region'),
}
device_states['motion'] = { 'state': 'off', 'region': None }
components[self.get_slug(device_id, 'version')] = { components[self.get_slug(device_id, 'version')] = {
'name': 'Version', 'name': 'Version',
@ -536,7 +544,7 @@ class AmcrestMqtt(object):
} }
components[self.get_slug(device_id, 'event')] = { components[self.get_slug(device_id, 'event')] = {
'name': 'Last Non-motion Event', 'name': 'Last event',
'platform': 'sensor', 'platform': 'sensor',
'state_topic': self.get_discovery_topic(device_id, 'event'), 'state_topic': self.get_discovery_topic(device_id, 'event'),
'unique_id': self.get_slug(device_id, 'event'), 'unique_id': self.get_slug(device_id, 'event'),
@ -545,7 +553,7 @@ class AmcrestMqtt(object):
device_states['recording'] = {} device_states['recording'] = {}
components[self.get_slug(device_id, 'storage_used_percent')] = { components[self.get_slug(device_id, 'storage_used_percent')] = {
'name': 'Storage Used %', 'name': 'Storage used %',
'platform': 'sensor', 'platform': 'sensor',
'icon': 'mdi:micro-sd', 'icon': 'mdi:micro-sd',
'unit_of_measurement': '%', 'unit_of_measurement': '%',
@ -554,7 +562,7 @@ class AmcrestMqtt(object):
'unique_id': self.get_slug(device_id, 'storage_used_percent'), 'unique_id': self.get_slug(device_id, 'storage_used_percent'),
} }
components[self.get_slug(device_id, 'storage_total')] = { components[self.get_slug(device_id, 'storage_total')] = {
'name': 'Storage Total', 'name': 'Storage total',
'platform': 'sensor', 'platform': 'sensor',
'icon': 'mdi:micro-sd', 'icon': 'mdi:micro-sd',
'unit_of_measurement': 'GB', 'unit_of_measurement': 'GB',
@ -563,7 +571,7 @@ class AmcrestMqtt(object):
'unique_id': self.get_slug(device_id, 'storage_total'), 'unique_id': self.get_slug(device_id, 'storage_total'),
} }
components[self.get_slug(device_id, 'storage_used')] = { components[self.get_slug(device_id, 'storage_used')] = {
'name': 'Storage Used', 'name': 'Storage used',
'platform': 'sensor', 'platform': 'sensor',
'icon': 'mdi:micro-sd', 'icon': 'mdi:micro-sd',
'unit_of_measurement': 'GB', 'unit_of_measurement': 'GB',

Loading…
Cancel
Save