homekit/doc/polaris_pwk_1725cgld.md
Evgeny Zinoviev 8f20c9b825 polaris pwk 1725cgld full support
- significant improvements, correctnesses and stability fixes in
  protocol implementation
- correct handling of device appearances and disappearances
- flawlessly functioning telegram bot that re-renders kettle's state
  (temperature and other) in real time
2022-06-30 03:47:49 +03:00

210 lines
5.4 KiB
Markdown

## Random research notes
### Device features
From `devices.json`:
```
"id": "cec1f5ed-be5e-4545-9ce9-e2d843032587",
"vendor": "polaris",
"type": 6,
"class": "kettle",
"name": "PWK 1725CGLD",
"connectivity": [
"wifi",
"hotspot"
],
...
"features": [
"program",
"temperature",
"current_temperature",
"schedule",
"child_lock",
"semi_recipe",
"demo"
],
"temperature_units": "celsius",
"limits": {
"temperature": {
"min": 30,
"max": 100,
"default": 40,
"step": 5
},
"child_lock": {
"min": 0,
"max": 1,
"default": 0,
"step": 1
}
},
```
### Random notes
All commands, from `com/polaris/iot/api/commands`:
```
$ grep -A1 -r "public byte getType()" .
./CmdAccessControl.java: public byte getType() {
./CmdAccessControl.java- return -123;
--
./CmdBattery.java: public byte getType() {
./CmdBattery.java- return 27;
--
./CmdCurrentHumidity.java: public byte getType() {
./CmdCurrentHumidity.java- return 19;
--
./CmdMultiStepCurrent.java: public byte getType() {
./CmdMultiStepCurrent.java- return 21;
--
./CmdSmartMode.java: public byte getType() {
./CmdSmartMode.java- return 40;
--
./CmdTimeStart.java: public byte getType() {
./CmdTimeStart.java- return 0;
--
./CmdProgramData.java: public byte getType() {
./CmdProgramData.java- return 66;
--
./CmdTank.java: public byte getType() {
./CmdTank.java- return 31;
--
./CmdSpeed.java: public byte getType() {
./CmdSpeed.java- return 15;
--
./CmdTargetHumidity.java: public byte getType() {
./CmdTargetHumidity.java- return 18;
--
./CmdTargetTime.java: public byte getType() {
./CmdTargetTime.java- return 3;
--
./CmdRecipeStep.java: public byte getType() {
./CmdRecipeStep.java- return 5;
--
./CmdWarmStream.java: public byte getType() {
./CmdWarmStream.java- return 25;
--
./CmdMapData.java: public byte getType() {
./CmdMapData.java- return 10;
--
./CmdRecipeId.java: public byte getType() {
./CmdRecipeId.java- return 4;
--
./CmdBacklight.java: public byte getType() {
./CmdBacklight.java- return 28;
--
./CmdCurrentTemperature.java: public byte getType() {
./CmdCurrentTemperature.java- return 20;
--
./CmdIonization.java: public byte getType() {
./CmdIonization.java- return 24;
--
./CmdMapTarget.java: public byte getType() {
./CmdMapTarget.java- return 67;
--
./CmdKeepWarm.java: public byte getType() {
./CmdKeepWarm.java- return 16;
--
./CmdMultiStep.java: public byte getType() {
./CmdMultiStep.java- return 14;
--
./CmdCleanArea.java: public byte getType() {
./CmdCleanArea.java- return 36;
--
./CmdVolume.java: public byte getType() {
./CmdVolume.java- return 9;
--
./CmdTargetTemperature.java: public byte getType() {
./CmdTargetTemperature.java- return 2;
--
./CmdError.java: public byte getType() {
./CmdError.java- return 7;
--
./CmdCleanTime.java: public byte getType() {
./CmdCleanTime.java- return 35;
--
./CmdScheduleRemove.java: public byte getType() {
./CmdScheduleRemove.java- return 65;
--
./CmdBatteryState.java: public byte getType() {
./CmdBatteryState.java- return 29;
--
./CmdExpendables.java: public byte getType() {
./CmdExpendables.java- return 34;
--
./CmdContour.java: public byte getType() {
./CmdContour.java- return 68;
--
./CmdJoystick.java: public byte getType() {
./CmdJoystick.java- return 8;
--
./CmdMode.java: public byte getType() {
./CmdMode.java- return 1;
--
./CmdDelayStart.java: public byte getType() {
./CmdDelayStart.java- return 13;
--
./CmdTargetId.java: public byte getType() {
./CmdTargetId.java- return -112;
--
./CmdInternalLogs.java: public byte getType() {
./CmdInternalLogs.java- return -16;
--
./CmdFindMe.java: public byte getType() {
./CmdFindMe.java- return 69;
--
./CmdCustomCommand.java: public byte getType() {
./CmdCustomCommand.java- return 0;
--
./CmdScheduleSet.java: public byte getType() {
./CmdScheduleSet.java- return 64;
--
./CmdTotalTime.java: public byte getType() {
./CmdTotalTime.java- return 26;
--
./CmdChildLock.java: public byte getType() {
./CmdChildLock.java- return 30;
```
From `com/syncleoiot/iottransport/udp/commands`:
```
$ grep -A1 -r "public byte getType()" .
./CmdDeviceDiagnostics.java: public byte getType() {
./CmdDeviceDiagnostics.java- return -111;
--
./CmdHandshake.java: public byte getType() {
./CmdHandshake.java- return 0;
--
./CmdUdpFirmware.java: public byte getType() {
./CmdUdpFirmware.java- return -3;
--
./CmdTimeSync.java: public byte getType() {
./CmdTimeSync.java- return -128;
--
./CmdPing.java: public byte getType() {
./CmdPing.java- return -1;
```
From `com/syncleoiot/iottransport/commands`:
```
$ grep -A1 -r "public byte getType()" .
./CmdCrossConfig.java: public byte getType() {
./CmdCrossConfig.java- return -125;
--
./CmdWifiConfiguration.java: public byte getType() {
./CmdWifiConfiguration.java- return -126;
--
./CmdDiagnostics.java: public byte getType() {
./CmdDiagnostics.java- return -115;
--
./CmdWifiStatus.java: public byte getType() {
./CmdWifiStatus.java- return -126;
--
./CmdHardware.java: public byte getType() {
./CmdHardware.java- return 0;
--
./CmdWifiList.java: public byte getType() {
./CmdWifiList.java- return -127;
```