PaulS
Well-known member
Thanks for the photo's and the whole PDF.
I checked EBAY for a HVH50 unit in Europe but 460 euro's is too much for only satisfying my curiosity...
Paul
I am relying on the work done by Open Inverter and their successful engagement of the heater and hot water in STM32. However, I think if we wanted to go back to scratch and do this the same way they did, we would need to write a sketch to do what they did:
That may well be the only way to get out of this impasse but it's a LOT of reverse engineering stuff to do. And your units may even react differently...So it seems that units firmware has been altered for the OEM. It runs on 9600 (as opposed to 19200 in the manual) and replies to IDs 22 and 23 (PID 0xD6 and 0x97) as opposed to IDs 24 and 40. Now remains the question which one is the control ID (35 in the manual) and is the same data format still used. I sent this on all valid and invalid IDs. Also added an extra 0 byte or an upcounter in the 4th byte. No change, never drawing power. Then I got desperate and brute forced all values from 0-0xFF with incrementing PID and frame length. As soon as the heater reports a status != 0 I stop. When I hit ID22 it stopped with a "Temporary lock" probably because of collision as 22 is a read command. There is one documented status field in the first 3 bits of PID 0x97/23. It is 0 in stop mode, then has various error values and when it is 4 we are in operate mode. I have never seen it change though! Except once when I had appended data to the ID 22 READ request. There is another fast changing field in the last byte of PID 0xD6/22. But it always toggles between the same values even if I just read data. I changed my brute force attack, now it just tried all permutations of 0,1,2,4,...,128 on all 4 bytes and on all PIDs with length ranging from 1 to 4. That went much quicker, 0-0xFF would have taken days. But no combination was found that would change the status to "Operate". I monitored the first diagnostic status byte while sending some random data to all PIDs. Then at PID 0x55/21 the bit jumped to the supposed "Temporary Lock" value. Same for 22 and 23. So since 21 doesn't return any data it must be the command message. Now it was easy. I increased the length from 3 to 4 and there was no more Temporary Lock when sending on PID 21. I put values into the 4 bytes until the heater turned on.
Now, to summarize:
- Only 12V and LIN needs to be connected, interlock needn't be connected to anything.
- Byte 0 sets the power with a scaling factor of 40
- Byte 1 set the temperature setpoint in °C with an offset of 40
- Byte 2 is unused
- Byte 3 =8 heater on (i.e. bit 3 set)
I checked EBAY for a HVH50 unit in Europe but 460 euro's is too much for only satisfying my curiosity...
Yeah, just some sign of life...I would just like to get some response from the heater
Paul