Open legomind opened 5 years ago
Not at the moment. But if it uses the same Frigidaire app on mobile devices and appear right along side the AC units, then I bet it uses a similar structure and easy to extend. The hardest part of this module was the authentication and session management. The rest is simply existing the functions for reading telementry/writing commands.
Yes, I just tested and it works fine. I would need to add codes for humidity settings, and convenience functions for changing humidistat. Would you accept a pull request?
Sure would! I’ve got a homebridge plug-in that stacks on top of this nodeJS lib. It too would need to be updated, assuming you want to control it with HomeKit.
Ok, I will try to get to it some time next week. As far as HomeKit, I don't have any IOS devices. I am looking to adapt your library to integrate with HomeAssistant, either by using NodeRED as a bridge to MQTT, or by rewriting it in python for direct integration into HomeAssistant.
Your hard work is very appreciated, as snooping on the android app network traffic is impossible because the app does not use the android system to verify the server certificate.
Either way, I will include details about my approach in the PR, along with closure of this issue.
Sounds great! Glad to see another home integration project maybe using it. Would love your contribution!
On Jan 31, 2019, at 7:53 AM, legomind <notifications@github.com mailto:notifications@github.com> wrote:
Ok, I will try to get to it some time next week. As far as HomeKit, I don't have any IOS devices. I am looking to adapt your library to integrate with HomeAssistant, either by using NodeRED as a bridge to MQTT, or by rewriting it in python for direct integration into HomeAssistant.
Your hard work is very appreciated, as snooping on the android app network traffic is impossible because the app does not use the android system to verify the server certificate.
Either way, I will include details about my approach in the PR, along with closure of this issue.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/karlg100/frigidaire/issues/1#issuecomment-459333417, or mute the thread https://github.com/notifications/unsubscribe-auth/ADkg93cASHB9WA7-SpJ-vLTXQxnEKnUrks5vIudIgaJpZM4aaFeE.
@legomind Did you ever get anywhere with that? I just got a Frigidaire air conditioner and want Home Assistant support.
A simple smart outlet might be good enough for you.
Unfortunately the air conditioner beeps for every settings change. This makes it terrible for silently controlling it with a separate temperature sensor, like a physical thermostat in a home usually would.
@slix - the beeping must be a new "feature". the older model I have does't make any sounds when remotely controlling. check the stock app settings and see if you can turn that off?
@legomind If you ever got around to adding dehumidifier support, it would be great if you could put up a pull request. If not, I might try tackling it before too long :)
@njones11 Unfortunately I have not gotten to it. Lol many other projects around the house have taken priority.
this gets the functionality for the dehumidifier. Want to add timer functionality for the timer before sending the PR
I would also love dehumidifier support! That would be amazing!
@patrickkettner just do the PR... 99% of people won't ever use the timer anyway :wink:
Incidentally the app code that sets the timer functionality can be found inside the client APK (zip file) @ assets/www/default/js/app/models/DehumidifierModel.js lines 194-263
please run DEBUG=frigidaire node demo.js devices
and post the output here.
please run
DEBUG=frigidaire node demo.js devices
and post the output here.
starting up
frigidaire getting device list, but getting telem first +0ms
frigidaire getTelem() +0ms
frigidaire +0ms
frigidaire +0ms
frigidaire get() +0ms
frigidaire +0ms
frigidaire no sessionId, starting auth sequence +0ms
frigidaire authStage1() +1ms
frigidaire +0ms
frigidaire +0ms
frigidaire get() +0ms
frigidaire +0ms
frigidaire attempts: 0 +0ms
{
url: 'https://prod2.connappl.com/ELXBasic/apps/services/api/ELXSmart/iphone/init',
headers: {
'x-wl-app-version': '4.0.2',
'X-WL-Session': 'E98B1B36-46E4-9BC2-977D-4AF429BF7439',
'X-WL-ClientId': '2c14c6f157ad3993f376755dc9dbab557ecc3909',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'ELXSmart/4.0.2 (iPad; iOS 11.4; Scale/2.00),ELXSmart/4.0.1 (iPad; iOS 11.4; Scale/2.00),Mozilla/5.0 (iPad; CPU OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79/Worklight/7.1.0.0 (4311995584)',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
form: { isAjaxRequest: 'true', x: 0.2348377558393847 },
jar: true,
json: true
}
This is odd output and looks like the old Frigidaire web service.
Please check the module version. You'll want > version 2.0.
I've changed the debug flag.
please update this module to version 2.1.0, then do DEBUG=frigidaire:* node demo.js devices
Not sure how to do the debug flag but here is the result for my dehumidifier, if that helps EDIT: figured it out had to do it like this through cmd
D:\Chrome Downloads\frigidaire-2.1.2\frigidaire-2.1.2>set DEBUG=frigidaire:*
D:\Chrome Downloads\frigidaire-2.1.2\frigidaire-2.1.2>node demo.js devices
starting up
frigidaire:lib init() +0ms
frigidaire:lib authStage1() +0ms
frigidaire:lib authStage1() - post() +1ms
frigidaire:lib authStage1() - end +2ms
frigidaire:lib init() - end +0ms
Getting Devices
frigidaire:lib getDevices() +1ms
frigidaire:lib getDevices() - auth is pending, reschedluing this call in 1000 +0ms
frigidaire:lib authStage1() - postCallback() +475ms
frigidaire:lib Acquired new sessionKey: BzuOUGOAJ3K7nhb6xsy60NOhljQutRoKYHXUh+OpmNcpegOwEri3E1ghpEYbkMXpUwabk/6W87ocOGX3ficG39Q8V+R9kADyD+vc0mqfNwWS5INwL7y6wX2Z4blXU32xeNg6t84jtFRmxpPdgcpsuL3ZG4Umi8Fl5Zum7nlNl9IgywY6PIFNOPFthOkLPF5hKfWoJUXQK8Rm6f4m5we/gdrzlZiWN1YT+YvPvAWzdN06S4wgLHt+XpxW7FknQHEhh1aibueFCkcIkNNa+rAvRK+UOKHS0P3QeSW4EBAfhlMT8OmPgaOT+dNO+lUHwgSNGTTF9O+q8Y+M2p/j3PiHOg== +0ms
frigidaire:lib init() -> authStage1 callback +1ms
frigidaire:lib getDevices() +0ms
frigidaire:lib get() - /user-appliance-reg/users/tlszach@gmail.com/appliances +1ms
frigidaire:lib get() - post auth stage +0ms
frigidaire:lib get() - end request callback +341ms
frigidaire:lib {
frigidaire:lib status: 'OK',
frigidaire:lib code: 'ECP0000',
frigidaire:lib message: 'success',
frigidaire:lib data: [
frigidaire:lib {
frigidaire:lib appliance_type: '950133061_00',
frigidaire:lib appliance_id: '02800213-443E070A26A5',
frigidaire:lib pnc: '950133061',
frigidaire:lib elc: '00',
frigidaire:lib sn: '02800213',
frigidaire:lib mac: '443E070A26A5',
frigidaire:lib cpv: '00',
frigidaire:lib nickname: 'Dehumidifier'
frigidaire:lib }
frigidaire:lib ]
frigidaire:lib } +0ms
frigidaire:lib [
frigidaire:lib {
frigidaire:lib appliance_type: '950133061_00',
frigidaire:lib appliance_id: '02800213-443E070A26A5',
frigidaire:lib pnc: '950133061',
frigidaire:lib elc: '00',
frigidaire:lib sn: '02800213',
frigidaire:lib mac: '443E070A26A5',
frigidaire:lib cpv: '00',
frigidaire:lib nickname: 'Dehumidifier'
frigidaire:lib }
frigidaire:lib ] +2ms
frigidaire:lib getDevices() - callback +1ms
frigidaire:lib getDevices() - callback() - getting telem for 02800213 +0ms
frigidaire:lib getTelem() - 02800213 +1ms
frigidaire:lib getDeviceIndex() - sn: 02800213 +0ms
frigidaire:lib found appliance match! +0ms
frigidaire:lib get() - /elux-ms/appliances/latest?pnc=950133061&elc=00&sn=02800213&mac=443E070A26A5 +1ms
frigidaire:lib get() - post auth stage +0ms
frigidaire:lib getTelem() - end +2ms
frigidaire:lib getDevices() +188ms
Got Devices
[
{
appliance_type: '950133061_00',
appliance_id: '02800213-443E070A26A5',
pnc: '950133061',
elc: '00',
sn: '02800213',
mac: '443E070A26A5',
cpv: '00',
nickname: 'Dehumidifier'
}
]
frigidaire:lib get() - end request callback +184ms
frigidaire:lib getTelemCallback() - end +0ms
I ran getTeleM and it seems like all the info I would expect came back just some missing their definitions, let me know if I can do anything else to help
Any chance of adding support for dehumidifiers?