simbaja / gehome

Python SDK for GE smart appliances
MIT License
45 stars 31 forks source link

Identify the following unknown Laundry ERD codes #3

Closed warrenrees closed 3 years ago

warrenrees commented 3 years ago

Trying to sort out the following ERD codes that I haven't had any luck on my Washer (GFW650)

0x201D - i've seen 00 and 01 values, primarily 00, been trying to figure out what option/setting/?? makes it flip to 01 0x2038 - Always been FF FF - typically a 'not supported' value 0x2040 - Always been FF - typically a 'not supported' value 0x2069 - multibyte value - currently 0000003404000300, i've also seen 00000004000200 , 0000001603000300, appears to change after a cycle but I haven't see/been able to correlate yet.

mhpetiwala commented 3 years ago

Continuing with the discussion from gekitchen and trying to identify the missing ERD codes from both GE washer and Dryer.

Here's the log file.

Rgds, -mo

ge-washer-dryer.log

warrenrees commented 3 years ago

Hi mo,

So been doing some digging and came up with the following, some don't apply to your model, but figured i'd write it down to have it somewhere if/when we get another data set.:

0x0035 - unittype? 00 00 00 02 (gfd55 / gfw55) on my gfw65 the unittype is 00 00 00 03. It'd be interesting to see a gfd55 model with electric (just saw your model is gas) and see which byte for fuel type changes, and what a gfd/gfw 85 look like. 0x201b - ExtendTumble 0x201c - unknown - 00 0x2020 - SelectedConnectCycle 0x2021 - ConnectCycleList 0x2022 - SheetUsageConfiguration? - 4byte array 00 00 00 00 - be interesting to play with this, i've seen 'extraLargeLoadSize, largeLoadSize, mediumLoadSize, timedDryerSheetsLoadSize - I'd hazard to guess that each byte correlates with a load size, 01 meaning on 00 meaning off, we'll just need to figure out which byte is which load size 0x2023 - SheetInventory - 2byte array 0x2041 - unknown - ff 0x2051 - unknown - ff 0x2052 - ExtendTumbleValidation - 00 03 0x2053 - ExtendTumbleStatus 00 0x206B - WasherLinkCycleCheck 0x206C - WasherLinkStatus 0x206E - WasherLinkControlEnable 0x206F - unknown - 00

mhpetiwala commented 3 years ago

That's great work!

Can't these codes be added as we go - so the initial framework captures these and add more to the ERD enums/list. This way at least get an integration for HA to manage/get status and automate notifications for GE SmartQ appliances.

Is there an available HA integration that can be enhanced with the washer dryer appliances? I had looked at the LG one in the past and something on similar lines would be helpful.

I will also dig into getting more info - I remember in the past having communicated with another person on HA forums as these GE SmartQ appliances use weird Chinese characters in their names when responding for DHCP Ack and it broke the Mikrotik integration (that I was able to fix by changing the char type) - and someone on that forum had a similar issue. Let me see if they can help provide more ERD info.

Rgds, -mo

warrenrees commented 3 years ago

With regard to HA integration, you can use https://github.com/simbaja/ha_components and it should bring in your Washer for you to setup some automations and notifications.

We'll need to confirm which setting and values correlate to the ERDs. The process I used to map out the Washer was I'd turn it on, change a setting, run the websocket example and see what changed. Rinse and repeat for the other unknown values.

I'm not sure which settings are on your dryer, but i'd be interesting in the 'Reduce static' button, ecodry, air fluff, damp alert to see if any of our unknowns change values.

Also making sure that the subcycle updates when going from Sense, Drying, Damp, Cool etc.

