-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
106 lines (99 loc) · 4.23 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html>
<html>
<meta name="google-site-verification" content="3X5uNTQ26ZBuXakUhsQJmIVQg3rOOEns34x94ptsfcg" />
<head>
<title>Venta Air Original Connect - local REST API</title>
<!-- Include the Hubot Sans font stylesheet -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Hub+OT:wght@400;700&display=swap">
<style>
/* Apply the Hubot Sans font to the entire body */
body {
font-family: 'Hub OT', sans-serif;
}
</style>
</head>
<body>
<!-- Add a link to the GitHub repository -->
<p>GitHub repository: <a href="https://github.com/GreyEarl/venta-air-api" target="_blank">https://github.com/GreyEarl/venta-air-api </a>.</p>
<h1>Venta Air Original Connect - local REST API</h1>
<p>This is a short description for anyone who owns or wants to buy an Venta Air Original Connect humidifier and seeks integration within the local network. The manufacturers do not communicate on the use of APIs. Officially, Venta Air only offers an app which you can use to control their humidifier labeled as Original Connect. Also, contacting Venta Air for API support came out empty. They simply denied the existence of such a thing.</p>
<p>In the end, I figured out the app is communicating by simply using a local API, which you can use within your home domotica controller, like Home Assistant. By sniffing network traffic between the app and my humidifier (type AH510), I have reverse-engineered the API.</p>
<p>Please be aware, this might not be complete or 100% correct as there is no official description. No authentication/bearer token is required.</p>
<h2>Tested with the Original Connect AH510</h2>
<h3>Connecting to your network</h3>
<p>Connect the device by initially using the Venta Air app. Alternatively, connect to the initial default AP. The device is hosting a webserver, so you can go to the assigned IP address in your browser to connect to your network, see basic information/state, and the option to update the firmware.</p>
<img src="https://user-images.githubusercontent.com/33351068/235794581-53f143c6-54ec-4ea9-8ea0-84b9d620fca2.png" alt="Device Screenshot">
<h3>Get state</h3>
<p><code>POST <device-ip>/api/telemetry</code></p>
<p>You will get something like this as a response:</p>
<pre>
{
"Header": {
"DeviceType": 500,
"MacAdress": "<MAC>",
"ProtocolV": "3.0"
},
"Action": {
"Power": 1,
"FanSpeed": 2,
"TargetHum": 50,
"SleepMode": 0,
"Automatic": 0,
"BaLi": 10
},
"Info": {
"OperationT": 46571,
"ServiceT": 367,
"ServiceMax": 2016,
"Warnings": 1,
"SWMain": "1.0.0.6",
"HwIndexMB": 1
},
"Measure": {
"Temperature": 25.66224,
"Humidity": 43.41344
}
}
</pre>
<p>The meaning of most items in the above response makes sense by default. Some more details on a few.</p>
<ul>
<li><strong>TargetHum:</strong> Which value in humidity percentage should the device work to in automatic mode.</li>
<li><strong>Automatic/SleepMode:</strong> binary values, off(0) or on(1)</li>
<li><strong>OperationT:</strong> Operation Time</li>
<li><strong>Warnings:</strong> Binary value. When 1 there is an error. In most cases, it indicates a low water level.</li>
<li><strong>ServiceMax:</strong> When ServiceT hits this value, it is time to clean the device.</li>
<li><strong>ServiceT:</strong> When the value hits ServiceMax (by default 2016), the service indicator will light up on the device, meaning you have to clean the device.</li>
</ul>
<h3>Set state</h3>
<p><code>POST <device-ip>/api/telemetry?request=set</code></p>
<p>Some examples below used as a payload.</p>
<p>Set fan speed to level 1:</p>
<pre>
{
"Power": 1,
"Automatic": 0,
"SleepMode": 0,
"FanSpeed": 1,
"Action": "control"
}
</pre>
<p>Set auto mode on:</p>
<pre>
{
"Power": 1,
"Automatic": 1,
"Action": "control"
}
</pre>
<p>Turn off the device:</p>
<pre>
{
"Power": 0,
"Automatic": 0,
"SleepMode": 0,
"FanSpeed": 1,
"Action": "control"
}
</pre>
</body>
</html>