⚠️ DISCLAIMER: Use at your own risk only! This code is unofficial (not affiliated with Philips), probably poorly programmed and work in progress. It could theoretically damage your device or property. It could cause errors in the Airfryer, bypass safety features that we don't know about and that way, for example, cause a fire. I'm not responsible for any damage if you use this code anyway. Do not use unattended.⚠️
![image](https://private-user-images.githubusercontent.com/30938717/302113806-93ffddc8-aae4-4a8f-b554-a6a98ffc0a8f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU5MzkzMDUsIm5iZiI6MTcyNTkzOTAwNSwicGF0aCI6Ii8zMDkzODcxNy8zMDIxMTM4MDYtOTNmZmRkYzgtYWFlNC00YThmLWI1NTQtYTZhOThmZmMwYThmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEwVDAzMzAwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2N2Q0ODdjNzAyNTAwNjZkYzI0YTEwZjk2NjAxMGJhN2ZjMzJhOWYyYzIwMzEzYTY1ZGUxY2YwOGQ0ZDE4MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.xjTZiUv2l6SFY5zS-uPu_lDEnwpPuVOdjARTEyPSLBQ)
Device | Sensors | Service Calls |
---|---|---|
HD9880 | ✅ | ✅ |
HD9285 | ✅ | unchecked (probably not yet 100% compatible) |
HD9255 | ✅ | unchecked (probably not yet 100% compatible) |
For other devices at least the sensors should work, but I'd not recommend using the service_calls. More devices might be added, but requiere your help (collect some data via REST commands and sniff traffic via for example Fiddler Classic).
- Get your
client_id
&client_secret
as described below - Set up your router to give the Airfryer a static IP
- Install pyscript, add your settings (see example below) to Home Assistant's configuration.yaml and restart Home Assistant
pyscript: allow_all_imports: true apps: airfryer: airfryer_ip: '192.168.0.123' client_id: 'XXXXXXXXXXXXXXXXXXXXXX==' client_secret: 'XXXXXXXXXXXXXXXXXXXXXX==' # Optional settings (only needed in some cases): # command_url: '/di/v1/products/1/airfryer' # Set it to "/di/v1/products/1/venusaf" for some devices (HD9880/90, ...?) # airspeed: False # Set it to True only for HD9880/90 # probe: False # Set it to True only for HD9880/90 & HD9875/90 # update_interval: '20sec' # Change interval to update sensor - you can also call service 'pyscript.airfryer_sensors_update' to get an instant update # replace_timestamp: False # Set to True if you block internet for the Airfryer. Replaces wrong device timestamp with correct server timestamp # time_remaining: 'disp_time' # Set it to 'cur_time' for HD9255 (Experimental) # time_total: 'total_time' # Set it to 'time' for HD9255 (Experimental)
- airfryer.py => Download and move to /config/pyscript/
- frontend_card.txt => Create a new "manual card" in the Home Assistant UI and copy & paste the content of the file into it (button-card needs to be installed)
- While testing this script from the very beginning until right before v1.0-beta, I crashed my Airfryer multiple times. So far everything was fine after a reboot and I think I fixed it now - but I can't promise anything.
- All services are described in Home Assistant Dev Tools > Services (search for "pyscript.airfryer_")
- All sensors can be found in Home Assistant Dev Tools > States (search for "pyscript.airfryer_")
- All communication with the Airfryer takes place locally. You can also block the internet connection for the Airfryer - only then should you set
replace_timestamp
in the settings toTrue
, otherwise the calculation of the remaining time in the frontend will no longer work.
- Create a bootstick with Android x86 and boot from it or install it in Proxmox. It seems to be important that Android x86 and the Airfryer are in the same network & subnet. Installing Android x86 in for example VMware might work, but seems to have some problems. Ignore this step if you have a rooted Android phone or tablet.
- Install NutriU and update Chrome (I recommend using Google Play Store and updating everything)
- Install SQLite Database Editor: https://play.google.com/store/apps/details?id=com.tomminosoftware.sqliteeditor
- Open SQLite Database Editor and allow Root for it (if that doesn't work Root might need to be enabled in Android 86 Developer Settings)
- In the SQLite Database Editor select NutriU > network_node.db > network_node
- The second last two columns are the ones we are interested in (swipe left to get there)
It can happen that the client secrets change at some point. One possible cause could be the setup of the remote connection.