Some of these could also be the control lock (I haven't been able to get any of the unknowns to update on control lock), but the dryers have 'Check Vent" and "Check Filter", so I'm guessing one of these ERDs relate to those two.

With regard to testing - I've got my own test branch for this, if you want to use https://github.com/warrenrees/gehome and use the pr5 branch, we can do the development there and then I can submit the pull request once we have it sorted out.

mhpetiwala commented 3 years ago

Thank you - let me try changing some settings today/tomorrow evening after work and collect relevant data. Appreciate providing info on the integration will also try it out.

Appreciate your effort on this. Hopefully it'll get the GE appliances integrated into HA.

mhpetiwala commented 3 years ago

Collected more logs today with washer on/off and some cycles running, same for dryer...

ge_washer_dryer_on_off_codes.txt

warrenrees commented 3 years ago

Thanks Mo, it looks like the known values are working as expected, however the unknown values all remained the same throughout all of your tests. The washer is pretty much good except for the 4 unknown settings that I haven't been able to identify yet.

Were you trying different settings on the dryer with each of those logs?

warrenrees commented 3 years ago

It looks like your dryer has a 'My Settings' button - would you be able to go in there and see if you can change some settings and see if any of those unknown ERDs change (0x201c, 0x2022, 0x2023, 0x2041, 0x2051, 0x2052, 0x2053).

If you could also test with the Damp Alertand Small Load buttons and see if they make any difference in the ERDs.

You can leave the python script running and it'll display the changes in realtime, a little bit easier to see immediately if the settings make a change. For example:

DEBUG Setting ErdCode.LAUNDRY_WASHTEMP_LEVEL to Warm DEBUG Appliance state change detected in GeAppliance(D828C96E1773) (ErdApplianceType.WASHER). Updated keys: ErdCode.LAUNDRY_WASHTEMP_LEVEL DEBUG client - event = data_received(<19 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"item":{"applianceId":"D828C96E1773","erd":"0x2018","time":"2021-05-21T03:45:10.484Z","value":"00"},"resource":"/appliance/D828C96E1773/erd/0x2018","kind":"publish#erd","userId":"k7741h74bbphdrx"}', rsv1=False, rsv2=False, rsv3=False) DEBUG Setting ErdCode.LAUNDRY_RINSE_OPTION to --- DEBUG Appliance state change detected in GeAppliance(D828C96E1773) (ErdApplianceType.WASHER). Updated keys: ErdCode.LAUNDRY_RINSE_OPTION DEBUG client - event = data_received(<20 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"item":{"applianceId":"D828C96E1773","erd":"0x200A","time":"2021-05-21T03:45:10.484Z","value":"1D"},"resource":"/appliance/D828C96E1773/erd/0x200A","kind":"publish#erd","userId":"k7741h74bbphdrx"}', rsv1=False, rsv2=False, rsv3=False) DEBUG Setting ErdCode.LAUNDRY_CYCLE to Quick Wash DEBUG Appliance state change detected in GeAppliance(D828C96E1773) (ErdApplianceType.WASHER). Updated keys: ErdCode.LAUNDRY_CYCLE

Can you also turn on the extended tumble option and see if 0x2051/52/53 change?

Thanks!

Warren

tht2020 commented 3 years ago

This is great work! I have been searching for this for quite some time. I'd add SmartHQ somewhere to help find this integration eventually.

I have the following and am happy to help provide data with some guidance: GFD85GSPN0RS - GE Dryer GFW850SPN0RS - GE Washer C2S950P2M1S1 - GE Cafe Double Oven Range CEB515P2N1SS - GE Cafe Microwave

warrenrees commented 3 years ago

Good point tht, I'll update the README on this to include SmartHQ in order to make searching for this project easier.

On another note, that's great, we were looking for someone with different models to perform some testing on. Your dryer has Washer Link support, so it'd be great to get those ERDs sorted out.

I'm not sure if you have access to a linux box? If so, it should be fairly quick to get you setup with the development branch to test against. In the event that you don't have a linux box, no worries, I'm just trying to sort out what's needed to get the project going on that platform.

Thanks for your help!

Warren

tht2020 commented 3 years ago

I’ve got a raspberry I can provision. Happy to help how I can!

On May 22, 2021, at 12:29 AM, warrenrees @.***> wrote:

 Good point tht, I'll update the README on this to include SmartHQ in order to make searching for this project easier.

On another note, that's great, we were looking for someone with different models to perform some testing on. Your dryer has Washer Link support, so it'd be great to get those ERDs sorted out.

