@@ -113,6 +113,8 @@ def __init__(
113
113
self ._aiohttp_session : aiohttp .ClientSession = aiohttp .ClientSession (timeout = self ._timeout ,
114
114
connector = aiohttp .TCPConnector (verify_ssl = False ))
115
115
116
+ self ._api_version_getrec : int = 0
117
+
116
118
self .refresh_base_url ()
117
119
118
120
def enable_https (self , enable : bool ):
@@ -300,6 +302,10 @@ def session_active(self):
300
302
self ._lease_time = None
301
303
return False
302
304
305
+ @property
306
+ def api_version_getrec (self ):
307
+ return self ._api_version_getrec
308
+
303
309
def clear_token (self ):
304
310
"""Initialize the token and lease time."""
305
311
self ._token = None
@@ -537,6 +543,8 @@ def map_json_response(self, json_data): # pylint: disable=too-many-branches
537
543
538
544
push_data = None
539
545
pushv20_data = None
546
+ rec_data = None
547
+ recv20_data = None
540
548
541
549
for data in json_data :
542
550
try :
@@ -610,15 +618,19 @@ def map_json_response(self, json_data): # pylint: disable=too-many-branches
610
618
self ._ir_state = data ["value" ]["IrLights" ]["state" ] == "Auto"
611
619
612
620
elif data ["cmd" ] == "GetRec" :
613
- self ._recording_settings = data
614
- self ._recording_state = (
615
- data ["value" ]["Rec" ]["schedule" ]["enable" ] == 1
616
- )
621
+ if self ._api_version_getrec <= 1 :
622
+ self ._api_version_getrec = 1
623
+ self ._recording_settings = data
624
+ self ._recording_state = (
625
+ data ["value" ]["Rec" ]["schedule" ]["enable" ] == 1
626
+ )
617
627
elif data ["cmd" ] == "GetRecV20" :
618
- self ._recording_settings = data
619
- self ._recording_state = (
620
- data ["value" ]["Rec" ]["enable" ] == 1
621
- )
628
+ if self ._api_version_getrec <= 20 :
629
+ self ._api_version_getrec = 20
630
+ self ._recording_settings = data
631
+ self ._recording_state = (
632
+ data ["value" ]["Rec" ]["enable" ] == 1
633
+ )
622
634
elif data ["cmd" ] == "GetPtzPreset" :
623
635
self ._ptz_presets_settings = data
624
636
for preset in data ["value" ]["PtzPreset" ]:
@@ -883,11 +895,12 @@ async def set_recording(self, enable):
883
895
else :
884
896
new_value = 0
885
897
886
- if self ._recording_settings [ "value" ][ "Rec" ]. get ( "enable" ) is not None :
898
+ if self ._api_version_getrec <= 1 :
887
899
body = [
888
900
{"cmd" : "SetRecV20" , "action" : 0 , "param" : self ._recording_settings ["value" ]}
889
901
]
890
902
body [0 ]["param" ]["Rec" ]["enable" ] = new_value
903
+
891
904
else :
892
905
body = [
893
906
{"cmd" : "SetRec" , "action" : 0 , "param" : self ._recording_settings ["value" ]}
0 commit comments