Closed jcvignes closed 4 years ago
Hi @jcvignes and @realdannys,
please check out the development branch, where I added the initial support for HP02 and HP04. Currently, the following features are supported (please report issues):
The following features are to be implemented:
Please provide me with the following information:
ENVIRONMENTAL-CURRENT-SENSOR-DATA
, CURRENT-STATE
and STATE-CHANGE
. It would be ideal if you change the mode and target temperature in the Dyson app and send me the corresponding STATE-CHANGE
entries in the logs.Dear Lukas,
Thanks for this. Happy to help, can you just tell me how to enable debug mode in homebridge?
Thanks, JC
Envoyé de mon iPhone
Le 1 janv. 2020 à 12:33, Lukas Rögner notifications@github.com a écrit :
Hi @jcvignes and @realdannys,
please check out the development branch, where I added the initial support for HP02 and HP04. Currently, the following features are supported (please report issues):
Devices should be visible as Heating/Cooling device Air quality sensor should work as expected Humidity sensor should work as expected Night Mode/Jet Focus should work as expected Rotation Speed, Swing Mode should work as expected Filter Life should work as expected Current temperature of Heating/Cooling device should work The following features are to be implemented:
Target temperature Auto/Heat/Cool Mode of Heating/Cooling device Please provide me with the following information:
What is the supported temperature range you can set the target temperature in the Dyson app? Can you please start Homebridge in debug mode and provide output of lines that contain ENVIRONMENTAL-CURRENT-SENSOR-DATA, CURRENT-STATE and STATE-CHANGE. It would be ideal if you change the mode and target temperature in the Dyson app and send me the corresponding STATE-CHANGE entries in the logs. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
Just start homebridge with parameter -D
Dear Lukas,
Apologies for being so dense, could you walk me through the process of installing from the dev-branch? I assume it’s a different npm query?
Thanks, JC
Le 1 janv. 2020 à 12:33, Lukas Rögner notifications@github.com a écrit :
Hi @jcvignes https://github.com/jcvignes and @realdannys https://github.com/realdannys,
please check out the development branch, where I added the initial support for HP02 and HP04. Currently, the following features are supported (please report issues):
Devices should be visible as Heating/Cooling device Air quality sensor should work as expected Humidity sensor should work as expected Night Mode/Jet Focus should work as expected Rotation Speed, Swing Mode should work as expected Filter Life should work as expected Current temperature of Heating/Cooling device should work The following features are to be implemented:
Target temperature Auto/Heat/Cool Mode of Heating/Cooling device Please provide me with the following information:
What is the supported temperature range you can set the target temperature in the Dyson app? Can you please start Homebridge in debug mode and provide output of lines that contain ENVIRONMENTAL-CURRENT-SENSOR-DATA, CURRENT-STATE and STATE-CHANGE. It would be ideal if you change the mode and target temperature in the Dyson app and send me the corresponding STATE-CHANGE entries in the logs. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/lukasroegner/homebridge-dyson-pure-cool/issues/31?email_source=notifications&email_token=ADTGLAOZ2KHZMMPL7IFARS3Q3R5PBA5CNFSM4KBQEKO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEH5DLZA#issuecomment-570045924, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADTGLAPX7XZPOXIQDO5AFKTQ3R5PBANCNFSM4KBQEKOQ.
Hi Lukas,
On an HP04:
Heat Mode: temperature range: Off - 37C Cool Mode: no range - it's just cool mode.
I was able to get this started in debug mode:
MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-02T18:37:39.000Z","mode-reason":"LAPP","state-reason":"MODE","rssi":"-55","channel":"6","fqhp":"106272","fghp":"0","product-state":{"fpwr":"ON","auto":"ON","oscs":"ON","oson":"ON","nmod":"OFF","rhtm":"ON","fnst":"FAN","ercd":"11E1","wacd":"NONE","nmdv":"0004","fnsp":"AUTO","bril":"0002","corf":"ON","cflr":"0091","hflr":"0091","cflt":"CARF","hflt":"GHEP","sltm":"OFF","osal":"0005","osau":"0355","ancp":"CUST","hmod":"OFF","hmax":"2942","tilt":"OK","hsta":"OFF","psta":"CLNG","fdir":"OFF"},"scheduler":{"srsc":"000000005e0d4922","dstv":"0001","tzid":"0001"}}
MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-02T18:37:39.000Z","data":{"tact":"2938","hact":"0046","pm25":"0040","pm10":"0029","va10":"0005","noxl":"0000","p25r":"0036","p10r":"0038","sltm":"OFF"}}
I then get a variety of errors and Homebridge shuts down.
Update: latest version contains correct maximum temperature.
@bmacfee Can you provide the error that is displayed?
@jcvignes You can install via npm install -g https://github.com/lukasroegner/homebridge-dyson-pure-cool.git#development
@jcvignes @bmacfee Can you also clarify how the heating mode works? Is it independent from the fan mode? DP04 for example has the modes "off", "auto" (automatic fan speed and device enables/disables fan by itself), "on" (explicit fan speed set by user). How does the heating work with those modes?
@lukasroegner Here's the full log in Terminal of the sign-in and errors (I pulled out the serial number and IP address of the unit, though - if you need those let me know):
[1/2/2020, 2:37:39 PM] [DysonPureCoolPlatform] Signed in.
[1/2/2020, 2:37:39 PM] [DysonPureCoolPlatform] XXX-CA-XXXXXXXX - MQTT connection requested for XXX.XXX.XX.XX.
[1/2/2020, 2:37:39 PM] [DysonPureCoolPlatform] Got devices from the Dyson API.
[1/2/2020, 2:37:40 PM] [DysonPureCoolPlatform] XXX-CA-XXXXXXXX - MQTT connection established.
[1/2/2020, 2:37:40 PM] [DysonPureCoolPlatform] XXX-CA-XXXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-02T18:37:39.000Z","mode-reason":"LAPP","state-reason":"MODE","rssi":"-55","channel":"6","fqhp":"106272","fghp":"0","product-state":{"fpwr":"ON","auto":"ON","oscs":"ON","oson":"ON","nmod":"OFF","rhtm":"ON","fnst":"FAN","ercd":"11E1","wacd":"NONE","nmdv":"0004","fnsp":"AUTO","bril":"0002","corf":"ON","cflr":"0091","hflr":"0091","cflt":"CARF","hflt":"GHEP","sltm":"OFF","osal":"0005","osau":"0355","ancp":"CUST","hmod":"OFF","hmax":"2942","tilt":"OK","hsta":"OFF","psta":"CLNG","fdir":"OFF"},"scheduler":{"srsc":"000000005e0d4922","dstv":"0001","tzid":"0001"}}
[1/2/2020, 2:37:40 PM] [DysonPureCoolPlatform] XXX-CA-XXXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-02T18:37:39.000Z","data":{"tact":"2938","hact":"0046","pm25":"0040","pm10":"0029","va10":"0005","noxl":"0000","p25r":"0036","p10r":"0038","sltm":"OFF"}}
[1/2/2020, 2:37:40 PM] ReferenceError: temperatureService is not defined
at MqttClient.
@lukasroegner On the heating mode and the fan, the heating mode is independent from the fan mode. The fan can be set from Off to 10, and the heating mode is set separate from that. There is an Auto setting, which adjusts the fan based on (1) purification required and (2) the Heating required. So, if the air is considered Poor and the machine is in Auto, it will automatically jack up the fan to suck in more air. If the temperature drops below the pre-defined level, it also will increase the fan to heat to the temperature set. I'm attaching a screenshot of the app and how I have it set right now. It shows the controls available.
@jcvignes @bmacfee Can you also clarify how the heating mode works? Is it independent from the fan mode? DP04 for example has the modes "off", "auto" (automatic fan speed and device enables/disables fan by itself), "on" (explicit fan speed set by user). How does the heating work with those modes?
@bmacfee The error from the logs is fixed now. Homebridge should no longer exit.
Regarding the heating mode: OK, so the AUTO setting is shared by the fan and the heater part of the device...we have to check in the coming iterations of this integration how to implemented it in HomeKit.
I got mine working with - https://www.npmjs.com/package/homebridge-dyson-pure-cool
Not sure if we can improve on that implementation in anyway? It seems to work fine though sometimes if you setup a scene which sends multiple commands at once it can get a bit confused.
It's displayed as, a fan - with a slider to do speed, 0-100% in 10% increments (which match speed 1 to 10 on the machine), it also has a oscillation option on the fan, which turns the oscillator on (weirdly I can't get this to work with Siri even though it's an option built right in with Homekit!) Then it has the heat mode which has the temperature range and an on/off switch which turns the heat on/off. Then simple on/off switches for Night Mode, Auto mode, Jet Focus - and it provides all the sensors for air quality. It supplies them as one tile which you can separate if you want. I noticed the fan option has a filter one it but mine read 100%, i'm not sure if this info is available from the API because my filter isn't 100% so it probably should be showing it correctly here.
Hello Lukas,
i am using HOOBS and cant seam to be able to install the development version. When will you be merging the current development into prod ?
@PedroRA561 As soon as implementation is finished, which is not the case.
@realdannys I assume you mean https://github.com/joe-ng/homebridge-dyson-link? I'm trying to implement the HP02 and HP04 as a cooler/heater device instead of a fan. This type of accessory supports all the required characteristics.
@bmacfee I hope to finish the final implementation soon.
@realdannys I assume you mean https://github.com/joe-ng/homebridge-dyson-link? I'm trying to implement the HP02 and HP04 as a cooler/heater device instead of a fan. This type of accessory supports all the required characteristics.
Sorry yes, I just realised I linked to your project! It works well but the niggles for me would be that sending 3-4 different settings at once via a scene is unreliable (as I say, it never seems to reliably turn the Jet Focus switch off when you ask it to) - also if it is at all possible, showing the filter level would be amazing.
I went through the docs of the HeaterCoolerService and the ThermostatService for HomeKit. I can see two ways of implementing the HP02 and HP04:
One air purifier accessory and a separate thermostat The air purifier would work exactly like the one implemented for the other device. The thermostat can be set to "Off" or "Heat" and you can set the target temperature. The logic for heating is completely separate from the air purifier, as already mentioned
On the heating mode and the fan, the heating mode is independent from the fan mode.
A combined heater/cooler accessory That would mean we have to think about the logic for the different modes: A heater/cooler as defined by HomeKit can have "Off", "Auto", "Heat" and "Cool" target modes. This would have to be mapped to the settings "Off", "Auto" and "Manual" (air purifier), and "Heating On", "Heating Off" (heat modes).
The first solution could me implemented really fast, the second one could be more convenient. What do you guys think?
I like the first option, it gets us where we want to be… I don't know about others but I'm in Europe so Heater/Thermostat is the one that I will need most in the coming months. Maybe it can be revisited later? :)
and Apologies, I was away for a few days so I couldn't help with the debugging. Is there something I can do to help now?
New version on the development
branch. As this implementation breaks the previous one, please
config.json
: set the devices
property to []
(empty array)development
branchdevices
back again to the config.json
The HP02 and HP04 show up as an air purifier. Additionally, a thermostat is shown where you can set heating to ON/OFF, set the target temperature and read the current temperature.
Congrats Lukas, it works like a charm!!
Two nitpicks:
because the device can be quite loud, I typically have the "fan" set on 1. I have used the lowest gradient in the "air purifier" accessory but it still seems quite high (and was set to "auto" when I checked in the Dyson app). .
It seems the "purifier" needs to be "on" for the temperature to be effective, is that normal? I assume we just need to group them to work in parallel?
Thanks and congrats again! JC
Hi @jcvignes,
The first one looks like an issue. Can you start homebridge in debug mode (argument -D
), change the fan speed and send me the log of of this action?
The second one is intended. As far as I understood, the heat mode can be changed independently (ON or OFF) from the actual state of the device. Is that correct?
Best regards Lukas
[23/01/2020 à 01:25:44] [DysonPureCoolPlatform] A1A-EU-MAA3195A - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-23T00:25:42.000Z","mode-reason":"NONE","state-reason":"MODE","rssi":"-41","channel":"4","fqhp":"100912","fghp":"0","product-state":{"fpwr":"ON","auto":"OFF","oscs":"OFF","oson":"OFF","nmod":"OFF","rhtm":"ON","fnst":"FAN","ercd":"11E1","wacd":"NONE","nmdv":"0004","fnsp":"0001","bril":"0002","corf":"ON","cflr":"0099","hflr":"0099","cflt":"CARF","hflt":"GHEP","sltm":"OFF","osal":"0200","osau":"0200","ancp":"CUST","hmod":"HEAT","hmax":"2970","tilt":"OK","hsta":"HEAT","psta":"OFF","fdir":"ON"},"scheduler":{"srsc":"0000000000000000","dstv":"0000","tzid":"0001"}}
Interestingly, the Dyson app shows the fan at 1, but I still believe it’s more noisy (more powerful?) than when I use the app alone…
Also, when I turn the fan on (in homekit) even though the gradiant is very low, it shows as « A » (automatic) in the Dyson app.
Hope this helps… JC
Le 22 janv. 2020 à 09:09, Lukas Rögner notifications@github.com a écrit :
-D)
You can see the fan speed in the MQTT message:
"fnsp":"0001"
, in this case it is 1 of 10. If you think that the rotation speed is not correct in the home app, you can easily start homebridge in debug mode, change the settings in the Home app or the Dyson app and observe changes in the MQTT messages.
Report on HP02:
It's presented as cooling device, no heating options. There is separate widget that shows temperature, but doesn't really allows to control it. There is nameless button, that tries to enable heating mode, but it keeps switching back on. (And I can't adjust temperature either).
Video: https://c.ia.gs/jkunBKRy
Debug logs:
[1/26/2020, 2:50:21 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - set TargetHeatingCoolingState to 1: {"hmod":"ON"}
[1/26/2020, 2:50:21 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-26T22:50:21.000Z","mode-reason":"","state-reason":"MODE","product-state":{"fmod":["AUTO","AUTO"],"fnst":["OFF","OFF"],"fnsp":["AUTO","AUTO"],"qtar":["0003","0003"],"oson":["OFF","OFF"],"rhtm":["ON","ON"],"filf":["2899","2899"],"ercd":["NONE","NONE"],"nmod":["OFF","OFF"],"wacd":["NONE","NONE"],"hmod":["OFF","OFF"],"hmax":["2963","2963"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:50:22 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - set TargetHeatingCoolingState to 0: {"hmod":"OFF"}
[1/26/2020, 2:50:22 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-26T22:50:22.000Z","mode-reason":"","state-reason":"MODE","product-state":{"fmod":["AUTO","AUTO"],"fnst":["OFF","OFF"],"fnsp":["AUTO","AUTO"],"qtar":["0003","0003"],"oson":["OFF","OFF"],"rhtm":["ON","ON"],"filf":["2899","2899"],"ercd":["NONE","NONE"],"nmod":["OFF","OFF"],"wacd":["NONE","NONE"],"hmod":["OFF","OFF"],"hmax":["2963","2963"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
This is logs for when I enabled heating mode from the Dyson app:
[1/26/2020, 2:56:12 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-26T22:56:12.000Z","mode-reason":"LAPP","state-reason":"MODE","product-state":{"fmod":["AUTO","AUTO"],"fnst":["OFF","OFF"],"fnsp":["AUTO","AUTO"],"qtar":["0003","0003"],"oson":["OFF","OFF"],"rhtm":["ON","ON"],"filf":["2899","2899"],"ercd":["NONE","NONE"],"nmod":["OFF","OFF"],"wacd":["NONE","NONE"],"hmod":["OFF","HEAT"],"hmax":["2963","2965"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:56:13 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-26T22:56:13.000Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-27","product-state":{"fmod":"AUTO","fnst":"OFF","fnsp":"AUTO","qtar":"0003","oson":"OFF","rhtm":"ON","filf":"2899","ercd":"NONE","nmod":"OFF","wacd":"NONE","hmod":"HEAT","hmax":"2965","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:56:13 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-26T22:56:13.001Z","data":{"tact":"2961","hact":"0059","pact":"0002","vact":"0000","sltm":"OFF"}}
[1/26/2020, 2:56:23 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-26T22:56:23.000Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-27","product-state":{"fmod":"AUTO","fnst":"OFF","fnsp":"AUTO","qtar":"0003","oson":"OFF","rhtm":"ON","filf":"2899","ercd":"NONE","nmod":"OFF","wacd":"NONE","hmod":"HEAT","hmax":"2965","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:56:23 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-26T22:56:23.001Z","data":{"tact":"2961","hact":"0059","pact":"0002","vact":"0000","sltm":"OFF"}}
[1/26/2020, 2:56:30 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-26T22:56:30.000Z","mode-reason":"LAPP","state-reason":"MODE","product-state":{"fmod":["AUTO","AUTO"],"fnst":["OFF","FAN"],"fnsp":["AUTO","AUTO"],"qtar":["0003","0003"],"oson":["OFF","OFF"],"rhtm":["ON","ON"],"filf":["2899","2899"],"ercd":["NONE","NONE"],"nmod":["OFF","OFF"],"wacd":["NONE","NONE"],"hmod":["HEAT","HEAT"],"hmax":["2965","2965"],"hsta":["OFF","HEAT"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:56:30 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-26T22:56:30.001Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-27","product-state":{"fmod":"AUTO","fnst":"FAN","fnsp":"AUTO","qtar":"0003","oson":"OFF","rhtm":"ON","filf":"2899","ercd":"NONE","nmod":"OFF","wacd":"NONE","hmod":"HEAT","hmax":"2965","hsta":"HEAT","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:56:30 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-26T22:56:30.002Z","data":{"tact":"2960","hact":"0059","pact":"0002","vact":"0000","sltm":"OFF"}}
And looks like Oscillation keeps turn off, this is the logs when I enabled it from the Dyson app:
[1/26/2020, 2:58:09 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-26T22:58:09.000Z","mode-reason":"LAPP","state-reason":"MODE","product-state":{"fmod":["AUTO","AUTO"],"fnst":["FAN","FAN"],"fnsp":["AUTO","AUTO"],"qtar":["0003","0003"],"oson":["OFF","ON"],"rhtm":["ON","ON"],"filf":["2898","2898"],"ercd":["NONE","NONE"],"nmod":["OFF","OFF"],"wacd":["NONE","NONE"],"hmod":["OFF","OFF"],"hmax":["2965","2965"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:58:09 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-26T22:58:09.001Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-27","product-state":{"fmod":"AUTO","fnst":"FAN","fnsp":"AUTO","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2898","ercd":"NONE","nmod":"OFF","wacd":"NONE","hmod":"OFF","hmax":"2965","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:58:09 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-26T22:58:09.002Z","data":{"tact":"2957","hact":"0060","pact":"0002","vact":"INIT","sltm":"OFF"}}
[1/26/2020, 2:58:23 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-26T22:58:23.000Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-30","product-state":{"fmod":"AUTO","fnst":"FAN","fnsp":"AUTO","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2898","ercd":"NONE","nmod":"OFF","wacd":"NONE","hmod":"OFF","hmax":"2965","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/26/2020, 2:58:23 PM] [DysonPureCoolPlatform] PE7-US-XXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-26T22:58:23.001Z","data":{"tact":"2957","hact":"0061","pact":"0002","vact":"INIT","sltm":"OFF"}}
Also temperature is shown in Fahrenheit, regardless of units set to Celsius by default, when I switch it back to Fahrenheit nothing changes and when I switch to Celsius one more time, again nothing changes.
Screenshot:
Let me know if you need more data.
Thank you.
@alexindigo Thank you so much for the feedback, the logs are exactly what I need.
It's presented as cooling device, no heating options.
That intentional, see comment above. As owners of the HP02 or HP04 told me, the heating (ON/OFF) can be set independently of the operation mode of the Dyson itself, thus, a CoolerHeaterService could not represent all the states the Dyson app can.
There is separate widget that shows temperature, but doesn't really allows to control it. There is nameless button, that tries to enable heating mode, but it keeps switching back on. (And I can't adjust temperature either).
You are right, due to a bug that is fixed now, the temperature could not be set. The plugin did not send the correct command to enable heat (HEAT
is correct, ON
is wrong). Now, you can control the temperature if heating is enabled. The button is "nameless" due to a bug in the Home app. I have thermostats with native HomeKit support, that show the same "nameless" button. I think the buttons are missing an icon. I home that gets fixed in the next iOS update.
And looks like Oscillation keeps turn off,...
At which action does oscillation turn off? As I can see from the logs, the oscillation in HP02 is made in the same manner as for the DP02 and TP01, which seem to work fine.
Also temperature is shown in Fahrenheit, regardless of units set to Celsius by default, when I switch it back to Fahrenheit nothing changes and when I switch to Celsius one more time, again nothing changes.
That is strange, I didn't see this behavior yet. I assume that Fahrenheit is the default unit in your region? It could be that the Home app automatically displays in Fahrenheit...I just provide the Celsius value to HomeKit, so it must be an automatic calculation. Is there a global option in HomeKit to choose between Fahrenheit and Celsius?
The "hardware display" characteristic is a required characteristic for thermostats, however, it is not implemented in the plugin, so that shouldn't change anything.
@lukasroegner makes sense, and especially with HP02 it's not heater/cooler, since it can't auto switch between cooling and heating. Not sure about HP04 though.
I'll check updated version, thank you. As for the button labels, I do see button labels on the similar buttons in dyson-link
package.
Screenshot
For oscillation, it just happened by itself, I didn't press anything, was just sitting there, looking at the app and thinking something :) Maybe it was some MQTT echo :) Speaking of oscillation, in dyson-link they made it into a nice widget – screenshot, still not sure how that widgets and sub-widgets are controlled though.
Yes, I'm in US and all the defaults is for Fahrenheit, weird if it'd be Homekit bug :)
The "hardware display" characteristic is a required characteristic for thermostats, however, it is not implemented in the plugin, so that shouldn't change anything.
Looks like TemperatureDisplayUnits
looks like it can have 0
or 1
values, not sure what they represent though.
By the way, in the comment above you mentioned that you read some docs, what are those docs and how can one read them? :)
Thank you.
As for the button labels, I do see button labels on the similar buttons in dyson-link package.
The homebridge-dyson-link
project uses a CoolerHeaterService instead of the ThermostatService...we can try that, too. I would like to close this issue first (make sure, everything works for HP02 and HP04, then merge to master and publish on NPM), we can refine the implementation afterwards.
in dyson-link they made it into a nice widget – screenshot, still not sure how that widgets and sub-widgets are controlled though.
If you mean the button arrangement of the air purifier: a HomeKit bug. The on/off button should be a small round one, not the slider that is currently being displayed. In an earlier iOS 13 Version, it has been displayed correctly (see https://github.com/lukasroegner/homebridge-dyson-pure-cool/issues/6#issuecomment-525822185).
Yes, I'm in US and all the defaults is for Fahrenheit, weird if it'd be Homekit bug :)
I found a post on Reddit explaining the behavior: the Home app uses the unit that you set under Settings app > General > Region & Language > Temperature unit
By the way, in the comment above you mentioned that you read some docs, what are those docs and how can one read them? :)
A popular homebridge developer shared a document that contained a documentation for HomeKit Hardware developers. As the SDK has been open-sourced now, you can just take a look at the source code.
I usually browse through the source code of hap-nodejs (the generated ts files) and also use the HomeKit Accessory Simulator app from Apple.
The Dyson devices aren't cooling devices at all, despite the name. It's either a heater, or a fan which moves air - it can't cool anything, so doesn't make sense to have any sort of cooling options.
@lukasroegner
New change is working, I can control temperature of the heater now.
The homebridge-dyson-link project uses a CoolerHeaterService instead of the ThermostatService...we can try that, too. I would like to close this issue first (make sure, everything works for HP02 and HP04, then merge to master and publish on NPM), we can refine the implementation afterwards.
For sure, thanks a lot for doing it. And I don't think CoolerHeaterService
is semantically correct here.
If you mean the button arrangement of the air purifier: a HomeKit bug. The on/off button should be a small round one, not the slider that is currently being displayed. In an earlier iOS 13 Version, it has been displayed correctly (see #6 (comment)).
That screenshots look much sweeter than what we have now, looks like iOS is full of bugs. Thanks for the details.
I found a post on Reddit explaining the behavior: the Home app uses the unit that you set under Settings app > General > Region & Language > Temperature unit
To be clear I do prefer Fahrenheit and I do like that it shows stuff in F° right out of the box for me, it's just weird that it says Celsius underneath :) Maybe something we can specify in the config.
This is the logs for when I switch from C° to F°:
EventedHTTPServer [::ffff:10.13.196.118] HTTP request: /characteristics +4s
HAPServer [CC:22:3D:E3:CE:30] HAP Request: PUT /characteristics +0ms
Accessory [Homebridge] Processing characteristic set: [{"aid":30,"iid":14,"value":1}] +1ms
Accessory [Homebridge] Setting Characteristic "Temperature Display Units" to value 1 +0ms
EventedHTTPServer [::ffff:10.13.220.5] Sending HTTP event '30.14' with data: {"characteristics":[{"aid":30,"iid":14,"value":1}]} +0ms
EventedHTTPServer [::ffff:10.13.196.118] Muting event '30.14' notification for this connection since it originated here. +0ms
EventedHTTPServer [::ffff:10.13.196.118] HTTP Response is finished +0ms
A popular homebridge developer shared a document that contained a documentation for HomeKit Hardware developers. As the SDK has been open-sourced now, you can just take a look at the source code. I usually browse through the source code of hap-nodejs (the generated ts files) and also use the HomeKit Accessory Simulator app from Apple.
Yeah, this is what I was doing, the source code part, and I'll check HomeKit Accessory Simulator app, thank you.
Also, found another bug with Auto mode, in the native app, when I change speed of the fan, it turns off auto mode, and when I enable auto mode, it resets fan speed. In the current version I noticed that two things behave seemigly independent of one another.
Here are the logs for when I'm doing it in the native app:
While in auto mode, changing fan speed:
[1/28/2020, 12:05:10 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-28T08:05:10.000Z","mode-reason":"LAPP","state-reason":"MODE","product-state":{"fmod":["AUTO","FAN"],"fnst":["FAN","FAN"],"fnsp":["AUTO","0002"],"qtar":["0003","0003"],"oson":["ON","ON"],"rhtm":["ON","ON"],"filf":["2877","2877"],"ercd":["NONE","NONE"],"nmod":["ON","ON"],"wacd":["NONE","NONE"],"hmod":["OFF","OFF"],"hmax":["2963","2963"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
EventedHTTPServer [::ffff:10.13.220.5] Sending HTTP event '29.12' with data: {"characteristics":[{"aid":29,"iid":12,"value":0}]} +14s
EventedHTTPServer [::ffff:10.13.196.118] Sending HTTP event '29.12' with data: {"characteristics":[{"aid":29,"iid":12,"value":0}]} +1ms
[1/28/2020, 12:05:11 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-28T08:05:10.001Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-30","product-state":{"fmod":"FAN","fnst":"FAN","fnsp":"0002","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2877","ercd":"NONE","nmod":"ON","wacd":"NONE","hmod":"OFF","hmax":"2963","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/28/2020, 12:05:11 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-28T08:05:10.002Z","data":{"tact":"2945","hact":"0060","pact":"0003","vact":"INIT","sltm":"OFF"}}
EventedHTTPServer [::ffff:10.13.220.5] Sending HTTP event '30.12' with data: {"characteristics":[{"aid":30,"iid":12,"value":21.5}]} +301ms
EventedHTTPServer [::ffff:10.13.196.118] Sending HTTP event '30.12' with data: {"characteristics":[{"aid":30,"iid":12,"value":21.5}]} +1ms
EventedHTTPServer [::ffff:10.13.220.5] Sending HTTP event '31.10' with data: {"characteristics":[{"aid":31,"iid":10,"value":60}]} +1ms
EventedHTTPServer [::ffff:10.13.196.118] Sending HTTP event '31.10' with data: {"characteristics":[{"aid":31,"iid":10,"value":60}]} +0ms
[1/28/2020, 12:05:11 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-28T08:05:10.003Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-27","product-state":{"fmod":"FAN","fnst":"FAN","fnsp":"0002","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2877","ercd":"NONE","nmod":"ON","wacd":"NONE","hmod":"OFF","hmax":"2963","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/28/2020, 12:05:11 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-28T08:05:11.000Z","data":{"tact":"2945","hact":"0060","pact":"0003","vact":"INIT","sltm":"OFF"}}
[1/28/2020, 12:05:16 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-28T08:05:16.000Z","mode-reason":"LAPP","state-reason":"MODE","product-state":{"fmod":["FAN","FAN"],"fnst":["FAN","FAN"],"fnsp":["0002","0002"],"qtar":["0003","0003"],"oson":["ON","ON"],"rhtm":["ON","ON"],"filf":["2877","2877"],"ercd":["NONE","NONE"],"nmod":["ON","ON"],"wacd":["NONE","NONE"],"hmod":["OFF","OFF"],"hmax":["2963","2963"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/28/2020, 12:05:16 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-28T08:05:16.001Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-27","product-state":{"fmod":"FAN","fnst":"FAN","fnsp":"0002","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2877","ercd":"NONE","nmod":"ON","wacd":"NONE","hmod":"OFF","hmax":"2963","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/28/2020, 12:05:16 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-28T08:05:16.002Z","data":{"tact":"2945","hact":"0060","pact":"0003","vact":"INIT","sltm":"OFF"}}
[1/28/2020, 12:05:16 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-28T08:05:16.003Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-30","product-state":{"fmod":"FAN","fnst":"FAN","fnsp":"0002","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2877","ercd":"NONE","nmod":"ON","wacd":"NONE","hmod":"OFF","hmax":"2963","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/28/2020, 12:05:16 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-28T08:05:16.004Z","data":{"tact":"2945","hact":"0060","pact":"0003","vact":"INIT","sltm":"OFF"}}
And this is when I enable auto mode back:
[1/28/2020, 12:05:47 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"STATE-CHANGE","time":"2020-01-28T08:05:46.000Z","mode-reason":"LAPP","state-reason":"MODE","product-state":{"fmod":["FAN","AUTO"],"fnst":["FAN","FAN"],"fnsp":["0002","AUTO"],"qtar":["0003","0003"],"oson":["ON","ON"],"rhtm":["ON","ON"],"filf":["2877","2877"],"ercd":["NONE","NONE"],"nmod":["ON","ON"],"wacd":["NONE","NONE"],"hmod":["OFF","OFF"],"hmax":["2963","2963"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
EventedHTTPServer [::ffff:10.13.220.5] Sending HTTP event '29.12' with data: {"characteristics":[{"aid":29,"iid":12,"value":1}]} +36s
EventedHTTPServer [::ffff:10.13.196.118] Sending HTTP event '29.12' with data: {"characteristics":[{"aid":29,"iid":12,"value":1}]} +1ms
[1/28/2020, 12:05:47 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-28T08:05:47.000Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-30","product-state":{"fmod":"AUTO","fnst":"FAN","fnsp":"AUTO","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2877","ercd":"NONE","nmod":"ON","wacd":"NONE","hmod":"OFF","hmax":"2963","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/28/2020, 12:05:47 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-28T08:05:47.001Z","data":{"tact":"2945","hact":"0060","pact":"0003","vact":"INIT","sltm":"OFF"}}
[1/28/2020, 12:05:47 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"CURRENT-STATE","time":"2020-01-28T08:05:47.002Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-34","product-state":{"fmod":"AUTO","fnst":"FAN","fnsp":"AUTO","qtar":"0003","oson":"ON","rhtm":"ON","filf":"2877","ercd":"NONE","nmod":"ON","wacd":"NONE","hmod":"OFF","hmax":"2963","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"cdfb","dstv":"0001","tzid":"0001"}}
[1/28/2020, 12:05:47 AM] [DysonPureCoolPlatform] PE7-US-XXXXXXXX - MQTT message received: {"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-01-28T08:05:47.003Z","data":{"tact":"2945","hact":"0060","pact":"0003","vact":"INIT","sltm":"OFF"}}
And thanks again for all the work.
PS. @realdannys moving air produces cooling effect due to increased heat exchange and it has "Cool" right in the name. :)
PS. @realdannys moving air produces cooling effect due to increased heat exchange and it has "Cool" right in the name. :)
It's still not a cooling device - it's just a fan. Hence it should be a fan in Homekit. It can't lower temperature like an AC. It can heat and blow air around.
To end this discussion: it's an air purifier and it is exposed as air purifier. The HP02 and HP04 devices have an additional separate thermostat accessory exposed which manages the heating mode (on/off) and the target temperature.
To end this discussion: it's an air purifier and it is exposed as air purifier. The HP02 and HP04 devices have an additional separate thermostat accessory exposed which manages the heating mode (on/off) and the target temperature.
@lukasroegner do you have a screenshot of how this appears in Homekit now? I'm wondering how it differs if it at all the homebridge-dyson-link
project. Were you able to get filter quality sent from the API to the purifier device? It appears using homebridge-dyson-link
but it's always at 100%.
@realdannys For screenshots see https://github.com/lukasroegner/homebridge-dyson-pure-cool/issues/6#issuecomment-525822185. The homebridge-dyson-link
plugin exposes the devices as fans. Filter level is supported and working in my plugin.
@alexindigo Can you tell me the issue with the plugin when setting the rotation speed while the device is in AUTO mode (https://github.com/lukasroegner/homebridge-dyson-pure-cool/issues/31#issuecomment-579131971)?
Merged to master. New version on NPM. If you notice errors or unexpected behavior, please open a new issue.
I upgraded but it's stuck in "Activation" and nothing happens… The Tail commands says nothing :( and the debug log is empty too… I just installed the plugin using npm install -g https://github.com/lukasroegner/homebridge-dyson-pure-cool.git what am I missing? Thanks!
Hello! Everything's in the Subject :) I know this model supports Siri Shortcuts but I like the Homebridge flexibility so if you could help that would be great. Happy to test things at my end if need be. Congrats on a great plugin!
JC