I'm not sure if you have access to a linux box? If so, it should be fairly quick to get you setup with the development branch to test against. In the event that you don't have a linux box, no worries, I'm just trying to sort out what's needed to get the project going on that platform.

Thanks for your help!

Warren

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

warrenrees commented 3 years ago

Sorry about the delay in response, excellent the Pi will work well.

You can start by cloning in my dev branch into the pi:

pi@gateway:~ $ git clone -b pr5 https://github.com/warrenrees/gehome

Next we'll need to copy the websocket_example.py from the examples directory into the gehome directory, and modify the line that reads:

from examples.secrets import USERNAME, PASSWORD

to be

from secrets import USERNAME, PASSWORD

We'll create a secrets.py in the gehome directory that contains: USERNAME = "" PASSWORD = ""

You may need to install pip for python3, the XML library and related python libraries:

pi@gateway:~ $ sudo apt-get install python3-pip libxslt-dev pi@gateway:~ $ pip3 install aiohttp bidict requests websockets slixmpp lxml humanize

We should then be able to run the websocket example via python3 websocket_example.py, if everything goes well it should start outputting stuff similar to:

pi@gateway:~/gehome $ python3 websocket_example.py DEBUG Using selector: KqueueSelector websocket_example.py:74: DeprecationWarning: The object should be created within an async function session = aiohttp.ClientSession() DEBUG Getting OAuth2 token DEBUG Client changed state: GeClientState.INITIALIZING to GeClientState.AUTHORIZING_OAUTH DEBUG Getting WS credentials DEBUG Client changed state: GeClientState.AUTHORIZING_OAUTH to GeClientState.AUTHORIZING_CLIENT INFO Starting GE Appliances client DEBUG Client changed state: GeClientState.AUTHORIZING_CLIENT to GeClientState.CONNECTING DEBUG client - state = CONNECTING DEBUG client - event = connection_made(<asyncio.sslproto._SSLProtocolTransport object at 0x803477610>) DEBUG client > Frame(fin=True, opcode=1, data=b'{"kind": "websocket#subscribe", "action": "subscribe", "resources": ["/appliance//erd/"]}', rsv1=False, rsv2=False, rsv3=False) DEBUG client > Frame(fin=True, opcode=1, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance", "id": "List-appliances"}', rsv1=False, rsv2=False, rsv3=False) DEBUG Client changed state: GeClientState.CONNECTING to GeClientState.CONNECTED DEBUG client - event = data_received(<49 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"kind":"websocket#subscribe","success":true}', rsv1=False, rsv2=False, rsv3=False) DEBUG client - event = data_received(<241 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"kind":"websocket#api","id":"List-appliances","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance"},"success":true,"code":200,"body":{"kind":"appliance#applianceList","userId":"k7741h74bbphdrx","items":[{"applianceId":"D828C96E1773","type":"Clothes Washer","brand":"Unknown","jid":"d828c96e1773_k7741h74bbphdrx","nickname":"Washer","online":"ONLINE"}]}}', rsv1=False, rsv2=False, rsv3=False) DEBUG D828C96E1773 marked available DEBUG Adding appliance D828C96E1773 DEBUG Requesting update for client D828C96E1773 DEBUG client > Frame(fin=True, opcode=1, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C96E1773/erd", "id": "D828C96E1773-allErd"}', rsv1=False, rsv2=False, rsv3=False) DEBUG Requesting features for client D828C96E1773 DEBUG client > Frame(fin=True, opcode=1, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C96E1773/feature", "id": "Request-features"}', rsv1=False, rsv2=False, rsv3=False) DEBUG Registering update callback for GeAppliance(D828C96E1773) (Unknown Type) DEBUG client - event = data_received(<16 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"kind":"websocket#connect","success":true}', rsv1=False, rsv2=False, rsv3=False) DEBUG client - event = data_received(<52 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"resource":"/appliance//erd/","kind":"websocket#subscription","success":true,"change":"ADDED"}', rsv1=False, rsv2=False, rsv3=False) DEBUG client - event = data_received(<348 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"kind":"websocket#api","id":"D828C96E1773-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C96E1773/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"k7741h74bbphdrx","applianceId":"D828C96E1773","items":[{"erd":"0x0001","value":"0C47465736353053504E31534E00000000000000000000000000000000000000","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0002","value":"0941533335333338314E00000000000000000000000000000000000000000000","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0008","value":"02","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0035","value":"00000003","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0100","value":"00000B1A","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0101","value":"00000000","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0102","value":"00","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0103","value":"0100026A","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0104","value":"0100026A","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x0105","value":"00","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x2000","value":"00","time":"2021-05-25T08:29:38.749Z"},{"erd":"0x2001","value":"00","time":"2021-05-24T23:07:07.250Z"},{"erd":"0x2002","value":"00","time":"2021-05-24T23:11:36.418Z"},{"erd":"0x2007","value":"0CCF","time":"2021-05-25T08:29:39.585Z"},{"erd":"0x200A","value":"1C","time":"2021-05-25T08:29:38.749Z"},{"erd":"0x2010","value":"0000","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x2012","value":"01","time":"2021-05-25T00:28:26.063Z"},{"erd":"0x2013","value":"00","time":"2021-05-25T08:29:40.750Z"},{"erd":"0x2015","value":"02","time":"2021-05-24T10:16:13.274Z"},{"erd":"0x2016","value":"14","time":"2021-05-25T08:29:39.585Z"},{"erd":"0x2017","value":"02","time":"2021-05-25T08:29:40.750Z"},{"erd":"0x2018","value":"00","time":"2021-05-25T08:29:40.750Z"},{"erd":"0x201D","value":"00","time":"2021-05-24T02:09:28.752Z"},{"erd":"0x2038","value":"FFFF","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x2039","value":"00","time":"2021-05-24T23:21:39.310Z"},{"erd":"0x2040","value":"FF","time":"2021-05-18T04:49:36.491Z"},{"erd":"0x2069","value":"0000005004000300","time":"2021-05-24T23:07:07.250Z"}]}}', rsv1=False, rsv2=False, rsv3=False) DEBUG Setting ErdCode.MODEL_NUMBER to GFW650SPN1SN DEBUG Setting ErdCode.SERIAL_NUMBER to AS353381N DEBUG Setting ErdCode.APPLIANCE_TYPE to ErdApplianceType.WASHER DEBUG Setting 0x0035 to b'\x00\x00\x00\x03' DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION to 0.0.11.26 DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE to 0.0.0.0 DEBUG Setting ErdCode.ACM_UPDATING to False DEBUG Setting ErdCode.APPLIANCE_SW_VERSION to 1.0.2.106 DEBUG Setting ErdCode.APPLIANCE_SW_VERSION_AVAILABLE to 1.0.2.106 DEBUG Setting ErdCode.APPLIANCE_UPDATING to False DEBUG Setting ErdCode.LAUNDRY_MACHINE_STATE to Off DEBUG Setting ErdCode.LAUNDRY_SUB_CYCLE to --- DEBUG Setting ErdCode.LAUNDRY_END_OF_CYCLE to False DEBUG Setting ErdCode.LAUNDRY_TIME_REMAINING to 0:54:39 DEBUG Setting ErdCode.LAUNDRY_CYCLE to Normal DEBUG Setting ErdCode.LAUNDRY_DELAY_TIME_REMAINING to 0:00:00 DEBUG Setting ErdCode.LAUNDRY_DOOR to Closed DEBUG Setting ErdCode.LAUNDRY_WASHER_DOOR_LOCK to False DEBUG Setting ErdCode.LAUNDRY_WASHER_SOIL_LEVEL to Normal DEBUG Setting ErdCode.LAUNDRY_WASHER_WASHTEMP_LEVEL to Warm DEBUG Setting ErdCode.LAUNDRY_WASHER_SPINTIME_LEVEL to Medium DEBUG Setting ErdCode.LAUNDRY_WASHER_RINSE_OPTION to --- DEBUG Setting ErdCode.LAUNDRY_UNKNOWN201D to 0 DEBUG Setting ErdCode.LAUNDRY_UNKNOWN2038 to 65535 DEBUG Setting ErdCode.LAUNDRY_REMOTE_STATUS to False DEBUG Setting ErdCode.LAUNDRY_UNKNOWN2040 to 255 DEBUG Setting ErdCode.LAUNDRY_WASHER_UNKNOWN2069 to 343664493312 DEBUG Got initial appliance type for GeAppliance(D828C96E1773) (ErdApplianceType.WASHER) DEBUG Appliance state change detected in GeAppliance(D828C96E1773) (ErdApplianceType.WASHER). Updated keys: ErdCode.MODEL_NUMBER, ErdCode.SERIAL_NUMBER, ErdCode.APPLIANCE_TYPE, 0x0035, ErdCode.WIFI_MODULE_SW_VERSION, ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE, ErdCode.ACM_UPDATING, ErdCode.APPLIANCE_SW_VERSION, ErdCode.APPLIANCE_SW_VERSION_AVAILABLE, ErdCode.APPLIANCE_UPDATING, ErdCode.LAUNDRY_MACHINE_STATE, ErdCode.LAUNDRY_SUB_CYCLE, ErdCode.LAUNDRY_END_OF_CYCLE, ErdCode.LAUNDRY_TIME_REMAINING, ErdCode.LAUNDRY_CYCLE, ErdCode.LAUNDRY_DELAY_TIME_REMAINING, ErdCode.LAUNDRY_DOOR, ErdCode.LAUNDRY_WASHER_DOOR_LOCK, ErdCode.LAUNDRY_WASHER_SOIL_LEVEL, ErdCode.LAUNDRY_WASHER_WASHTEMP_LEVEL, ErdCode.LAUNDRY_WASHER_SPINTIME_LEVEL, ErdCode.LAUNDRY_WASHER_RINSE_OPTION, ErdCode.LAUNDRY_UNKNOWN201D, ErdCode.LAUNDRY_UNKNOWN2038, ErdCode.LAUNDRY_REMOTE_STATUS, ErdCode.LAUNDRY_UNKNOWN2040, ErdCode.LAUNDRY_WASHER_UNKNOWN2069 DEBUG Appliance state change detected in GeAppliance(D828C96E1773) (ErdApplianceType.WASHER) DEBUG client - event = data_received(<86 bytes>) DEBUG client < Frame(fin=True, opcode=1, data=b'{"kind":"websocket#api","id":"Request-features","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C96E1773/feature"},"success":true,"code":200,"body":{"kind":"appliance#applianceFeature","userId":"k7741h74bbphdrx","applianceId":"D828C96E1773","features":["CLOTHES_WASHER_V1_SMART_DISPENSE","CLOTHES_WASHER_V1_WASHER_LINK"]}}', rsv1=False, rsv2=False, rsv3=False) DEBUG Received feature CLOTHES_WASHER_V1_SMART_DISPENSE for D828C96E1773 DEBUG Received feature CLOTHES_WASHER_V1_WASHER_LINK for D828C96E1773

Since you have a 850 model, I'd be interested if you could setup the WasherLink and see if I got the codes right and what the various settings are and do. I typically change a setting on the washer/dryer and then have the websocket running while i change it and see if any of the UNKNOWN codes change.

Hope this gets you going...

Warren

mhpetiwala commented 3 years ago

This is how I ran it from my Pi. If you have Windows 10 and have WSL running you can do the same from there too. All the required packages can be installed in WSL Ubuntu in the same manner as explained by @warrenrees above, using PIP.

Mr-jreeves commented 3 years ago

I have this running on a pi as well ... i have appliances: Dryer: GTD75ECSL0WS Washer: GTW750CSL0WS

Hope I can help too.

James

warrenrees commented 3 years ago

Thanks James,

If you want to provide a log of the output plus some of the testing is be interested in seeing which erd codes show up for both of those. Then we can try to sort out the missing ones.

Warren

ChevySSinSD commented 3 years ago

Hi, @warrenrees, jumping on here per your request to try to help with dryer ERD codes.

ChevySSinSD commented 3 years ago

Here is my full log file running the latest updates from 2 days ago. I've copied over the section from the clothes dryer. updated.log

DEBUG Setting ErdCode.MODEL_NUMBER to GFD65GSPN0SN DEBUG Setting ErdCode.SERIAL_NUMBER to SR134888G DEBUG Setting ErdCode.APPLIANCE_TYPE to ErdApplianceType.DRYER DEBUG Setting ErdCode.UNIT_TYPE to ErdUnitType.TYPE_UNKNOWN04 DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION to 0.0.11.26 DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE to 0.0.0.0 DEBUG Setting ErdCode.ACM_UPDATING to False DEBUG Setting ErdCode.APPLIANCE_SW_VERSION to 1.0.3.82 DEBUG Setting ErdCode.APPLIANCE_SW_VERSION_AVAILABLE to 0.0.0.0 DEBUG Setting ErdCode.APPLIANCE_UPDATING to False DEBUG Setting ErdCode.LAUNDRY_MACHINE_STATE to Off DEBUG Setting ErdCode.LAUNDRY_SUB_CYCLE to --- DEBUG Setting ErdCode.LAUNDRY_END_OF_CYCLE to False DEBUG Setting ErdCode.LAUNDRY_TIME_REMAINING to 1:00:00 DEBUG Setting ErdCode.LAUNDRY_CYCLE to Timed Dry DEBUG Setting ErdCode.LAUNDRY_DELAY_TIME_REMAINING to 0:00:00 DEBUG Setting ErdCode.LAUNDRY_DOOR to Closed DEBUG Setting ErdCode.LAUNDRY_DRYER_UNKNOWN201C to 1 DEBUG Setting ErdCode.LAUNDRY_UNKNOWN201D to 0 DEBUG Setting ErdCode.LAUNDRY_DRYER_UNKNOWN2022 to 65793 DEBUG Setting ErdCode.LAUNDRY_DRYER_UNKNOWN2023 to 53 DEBUG Setting ErdCode.LAUNDRY_UNKNOWN2038 to 65535 DEBUG Setting ErdCode.LAUNDRY_REMOTE_STATUS to False DEBUG Setting ErdCode.LAUNDRY_UNKNOWN2040 to 255 DEBUG Setting ErdCode.LAUNDRY_UNKNOWN2041 to 255 DEBUG Setting ErdCode.LAUNDRY_DRYER_DRYNESSNEW_LEVEL to --- DEBUG Setting ErdCode.LAUNDRY_DRYER_TEMPERATURENEW_OPTION to Low DEBUG Setting ErdCode.LAUNDRY_DRYER_UNKNOWN2051 to 255 DEBUG Setting ErdCode.LAUNDRY_DRYER_UNKNOWN2052 to 3 DEBUG Setting ErdCode.LAUNDRY_DRYER_TUMBLENEW_STATUS to Disabled DEBUG Setting ErdCode.LAUNDRY_DRYER_UNKNOWN206F to 0 DEBUG Got initial appliance type for GeAppliance(D828C94FC70D) (ErdApplianceType.DRYER)

warrenrees commented 3 years ago

Awesome, there's no other unknowns that we're not aware of. The hard part now is going to be trying to identify when these unknown values change and what the settings are that caused this.

It's going to require a bit of trial and error on your end, what I did for the washer was have a laptop by the washing machine, having the python script running and making changes (settings, opening door, etc), the values typically update within 2-3 seconds, if any of the UNKNOWN values update, make a note of what you changed, and ensure that you can reproduce it.

It's going to be a bit painful, but unfortunately at this point it's the only path going forward.

Let me know if you need any assistance.

Thanks!

Warren

ChevySSinSD commented 3 years ago

UNKNOWN2052 appears to be ecoDry status. Code is set to 3 when ecoDry is disabled, code is set to 0 when ecoDry is enabled

ChevySSinSD commented 3 years ago

UNKNOWN201c appears to be the level sensor enabled / disabled status. 201c is 1 when timed dry, refresh, dewrinkle, or air fluff is selected (none of those modes use the level sensor). 201c is 0 all other times.

ChevySSinSD commented 3 years ago

UNKNOWN 2023 is Dryer Sheets Remaining

warrenrees commented 3 years ago

Thank you very much for all your work on this.

I had seen that dryer sheets remaining in the app. What exactly is that?

I'll hop on tonight and do some pull requests for the information here and I'll update the dish washer ones too.

Warren

ChevySSinSD commented 3 years ago

UNKNOWN2022 is the dryer sheet usage. 2 values: small load cycle and large load cycle

The app decrements your dryer sheets remaining, and if you have notifications set up, it will notify when you are low to buy more. The dishwashers have the same setup for detergent pods and even have the option to set up an amazon dash link to automatically ship more pods to you. No amazon dash for the dryer sheets for some reason.

ChevySSinSD commented 3 years ago

Thank you guys for doing all the hard work! I wouldn't even know where to begin on the programming, so I'm happy to be a guinea pig and help in the ways I can! (I'm a chemical engineer by education, but been working in non-technical role in biotech for 10 years. I learned C++ in high school, had one semester of C in college, and did some PLC ladder logic a looong time ago at work, I never even saw Python until I got into home assistant, and I've never been a programmer, except for some HTML, CSS here and there)

ChevySSinSD commented 3 years ago

Had this error in Home Assistant for the first time today: Logger: homeassistant Source: helpers/entity.py:361 First occurred: 5:02:18 PM (1 occurrences) Last logged: 5:02:18 PM

Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 251, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 361, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for

warrenrees commented 3 years ago

Are you running the latest gehomesdk code on the homale assistant? There were breaking changes that I made that hasn't been updated in the ha component yet.

ChevySSinSD commented 3 years ago

No, I am not. I’m running the latest SDK on a separate laptop

simbaja commented 3 years ago

has this reoccurred? If so, any chance you can change your log level in home assistant for this component (see https://www.home-assistant.io/integrations/logger/) so we can get some additional debug information?

warrenrees commented 3 years ago

Hey @SSinSD, would you be able to grab the latest from simbaja and run a test? It looks like GE updated/added some additional ERDs for the my washer, i'm curious if there are new ERD's for the dryer too. I've identified the following:

203c == unknown (02) 203d == appears to be related to smart dispense, 2 byte values, trying to figure out values properly, so far I have found: first byte -> smart dispense -> less --> 0E (no prewash selected) --> 07 (prewash selected) -> smart dispense -> more --> 06 (no prewash selected) --> 03 (prewash selected) -> smart dispense -> auto --> 08 (no prewash selected) --> 04 (prewash selected) -> smart dispense -> disabled --> 08 (prewash requires smart dispense turned on)

second byte == appears to be incrementing with any changes

-> smart dispense -> less == (0E5A) (0E62) (0E66) (076B - prewash) (0E70) -> smart dispense -> more == (065B) (0663) (0667) (036C - prewash) -> smart dispense -> auto == (085C) (0864) (0868) (046D - prewash) -> smart dispense -> disabled == (085D) (0865) (0869) (086F - prewash)

203e == unknown (F401) 2054 == unknown (00) 2055 (LAUNDRY_WASHER_TIMESAVER) == time saver (on / off) 2057 == unknown (00) 2058 (LAUNDRY_WASHER_POWERSTEAM) == (on / off) 205b (LAUNDRY_WASHER_PREWASH) == pre wash (on / off) 2060 == unknown (00) 2061 (LAUNDRY_WASHER_TUMBLECARE) == tumble care (on / off) 2070 == unknown (0002) 2072 == unknown (00)

simbaja commented 3 years ago

I've also created a "dev" version of the HA component (on a "dev" branch) and have integrated the changes so far into there... I haven't even tried to run it yet, so it may have issues, but it may also resolve some (if it works at all).

mhpetiwala commented 3 years ago

I've also created a "dev" version of the HA component (on a "dev" branch) and have integrated the changes so far into there... I haven't even tried to run it yet, so it may have issues, but it may also resolve some (if it works at all).

I can give it a shot - can I just use the HA component like any other integration and use the gehome module along with it? Any special instructions to use it on HA (I've the venv config so will pull in the integration manually without HACS).

ChevySSinSD commented 3 years ago

Apologies, I was out of town last week for the 4th of July holiday. I'll download all the updates and take a look tonight

Hey @SSinSD, would you be able to grab the latest from simbaja and run a test? It looks like GE updated/added some additional ERDs for the my washer, i'm curious if there are new ERD's for the dryer too. I've identified the following:

203c == unknown (02) 203d == appears to be related to smart dispense, 2 byte values, trying to figure out values properly, so far I have found: first byte -> smart dispense -> less --> 0E (no prewash selected) --> 07 (prewash selected) -> smart dispense -> more --> 06 (no prewash selected) --> 03 (prewash selected) -> smart dispense -> auto --> 08 (no prewash selected) --> 04 (prewash selected) -> smart dispense -> disabled --> 08 (prewash requires smart dispense turned on)

second byte == appears to be incrementing with any changes

-> smart dispense -> less == (0E5A) (0E62) (0E66) (076B - prewash) (0E70) -> smart dispense -> more == (065B) (0663) (0667) (036C - prewash) -> smart dispense -> auto == (085C) (0864) (0868) (046D - prewash) -> smart dispense -> disabled == (085D) (0865) (0869) (086F - prewash)

203e == unknown (F401) 2054 == unknown (00) 2055 (LAUNDRY_WASHER_TIMESAVER) == time saver (on / off) 2057 == unknown (00) 2058 (LAUNDRY_WASHER_POWERSTEAM) == (on / off) 205b (LAUNDRY_WASHER_PREWASH) == pre wash (on / off) 2060 == unknown (00) 2061 (LAUNDRY_WASHER_TUMBLECARE) == tumble care (on / off) 2070 == unknown (0002) 2072 == unknown (00)

ChevySSinSD commented 3 years ago

Here is a dump of the log with the latest SDK updates: updated.log

simbaja commented 3 years ago

Looks like there's a minor issue with the dryer sheet usage configuration, but other than that, everything else is looking pretty good I think. @warrenrees, can you look into that one?

@SSinSD, I think that all of these codes are actually integrated into the dev branch of the HA component so it should all be in there too (hopefully). My next task is to get the control for Advantium into the SDK, then on to new requests I think. Thanks for all your help in trying to figure these out.

warrenrees commented 3 years ago

Thank you SSinSD - I'd just like to confirm that you have smart dispense set to 'more' based on the value in your log?

@simbaja yep already on it - I took out the timedDry from the converter - looks like there's only 4 entries (i had 5). I've also updated the unknown ERDs from the dryer and added the appropriate WASHER_ for the washer only ERDs above after confirming with SSinSD's data. I'll push to the master and we should be good for a bit until i can figure out the rest.

warrenrees commented 3 years ago

Ahh I see what I did with the dryer sheet configuration, should be fixed. Also added preliminary smart dispense values. #17

ChevySSinSD commented 3 years ago

Thank you SSinSD - I'd just like to confirm that you have smart dispense set to 'more' based on the value in your log?

@simbaja yep already on it - I took out the timedDry from the converter - looks like there's only 4 entries (i had 5). I've also updated the unknown ERDs from the dryer and added the appropriate WASHER_ for the washer only ERDs above after confirming with SSinSD's data. I'll push to the master and we should be good for a bit until i can figure out the rest.

Correct, we have the smart dispense set to more

warrenrees commented 3 years ago

We've identified most of the erds and now have remote power off and remote start going so I'm going to close this issue.

mhpetiwala commented 3 years ago

Can we use this integration with HA and all the ERC codes found till date.. if so any specific branch or something or are all the changes now part of mainline? thx for all the great work you have been doing...

simbaja commented 3 years ago

Most of these changes have been incorporated into the "dev" branch. I think that @warrenrees has a few more sensors to add based on some recent SDK updates. Feel free to give the dev branch a shot. Hopefully we'll merge dev into the main branch this weekend (assuming we can get the functionality in place).