diff --git a/fhem/FHEM/49_Arlo.pm b/fhem/FHEM/49_Arlo.pm index e942a919a..d361a42f2 100644 --- a/fhem/FHEM/49_Arlo.pm +++ b/fhem/FHEM/49_Arlo.pm @@ -423,7 +423,7 @@ sub Arlo_PrepareRequest($$;$$$$) { $headers = $headers."Authorization: $token\r\n" if (defined($token)); $headers = $headers."Cookie: $cookies\r\n" if (defined($cookies)); $headers = $headers."Content-Type: application/json; charset=utf-8\r\nOrigin: https://myapi.arlo.com\r\nReferer: https://myapi.arlo.com\r\nschemaVersion: 1\r\n"; - $headers = $headers."User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)"; + $headers = $headers."User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.58"; $headers = $headers."\r\n".$additionalHeader if (defined($additionalHeader)); Log3 $name, 5, "Arlo header: $headers"; @@ -1230,7 +1230,7 @@ sub Arlo_EventQueue($) { my $headers = {'Auth-Version' => 2, Authorization => $token, Accept => 'text/event-stream', 'Access-Control-Request-Headers' => 'auth-version,authorization', 'Access-Control-Request-Method' => 'GET', Cookie => $cookies, Origin => 'https://my.arlo.com', Referer => 'https://myapi.arlo.com', - 'User-Agent' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)' }; + 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.58' }; my $con = {url => 'https://myapi.arlo.com/hmsweb/client/subscribe', method => "GET", header => $headers, keepalive => 1, host => 'myapi.arlo.com', httpversion => '1.1', loglevel => 4}; my $err = HttpUtils_Connect($con); if ($err) { @@ -1386,6 +1386,12 @@ sub Arlo_ProcessEvent($$) { my $activeMode = $props->{activeMode}; $activeMode = $props->{active} if (!defined($activeMode)); Arlo_SetModeReading($basestationId, $activeMode); + } elsif ($resource =~ /states\z/) { + my $states = $event->{states}; + if (defined($states)) { + my $activeMode = $states->{activeMode}; + Arlo_SetModeReading($basestationId, $activeMode) if (defined($activeMode)); + } } elsif ($resource eq 'cameras') { my @props = @{$event->{properties}}; for my $prop (@props) { diff --git a/fhem/contrib/49_Arlo.py b/fhem/contrib/49_Arlo.py index 61e8bdcd9..fae3d502b 100644 --- a/fhem/contrib/49_Arlo.py +++ b/fhem/contrib/49_Arlo.py @@ -15,14 +15,16 @@ class Arlo: 'platform': 'linux', 'mobile': False } - self._session = cloudscraper.create_scraper(browser=browser) + self._session = cloudscraper.create_scraper(ecdhCurve='secp384r1') self._baseUrl = "https://ocapi-app.arlo.com/api/" self._headers = { 'Access-Control-Request-Headers': 'content-type,source,x-user-device-id,x-user-device-name,x-user-device-type', 'Access-Control-Request-Method': 'POST', + "Cache-Control": "no-cache", + "Pragma": "no-cache", "Referer": "https://my.arlo.com", - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.58', } self._session.options(self._baseUrl + "auth", headers=self._headers) @@ -30,10 +32,12 @@ class Arlo: "DNT": "1", "schemaVersion": "1", "Auth-Version": "2", + "Cache-Control": "no-cache", "Content-Type": "application/json; charset=UTF-8", "Origin": "https://my.arlo.com", + "Pragma": "no-cache", "Referer": "https://my.arlo.com/", - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.58', "Source": "arloCamWeb" } self._token = None