Hmm ik kom wel deze tegen:
code:
1
2
3
4
| GET /api/v1/app-compatibility/?os=android&version=1.0.4 HTTP/2
GET /api/v1/app-settings HTTP/2
POST /api/v1/installer/link HTTP/2
GET /api/v1/me/cic/CIC-00000000-0000-0000-0000-000000000000 |
Je kan ook jezelf als installateur aanmerken maar dan heb je alsnog een CiC serienummer nodig:
=== edit ===
Ik heb nog wat verder gekeken, misschien helpt dit voor iemand in de toekomst. Zo niet, dan gebruik ik jullie als kladblok

.
Het eerste request wat de app doet bij opstarten is settings ophalen:
code:
1
2
3
4
5
6
| GET /api/v1/app-settings HTTP/1.1
Host: mobile-api.quatt.io
Accept: application/json
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3
Connection: close |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| HTTP/2 200 OK
Date: Mon, 12 Dec 2022 19:57:18 GMT
Content-Type: application/json; charset=utf-8
X-Powered-By: Express
Etag: W/"289-a6fjARsX32WZB9FSFEhTWrALPxQ"
Via: 1.1 vegur
Cf-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=NHEVrP4T3zzv8Z1efLa7x6OSvZFOkMU%2FU1QyLYcLqPFom0PPPYGweY1iwkW890RS3I9TR9XBxpcSOVIGOGVZOnh%2FQBFFZx%2BthfnFI%2FlksGUwHtnW0SHDmiqNlOqdvSen3Go7Pfc%3D"}],"group":"cf-nel","max_age":604800}
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
Cf-Ray: 7789073b5d3cb71c-AMS
{"meta":{"status":200,"took":0.000354357},"result":{"pairTimeout":60,"wifiAuthTimeout":60,"cableSetupTimeout":10,"requestInterval":2,"flowRateShowManualTimeout":300,"flowRateSingleTestMinimum":600,"flowRateSingleTestMaximumIndication":1200,"flowRateDoubleTestMinimum":700,"flowRateDoubleTestMaximumIndication":1600,"identificationTimeout":900,"testTimeout":1800,"ratedMaximumHousePower":{"minimum":3000,"maximum":20000,"default":8000},"maximumHeatingOutdoorTemperature":{"minimum":12,"maximum":18,"default":16},"boilerTestMinimumTemperatureDifference":5,"boilerTestTimeout":300,"heatPumpRunningPowerThreshold":100,"boilerRunningPowerThreshold":100}} |
Na het aanmaken van een account worden user settings geset:
code:
1
2
3
4
5
6
7
8
9
10
| PUT /api/v1/me HTTP/2
Host: mobile-api.quatt.io
Accept: application/json
Authorization: Bearer <token>
Content-Type: application/json
Content-Length: 43
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3
{"firstName":"Voornaam","lastName":"Achternaam"} |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| HTTP/2 200 OK
Date: Mon, 12 Dec 2022 20:30:10 GMT
Content-Type: application/json; charset=utf-8
X-Powered-By: Express
Etag: W/"f0-cdiGyJ3WvoY9m0MY/JpoKBam/PM"
Via: 1.1 vegur
Cf-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=oNQE6kS8Y9uxjJ8q2k1fPOnt%2FkRecSJyv%2BXt0ZUgbA5MSFjTl%2FZDvLkJPG6%2F0k75%2BZ2I2dzr66zOqhpL3dj7%2FRio%2Fd75dRblQHrT8tE9K%2BUrXJQoZ6pG5i8yCFl%2FKP%2FQjMprfNI%3D"}],"group":"cf-nel","max_age":604800}
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
Cf-Ray: 778937630ce6b7f1-AMS
{"meta":{"status":200,"took":0.047580394},"result":{"id":"<uuid>","firstName":"Voornaam","lastName":"Achternaam","isInstaller":false,"cicIds":[],"installerCicIds":[],"userClientIds":[],"cics":[],"installerCics":[]}} |
Een installateur kan linken met de juiste code
code:
1
2
3
4
5
6
7
8
9
10
| POST /api/v1/installer/link HTTP/2
Host: mobile-api.quatt.io
Accept: application/json
Authorization: Bearer <token>
Content-Type: application/json
Content-Length: 29
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3
{"installerCode":"1234-5678"} |
Je kan pairing starten met het volgende request
code:
1
2
3
4
5
6
7
| POST /api/v1/me/cic/CIC-00000000-0000-0000-0000-000000000000/requestPair HTTP/2
Host: mobile-api.quatt.io
Accept: application/json
Authorization: Bearer <token>
Content-Length: 0
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3 |
Installers moeten ook het ordernummer opgeven:
code:
1
2
3
4
5
6
7
8
9
10
| POST /api/v1/installer/cic/CIC-00000000-0000-0000-0000-000000000000/requestPair HTTP/2
Host: mobile-api.quatt.io
Accept: application/json
Authorization: Bearer <token>
Content-Type: application/json
Content-Length: 27
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3
{"orderNumber":"quatt1234"} |
code:
1
2
3
4
5
6
7
8
9
10
11
| HTTP/2 204 No Content
Date: Mon, 12 Dec 2022 21:16:42 GMT
Content-Length: 0
X-Powered-By: Express
Etag: W/"2a-Zjg4gcwTt2IPqqzvWhNF7gTVAUo"
Via: 1.1 vegur
Cf-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=6%2BVcm2yp7DEcJ2x267CpA%2FtypGnx9n09PwH26FxwAKef4gW3K%2BdoZwdVBinNgiLm2Uj%2BSV%2FGXDxKuxx3rDAnKlZ%2BUFXOy89yZnztm3xz4DElya6gBbzYHL4XvCqJ4G5K%2F%2BegXAY%3D"}],"group":"cf-nel","max_age":604800}
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
Cf-Ray: 77897b8adccc1c84-AMS |
Vervolgens kijkt de app of je op de knop gedrukt hebt door "/
api/v1/me" te pollen, en te wachten tot het cdcId verschijnt:
code:
1
2
3
4
5
6
7
| GET /api/v1/me HTTP/2
Host: mobile-api.quatt.io
Accept: application/json
Authorization: Bearer <token>
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3
If-None-Match: W/"f0-69E/yLkYFF49NbXeggfCDrDyjv4" |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| HTTP/2 200 OK
Date: Mon, 12 Dec 2022 21:18:31 GMT
Content-Type: application/json; charset=utf-8
X-Powered-By: Express
Etag: W/"f0-plKJGAzbuq+3YZXbe1XZnw/TbGA"
Via: 1.1 vegur
Cf-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=z%2B4zuT84y3ndOxwKzSJEJWtjk6ckUajLDN7%2FGCl3rE5Zp6rPBW1pBIYVAqkcoCrVY2inT1iIUSM5CMSa2Kwllt1VkLNxjb8TEQLff2k9DMH45MBgzKl0anM1cSi7ijncEdKyGZ4%3D"}],"group":"cf-nel","max_age":604800}
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
Cf-Ray: 77897e3399b81c82-AMS
Content-Length: 281
{"meta":{"status":200,"took":0.012714086},"result":{"id":"<uuid>","firstName":"Voornaam","lastName":"Achternaam","isInstaller":true,"cicIds":["CIC-00000000-0000-0000-0000-000000000000"],"installerCicIds":[],"userClientIds":[],"cics":[],"installerCics":[]}} |
Dan doet ie weer een request naar de CiC URL:
code:
1
2
3
4
5
6
| GET /api/v1/me/cic/CIC-00000000-0000-0000-0000-000000000000 HTTP/2
Host: mobile-api.quatt.io
Accept: application/json
Authorization: Bearer <token>
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3 |
Daar staan vermoedelijk je settings in maar die zie ik niet want heb nog geen unit. Door een PUT request naar die URL te doen kan je instellingen wijzigen van de CiC.
Wifi:
JSON:
1
| {"wifiSSID":"test","wifiPassword":"password"} |
Tarieven
JSON:
1
| {"electricityPrice":1,"gasPrice":1} |
Normaal / daltarief:
JSON:
1
| {"dayElectricityPrice":1,"nightElectricityPrice":2,"gasPrice":1} |
Silent mode:
Andere opties zijn:
- never
- always
Find wifi networks:
code:
1
2
3
4
5
6
7
| POST /api/v1/me/cic/CIC-00000000-0000-0000-0000-000000000000/findWifiNetworks HTTP/2
Host: mobile-api.quatt.io
Accept: application/json
Authorization: Bearer <token>
Content-Length: 0
Accept-Encoding: gzip, deflate
User-Agent: okhttp/4.9.3 |
Als ik de unit heb kan ik verder testen

. Tot die tijd, als je een foto post blur dan naast de QR code ook het serienummer, just in case

.
[
Voor 72% gewijzigd door
Slurpgeit op 12-12-2022 22:45
]