huginn_renault_ze_agent 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee53dc3638485bf02adf6c7693aa2cbd39cb414634f30050083f39da0480a40b
|
4
|
+
data.tar.gz: bec9b3518643d646a9f2473df83eb6beb05bf95acfed43bdee05b77a06a4a318
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7caec636dec762b4059a2059739d9ee9e7baa62b552e7e0dc61b159876076772965d20ffc92b549c8e01647c564d40b1edb17be9e308e10d713d3632d5294d57
|
7
|
+
data.tar.gz: 6e8cc50147ebc97127f9597f3011d1cb3d00e829bf0439673e874935376ab010d4c0c296b921a1e55720860c23c7a89b2bcf09b18e74130a3d6056b003203588
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Agents
|
2
2
|
class RenaultZeBatteryAgent < Agent
|
3
3
|
include FormConfigurable
|
4
|
-
|
4
|
+
|
5
5
|
default_schedule 'every_5h'
|
6
6
|
|
7
7
|
cannot_receive_events!
|
@@ -13,6 +13,21 @@ module Agents
|
|
13
13
|
provide credentials named `renault_ze_username` and `renault_ze_password`.
|
14
14
|
MD
|
15
15
|
|
16
|
+
event_description <<-MD
|
17
|
+
Events look like this:
|
18
|
+
|
19
|
+
```json
|
20
|
+
{
|
21
|
+
"charge_level": 40,
|
22
|
+
"charging": false,
|
23
|
+
"plugged": false,
|
24
|
+
"remaining_range": 115.0,
|
25
|
+
"last_update": 1554572276,
|
26
|
+
"last_update_hours_ago": 5.12
|
27
|
+
}
|
28
|
+
```
|
29
|
+
MD
|
30
|
+
|
16
31
|
def default_options
|
17
32
|
{
|
18
33
|
"username" => "",
|
@@ -36,11 +51,22 @@ module Agents
|
|
36
51
|
username = interpolated["username"].present? ? interpolated["username"] : credential("renault_ze_username")
|
37
52
|
password = interpolated["password"].present? ? interpolated["password"] : credential("renault_ze_password")
|
38
53
|
service = RenaultZE::Client.new(username, password)
|
39
|
-
content = service.get_battery(service.login())
|
40
54
|
|
41
|
-
|
42
|
-
|
43
|
-
|
55
|
+
begin
|
56
|
+
content = service.get_battery(service.login())
|
57
|
+
rescue
|
58
|
+
error("Could not fetch battery level: " + $!)
|
59
|
+
raise
|
60
|
+
end
|
61
|
+
|
62
|
+
if memory["last_update"] != content["last_update"]
|
63
|
+
created_event = create_event payload: content
|
64
|
+
|
65
|
+
log("Creating new event as newer data received, updated #{content["last_update_hours_ago"]}h ago.", :outbound_event => created_event)
|
66
|
+
memory["last_update"] = content["last_update"]
|
67
|
+
else
|
68
|
+
log("Not creating event as no update since last run. Last update was #{content["last_update_hours_ago"]}h ago.")
|
69
|
+
end
|
44
70
|
end
|
45
71
|
|
46
72
|
end
|
@@ -11,7 +11,7 @@ module RenaultZE
|
|
11
11
|
headers: {"Content-Type": "application/json"},
|
12
12
|
body: {username: @username, password: @password}.to_json
|
13
13
|
)
|
14
|
-
raise
|
14
|
+
raise "Login - Unexpected response code: #{response}" unless response.code == 200
|
15
15
|
|
16
16
|
content = JSON.parse response.body
|
17
17
|
return {
|
@@ -21,14 +21,14 @@ module RenaultZE
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def get_battery(creds)
|
24
|
-
raise
|
25
|
-
raise
|
24
|
+
raise "Battery - Missing token in input: #{creds}" if creds[:token].nil?
|
25
|
+
raise "Battery - Missing VIN in input: #{creds}" if creds[:vin].nil?
|
26
26
|
|
27
27
|
response = HTTParty.get(
|
28
28
|
"https://www.services.renault-ze.com/api/vehicle/#{creds[:vin]}/battery",
|
29
29
|
headers: {"Authorization": "Bearer #{creds[:token]}"}
|
30
30
|
)
|
31
|
-
raise
|
31
|
+
raise "Battery - Unexpected response code: #{response}" unless response.code == 200
|
32
32
|
|
33
33
|
result = JSON.parse response.body
|
34
34
|
unless result["last_update"].nil?
|