-
Notifications
You must be signed in to change notification settings - Fork 232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Other Packets #39
Comments
I've been sending custom packets too, and found similar. I have a branch with some of this that I need to push up once I merge in latest master, which I will try and get up today. |
I've found that it responds to the following "command types" or "info types" (whatever we want to call byte 5!):
I have not been able to find powerful, long or isave mode, however I think iSave is really just a saved set of settings so I doubt anything will be in the packets. I've tried command bytes from I have a commit here that checks all 6 of the bytes, and actions the "operating" status byte (command I will get timer info sorted next, and prepare a PR. |
@kayno, so the timer bytes are only for reading right now? No setters yet? |
@SwiCago yes only reading. I am looking at setting now, but not sure where to start! The "command" (5th bytes) packets don't match for settings, i.e. when you read settings it's So the dilemma I see - if I just start randomly setting the command byte and passing in timer data in the bytes where it's read, I might inadvertently set something else, and who knows what. It could have test modes, maintenance modes, all kinds of things that I may not what to activate!! |
@kayno yes, that might be the case, however powering off for 15min will clear any lock out settings/modes...i locked myself out of one of my units. Turned the power off, next day all was good again. |
@SwiCago Yes it uses the cn105 port. From what I have seen so far is sends the same commands and uses the same responses that the library and Kumo cloud uses. |
@lekobob I will wait until you capture what the MHK1 sends to set the timers then. Removes any risk of sending a bad packet!! thanks :) |
@lekobob @kayno I just tried Kumo Cloud app again, it features programs for single zone and multiple zones. However I never saw it send anything to the kumo cloud device. I suspect it is stored on the cloud service and through periodically polling of the server, the device gets the command to set what ever the program was setup for. I did an event to turn on in fan mode, all it did as issue that command withing a few seconds of the set time. The MHK1 does not use internet, but it wouldn't surprise me if it just stores the events setup in its memory and not on the heatpump, like any other conventional thermostat would. But am eager to see what you see. |
@kayno, I think @lekobob deiscovered another Programming Setter Byte The remote temperate is very helpful for the ducted units, as their internal sensors are not room temperature and pretty much useless. In winter, mine can read 10C as it is pretty cold in the attic, but room is much warmer. Now in theory we could support remote temperature sensors and MQTT could relay it to the HP |
@lekobob, you could test your 0x05 theory by removing the comms wire from indoor to outdoor unit. It should throw 6840,6841,6844 or 6845 |
@SwiCago When I have some time I was planning on doing that. On another note, I watched the 0x06 type return packet and found that byte 8 seems to return either the coil temperature or the difference between return air and output air. I see if fluctuate up when the power output is higher and down when the power goes down. |
@lekobob can you post the initial connect packet that the MHK1 sends please? |
@lekobob, when the mhk1 sends the 0x07 + temperature, how do you get the hp to use internal temp again? |
@SwiCago The MHK1 has a setting to change the sense location back to the indoor unit. When I change that setting the MHK1 sends: |
@kayno |
@lekobob @kayno Sent So if I send a remote temp of 0x00, it reverts to what the HP reads, first temp byte is prior reading and second is current reading. And as lekebob mentions, it will revert back to internal sensors after a period of timeout. |
@kayno @lekobob, not sure of the best way to incorporate sending Remote Temperature to the HeatPump, as it would require byte 6 to be changed from 0x01 to 0x07...And as lekebob said it returns the change on info Temp 0x03, which does not necessarily mean remote temp sensor. Also, since this is not a wanted setting, it should not be part of that struct. |
@kayno @lekobob, I made a first version of setting remote Temperature via the MQTT sketch. EDIT: setting value to 0x00, does not make it revert. It defaults to 8°C = 0x90, so far only a power cycle or loss of connection makes it revert. NOt sure if there is a magic byte to make it read internal sensors again. I guess in theory it wouldn't expect that, as when something sends temp data, it expects it to always send temp data. So a timeout of sorts or power cycle would make it revert. |
@lekobob @kayno Got it, if I send So to set remote temp, you send I am updating my test branch |
What is this remote temp about? |
@schotime it lets you use a remote temperature, instead of HeatPump internal sensor |
I see. That's pretty cool. |
@lekobob figured out how to turn it on, and I just figured out how to turn it back off again. |
@lekobob thanks for the connect packets. I had a theory that maybe 0x07 would appear in there, but not to be. Interesting that it sends two different short connect packets, and that it also gets a short 0x7a reply (I am assuming that the 4 packets are sent, received, sent, received?) |
@lekobob i didnt see your edit where you mention 0x80 being sent to use internal sensor. I saw you mention it was sent every second. What happens if it stops sending 0x80, does it stay reverted to internal sensors? I'll have to try that out as well and send 0x80 just once and see if it stays reverted. If not, I know the signal i found reverts it. 0x80 is 0°C, which would be an invalid value...maybè it does that on purpose, so internal sensors are used, until it sends a valid value??? In any case very interesting stuff we are discovering here |
given my unit is (what we call here) a "split system" (outdoor compressor unit, indoor wall mounted head unit) I haven't given much thought to using an external source for room temperature. However with just a little thought, I am surprised that the ducted units would actually use the temperature of wherever the compressor unit is installed (e.g. an attic) to moderate their operation! Surely they would ALWAYS use a sensor that was in a room being heated/cooled? What am I overlooking here!? |
Sometimes where that sensor is placed can be cooled quicker than other parts of the house so you may want to set the temp to somewhere else. |
So I ordered a 36" extension cable, so I can build a new packet sniffer for between official kumo cloud device and HP unit. We'll see if I can figure out the installer settings packets. |
FYI in some recent documentation I read "Energy monitoring |
@iclems , when I get rolling again with packet dumps, I'll see if I can find that too, but that already might be apart of the packets that tell you compressor frequency and such. In any case, for me personally I do not care about energy stats. If I need to heat or cool, what difference does it make if I know how much was consumed? For high rises it could make sense, to find out which tenant is over using the system more than others, but there are other ways to do that too. |
Makes sense. I guess for me it’s about learning the true cost of using it
versus not for average temperatures, and also of different modes (auto vs
manually turning it on / off)
Le sam. 18 janv. 2020 à 15:39, SwiCago <[email protected]> a écrit :
@iclems <https://github.com/iclems> , when I get rolling again with
packet dumps, I'll see if I can find that too, but that already might be
apart of the packets that tell you compressor frequency and such. In any
case, for me personally I do not care about energy stats. If I need to heat
or cool, what difference does it make if I know how much was consumed? For
high rises it could make sense, to find out which tenant is over using the
system more than others, but there are other ways to do that too.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#39?email_source=notifications&email_token=AAIROMRRRAQVXID7NNOIZCTQ6MIA5A5CNFSM4DCLWMM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJJZUXI#issuecomment-575904349>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAIROMSC3SESI67BT4WE57LQ6MIA5ANCNFSM4DCLWMMQ>
.
--
Clément
|
I think what would be useful is if the protocol was fully documented then others who may want to write code could use it. I know personally I have used your code as a reference when writing my own code. |
Greetings all from France ! |
Hi Folks, It looks like there's another github repo at m000c400/Mitsubishi-CN105-Protocol-Decode that's had a fair bit of work in decoding some of the packet types, including some of the ones this issue was originally raised for. Might be worth a look to see if it has anything useful that could be added to the library? |
Hi @SwiCago / @luiscgalo, have you had any progress with controlling the function settings through CN105? |
Special Function packets that have been decoded are as follows mosquitto_pub -t 'heatpump/set' -m '{"custom":"42 01 30 10 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"}' I pulled these while the Unit was off. So in my case all have value Zero. I will when I have time again, see what they are when the unit is on. To set. you would send (excludes FC and chksum byte) So say you wanted to just change function 27 to STOP Still a work in prog and need to confirm a few things first, but it looks promising |
Thanks @SwiCago. Regarding functions 11 and 23, on air handles with back up heat strips they control how the strips function (refer to https://www.mitsubishitechinfo.ca/sites/default/files/SH_PVA-A12_42AA7_201812.pdf page 21), I've already tested this on my air handler: 11=1, 23=1: No backup strip present I also tested my air handler with packet 09/standby, this is what I'm seeing (this disagrees with the first post here). In all cases below my thermostat was set to heating mode. I'd have to wait until summer to test these when the unit is in cooling mode :-)
See sample capture:
|
Also, for what it is worth this document https://www.mitsubishitechinfo.ca/sites/default/files/IM_PVA_A12_42AA7_PA79D213H09.pdf lists the function codes for PVA air handlers, page 22: 01/101: Power failure auto restart |
Hi everyone, Very nice information provided regarding function settings change via CN105 link! To be honest I was not able to move forward with investigation due to lack of time and because I don't have a controller such MHK1 that is able to change those settings via CN105 so that I can capture the exchanged packets. However, based on your captured data I will try to make some experiments soon... We keep in touch. |
So my initial tests show that Attic units accept commands that mhk1 would send, but high-wall units ignore them and return values of 0 for all functions. Fan shut off for cooling would have been nice on high-walls, since the only way to turn off the fan is by turning of the unit. |
There are actually jumpers on the main board for the wall units that can be cut to turn the fan off automatically when the setpoint is reached. See application note 3048 on my link drive. |
Hi @SwiCago, just recently joined in. |
Hey all, first of all thanks so much for creating this library. I've been using it with my Mitsubishi split systems for many months now without issue. For the record, the model numbers of those units are MSZ-AP50VGD and MSZ-AP71VGD. If you want to add them to the supported models list, they work perfectly with this library. A few days ago I got a Mitsubishi 4-zone ducted AC system installed in the attic. This is quite different to the regular split systems, but uses the same connector as the CN105 that's present in the split systems. I was glad to find that the HeatPump library is mostly compatible with this system too, but lacks the ability to control the individual zones. After some experimenting I was able to find the right commands to control the zones so I thought I'd share the info here. The unit in question is a PAC-ZC40L-E Zone Controller. It's basically a standalone circuit board in a box which acts as a front end, sending commands to a separate heat pump unit (a PEAD-M71JAAD unit) to control fan and compressor functions, and it has individual cables connected to actuators in the ducts to open and close individual zones. The unit I have is a 4 zone unit, but there are near-identical units that can control up to 8 zones. Obviously with a ducted system there are no vane or swing settings, but the on/off, mode selection, fan speed and temperature controls of the HeatPump library all work straight out of the box. The command type to open and close individual zone ducts is 0x15. Here is working code that prepares the packet correctly to control individual zone actuators:
Reading back the zones is very similar, the packet type is 0x15. To get regular updates for the active zones I just appended the value 0x15 to the end of the INFOMODE array, then added another case statement in the readPacket method:
For my use case I've basically just added 2 new methods to the HeatPump class: getZoneState and setZoneState. I'm using this library to integrate with ESPHome, which in turn integrates with Home Assistant. I also modified that library to expose the getZoneState and setZoneState methods, then I use a template switch with a custom lambda snippet in the ESPHome YAML file to create toggles for each of the zones. ESPHome YAML excerpt:
The end result in Home Assistant looks like this: Not sure how many people this will help as searching online turned up nothing, but since my trial and error ended up working out well I thought I'd share this here. I might submit a PR if there's any interest. This at least can serve as a record of command type 0x15 which is currently listed as unknown in the Mitsubishi-CN105-Protocol-Decode repo. |
Interesting work. I do not have a multiroom unit, but appreciate the work that you've put into extending this library for others to use :) |
@matthandel , I know you posted the zone vent code a while back. Do you you think you can add the code to the library via a PULL and I can review it and merge it. It might be a help for others with an attic unit that uses Zoned vents. |
Just sharing that I hooked up a kumo adapter (that was on a small AP I made just for this) and I have a Saleae logic analyzer that I put on the gnd, tx, rx and parsed the sentences. You can see my raw info here https://github.com/echavet/MitsubishiCN105ESPHome/wiki/Dictionary-of-Messages-on-CN105-Serial working on organizing it and making sense of it. Much like the work done here there the main commands (byte 5) are similar to what others have found, but the extra settings I am seeing are different. |
In the interest of keeping everything combined (and since I think we're doing work in multiple places), I do want to raise that Sammy1am's GitHub repo also has an active wiki of information and packet captures. The Gitter (and Sammy's Discord) also contain some extra information sources as well as some more esoteric data sources that may be of value for future projects. |
I have been doing some experimenting with my heat pump. I found if you send a request packet (0x42) with a 0x09 in byte 5 (0xfc is 0) you get a packet with a few info bytes. Here is what I found so far.
Examples:
fc 62 01 30 10 09 00 00 00 01 01 00 00 00 00 00 00 00 00 00 00 52
fc 62 01 30 10 09 00 00 00 03 02 00 00 00 00 00 00 00 00 00 00 4f
fc 62 01 30 10 09 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 4c
fc 62 01 30 10 09 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 52
Byte 8:
0x04 is preheating
0x08 is standby or waiting, In a multi head system if others are already heating and one wants to cool it goes to this mode.
Byte 9: Heating or cooling stage.
0x01 to 0x04, in heating 0x01 is lowest power 0x05 is highest output
Byte 10:
Only in "Auto" mode is shows what the unit is doing
0x01 is cool
0x02 is heat
In the examples above #1 is Auto mode calling for low cooling
#2 is Auto mode calling for 3rd stage heating
#3 is Waiting (other units in cool while calling for heat)
#4 is Heating mode at stage 2. Looks the same for cooling mode at stage 2
I also purchased a MHK1 thermostat for one of my units to figure out how it works. Because you can set it up to sense temperature at the thermostat, it sends an "external room temp" packet.
It looks like this:
fc,41,01,30,10,07,01,00,ad,00,00,00,00,00,00,00,00,00,00,00,00,c9
Byte 8 is the room temp in the normal hi resolution formula ((n -128)/2)= deg c
the unit responds with:
fc,61,01,30,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,5e
For the most part the thermostat send the same commands for power, fan, vane and such. It never uses "Auto" mode, it figures out the temp difference and sets the unit in cool or heat accordingly, and sends a setpoint for each.
Lastly, there is a byte 5 0x04 info packet that can be requested, I think it is a error information packet. For me it always responds with 0x80 in byte 9. Based on this 0x80 is "normal operation" . I have no way to test this, so it is only speculation. My thermostat requests that packet constantly.
The text was updated successfully, but these errors were encountered: