unreality / FujiHK

HomeKit Controller for Fujitsu AirConditioners
MIT License
15 stars 5 forks source link

Nearly working - commands not reaching controller #6

Closed YouCanNotBeSerious closed 9 months ago

YouCanNotBeSerious commented 10 months ago

Hi - thanks for the amazing project, I wonder if you would mind advising me on where to go from here please?

I have a Lolin D32 esp board with LIN transciever and buck regulator as usual but most importantly, this exact hardware works with the derived project https://github.com/FujiHeatPump/esphome-fujitsu. All i did to try out the native homekit solution from this project is re-flash it, I didn't change any connections.

I want to try native Homekit now, so with your fine project, all I changed is in the Arduino IDE the board of course, and the serial port pins for my already built hardware:

define RX_PIN 16 (RXD2)

define TX_PIN 17 (TXD2)

NOTE I do not have a neopixel connected in case that's important.

I can pair the unit in homekit (actually took a few attempts, probably not related), but get no control or status, continually get "no response". HVAC continues to work fine on the wall panel/remote, no errors or anything.

Would you mind looking at the logs below and any advice on how to troubleshoot?

Maybe it is to do with "UNSUPPORTED MODE IN convertACModeToHKMode 0! RETURNING 0" ?

I have triple checked that my LIN chip RX pin is connected to GPIO16 and TX to GPIO17 as it seems everything works but it's not communicating to the Fujitsu remote. Could the pins be updated elsewhere or do the logs tell you something different is the issue....?

I believe that the lines "update(): coolingThresholdTemperature -> using midpoint 21C instead" show the commands i am trying to give from Home app are getting to the device, but it's not communicating to the HVAC. I could be on totally the wrong path though :-)

Everything has been power cycled many times. The esp board is powered via regulator from the remote's 12V line.

It must be something simple, it's the same schematic as shown on your pages, with only a difference in serial port pins.



Device Name:      Fujitsu AirConditioner

Init FujitsuHK
UNSUPPORTED MODE IN convertACModeToHKMode 0! RETURNING 0
Finished setup

*** HomeSpan Info ***

‚û§ Accessory:  AID=1
   ‚ûü Service AccessoryInformation:  IID=1, UUID="3E"
      ‚á® Characteristic Name("Fujitsu AirConditioner D92DE6B4"):  IID=2, UUID="23", Perms=PR
      ‚á® Characteristic Manufacturer("Fujitsu"):  IID=3, UUID="20", Perms=PR
      ‚á® Characteristic SerialNumber("D92DE6B4"):  IID=4, UUID="30", Perms=PR
      ‚á® Characteristic Model("Fuji-HK"):  IID=5, UUID="21", Perms=PR
      ‚á® Characteristic FirmwareRevision("0.2"):  IID=6, UUID="52", Perms=PR+EV
      ‚á® Characteristic Identify(0):  IID=7, UUID="14", Perms=PW
   ‚ûü Service HAPProtocolInformation:  IID=8, UUID="A2"
      ‚á® Characteristic Version("1.1.0"):  IID=9, UUID="37", Perms=PR
   ‚ûü Service HeaterCooler:  IID=10, UUID="BC"
      ‚á® Characteristic Active(0):  IID=11, UUID="B0", Perms=PR+PW+EV, Range=[0,1]
      ‚á® Characteristic CurrentTemperature(22):  IID=12, UUID="11", Perms=PR+EV, Custom-Range=[0,100,1]
      ‚á® Characteristic CurrentHeaterCoolerState(1):  IID=13, UUID="B1", Perms=PR+EV, Range=[0,3]
      ‚á® Characteristic TargetHeaterCoolerState(0):  IID=14, UUID="B2", Perms=PR+PW+EV, Range=[0,2]
      ‚á® Characteristic CoolingThresholdTemperature(22):  IID=15, UUID="D", Perms=PR+PW+EV, Custom-Range=[16,30,1]
      ‚á® Characteristic HeatingThresholdTemperature(22):  IID=16, UUID="12", Perms=PR+PW+EV, Custom-Range=[16,30,1]
      ‚á® Characteristic TemperatureDisplayUnits(0):  IID=17, UUID="36", Perms=PR+PW+EV, Range=[0,1]
      ‚á® Characteristic RotationSpeed(0):  IID=18, UUID="29", Perms=PR+PW+EV, Custom-Range=[0,100,25]

Configured as Bridge: NO

Database Validation:  Warnings=0, Errors=0

Service                             UUID         AID  IID  Update  Loop  Button  Linked Services
------------------------------  --------  ----------  ---  ------  ----  ------  ---------------
AccessoryInformation                  3E           1    1      NO    NO      NO  -
HAPProtocolInformation                A2           1    8      NO    NO      NO  -
HeaterCooler                          BC           1   10     YES   YES      NO  -

*** End Info ***

Accessory ID:      2D:7C:8E:A7:D2:FC                               LTPK: C9106E26D8C85B31CDCF90A15CDC234B43F6DF94D8CE311A35A58B016BBA5003
Paired Controller: F4BA6794-981A-4376-AA83-D5C147D682C5   (admin)  LTPK: C2A77EADD77E931167D8F34AB11B42EB2C0A9C903D7CF68F63CCABE473BCB132
Paired Controller: 2209C4CB-7D36-4F16-B417-DCC52BB52790 (regular)  LTPK: E94239F1B2A434D57E7500495814A7191C38D6B57C7934CB7EE956E4153CED35
Paired Controller: 130873E1-C06E-4075-AAA0-DD5F777785D5 (regular)  LTPK: CBD9AFDB816E44B72963E7FF039EB9813E3AC09EBDB3B18EBE9F40E6DA7F42FF

Accessory configuration number: 1

Fujitsu AirConditioner is READY!

Trying to connect to MYWIFI.  Waiting 1 sec...
WiFi Connected!  IP Address = 192.168.0.69

Starting MDNS...

HostName:      FUJIAC-2D7C8EA7D2FC.local:80
Display Name:  Fujitsu AirConditioner
Model Name:    FUJIAC
Setup ID:      FUJI

Starting HAP Server on port 80 supporting 14 simultaneous HomeKit Controller Connections...

update(): coolingThresholdTemperature -> using midpoint 21C instead
update(): coolingThresholdTemperature -> using midpoint 21C instead
update(): coolingThresholdTemperature -> using midpoint 20C instead
update(): coolingThresholdTemperature -> using midpoint 20C instead

************************************************************
Welcome to HomeSpan!
Apple HomeKit for the Espressif ESP-32 WROOM and Arduino IDE
************************************************************

** Please ensure serial monitor is set to transmit <newlines>

Message Logs:     Level 0
Status LED:       Pin 27  (Auto Off=30 sec)
Device Control:   Pin 39
Sketch Version:   n/a
HomeSpan Version: 1.8.0
Arduino-ESP Ver.: 2.0.11
ESP-IDF Version:  4.4.5
ESP32 Chip:       ESP32-D0WD Rev 1 dual-core 4MB Flash
ESP32 Board:      d32
PWM Resources:    16 channels, 8 timers, max 20-bit duty resolution
Sodium Version:   1.0.12-idf  Lib 9.4
MbedTLS Version:  mbed TLS 2.28.3
Sketch Compiled:  Nov  8 2023 20:05:52
Partition:        app0
MAC Address:      B4:E6:2D:D9:71:05

Device Name:      Fujitsu AirConditioner

Init FujitsuHK
UNSUPPORTED MODE IN convertACModeToHKMode 0! RETURNING 0
Finished setup

*** HomeSpan Info ***

‚û§ Accessory:  AID=1
   ‚ûü Service AccessoryInformation:  IID=1, UUID="3E"
      ‚á® Characteristic Name("Fujitsu AirConditioner D92DE6B4"):  IID=2, UUID="23", Perms=PR
      ‚á® Characteristic Manufacturer("Fujitsu"):  IID=3, UUID="20", Perms=PR
      ‚á® Characteristic SerialNumber("D92DE6B4"):  IID=4, UUID="30", Perms=PR
      ‚á® Characteristic Model("Fuji-HK"):  IID=5, UUID="21", Perms=PR
      ‚á® Characteristic FirmwareRevision("0.2"):  IID=6, UUID="52", Perms=PR+EV
      ‚á® Characteristic Identify(0):  IID=7, UUID="14", Perms=PW
   ‚ûü Service HAPProtocolInformation:  IID=8, UUID="A2"
      ‚á® Characteristic Version("1.1.0"):  IID=9, UUID="37", Perms=PR
   ‚ûü Service HeaterCooler:  IID=10, UUID="BC"
      ‚á® Characteristic Active(0):  IID=11, UUID="B0", Perms=PR+PW+EV, Range=[0,1]
      ‚á® Characteristic CurrentTemperature(22):  IID=12, UUID="11", Perms=PR+EV, Custom-Range=[0,100,1]
      ‚á® Characteristic CurrentHeaterCoolerState(1):  IID=13, UUID="B1", Perms=PR+EV, Range=[0,3]
      ‚á® Characteristic TargetHeaterCoolerState(0):  IID=14, UUID="B2", Perms=PR+PW+EV, Range=[0,2]
      ‚á® Characteristic CoolingThresholdTemperature(22):  IID=15, UUID="D", Perms=PR+PW+EV, Custom-Range=[16,30,1]
      ‚á® Characteristic HeatingThresholdTemperature(22):  IID=16, UUID="12", Perms=PR+PW+EV, Custom-Range=[16,30,1]
      ‚á® Characteristic TemperatureDisplayUnits(0):  IID=17, UUID="36", Perms=PR+PW+EV, Range=[0,1]
      ‚á® Characteristic RotationSpeed(0):  IID=18, UUID="29", Perms=PR+PW+EV, Custom-Range=[0,100,25]

Configured as Bridge: NO

Database Validation:  Warnings=0, Errors=0

Service                             UUID         AID  IID  Update  Loop  Button  Linked Services
------------------------------  --------  ----------  ---  ------  ----  ------  ---------------
AccessoryInformation                  3E           1    1      NO    NO      NO  -
HAPProtocolInformation                A2           1    8      NO    NO      NO  -
HeaterCooler                          BC           1   10     YES   YES      NO  -

*** End Info ***

Accessory ID:      2D:7C:8E:A7:D2:FC                               LTPK: C9106E26D8C85B31CDCF90A15CDC234B43F6DF94D8CE311A35A58B016BBA5003
Paired Controller: F4BA6794-981A-4376-AA83-D5C147D682C5   (admin)  LTPK: C2A77EADD77E931167D8F34AB11B42EB2C0A9C903D7CF68F63CCABE473BCB132
Paired Controller: 2209C4CB-7D36-4F16-B417-DCC52BB52790 (regular)  LTPK: E94239F1B2A434D57E7500495814A7191C38D6B57C7934CB7EE956E4153CED35
Paired Controller: 130873E1-C06E-4075-AAA0-DD5F777785D5 (regular)  LTPK: CBD9AFDB816E44B72963E7FF039EB9813E3AC09EBDB3B18EBE9F40E6DA7F42FF

Accessory configuration number: 1

Fujitsu AirConditioner is READY!

Trying to connect to MYWIFI.  Waiting 1 sec...
WiFi Connected!  IP Address = 192.168.0.69

Starting MDNS...

HostName:      FUJIAC-2D7C8EA7D2FC.local:80
Display Name:  Fujitsu AirConditioner
Model Name:    FUJIAC
Setup ID:      FUJI

Starting HAP Server on port 80 supporting 14 simultaneous HomeKit Controller Connections...

*** Log Level set to 2

=======================================
** Client #0 Connected: (12 sec) 192.168.0.83 on Socket 2/16

<<<<<<<<< 192.168.0.83 <<<<<<<<<
POST /pair-verify HTTP/1.1
Host: Fujitsu\032AirConditioner._hap._tcp.local
Content-Length: 37
Content-Type: application/pairing+tlv8
------------ END BODY! ------------
STATE(1) 01
PUBKEY(32) F97ED861FD0CA3A3B6648C2A403BA923FCB86F58868467F500BA382B605E8C12
------------ END TLVS! ------------
In Pair Verify #0 (192.168.0.83)...Found <M1>
------- ENCRYPTING SUB-TLVS -------
SIGNATURE(64) C35CF588A06050CBA588312283E39E46BF06CE75D4A2C8FB40B1F172ECDE6CBEEF173092DD45B36B64EA662AF266A661E27EEA205A14E3F12F9B2458989C1C01
IDENTIFIER(17) 32443A37433A38453A41373A44323A4643
---------- END SUB-TLVS! ----------

>>>>>>>>>> 192.168.0.83 >>>>>>>>>>
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 140

STATE(1) 02
PUBKEY(32) C1EDBA9530B3E3F1A658177D24EDDFABE633404F5997FE6AEFFE67F2D73FCF55
ENC.DATA(101) C511B8D29713AAF126EB2761F089D31E8320B4C503E12E72FC916AB62E8DC41367E535B651BC5348A23C40B732699D2AC04C27C2B2078BBDF666759759FDDA7CCFFF1445E06F9ADEC030EB4E5BF97630547D3C84BBF35674C321350EDA8AC8E869A0FB9AF6
------------ SENT! --------------

<<<<<<<<< 192.168.0.83 <<<<<<<<<
POST /pair-verify HTTP/1.1
Host: Fujitsu\032AirConditioner._hap._tcp.local
Content-Length: 125
Content-Type: application/pairing+tlv8
------------ END BODY! ------------
STATE(1) 03
ENC.DATA(120) B5880393DB13C6A07A194362FCAC7F17DBC479961A50E0CC2398E1F847A18EB9EE43C59F52A9CCF7E20737ADFDB1E08D3BA060DB0029D2F5687FCE99325691457BC8B04E76F9752481367D93B671F70910F8D65E96E6C858AC9329A5C1C6EAF01284FB4CBF24B2F051677F56E78188A466152ADE5A67321E
------------ END TLVS! ------------
In Pair Verify #0 (192.168.0.83)...Found <M3>
SIGNATURE(64) 9D463EC9F47141519D06DA50EBF83EFC9827F3EAD901CAF5DEA72DEB0BDA6B9DD21CCDFE027190D7509BEE770D342131EF67EDDC94C5BDC5F371793329DC9F02
IDENTIFIER(36) 46344241363739342D393831412D343337362D414138332D443543313437443638324335
------- END DECRYPTED TLVS! -------

>>>>>>>>>> 192.168.0.83 >>>>>>>>>>
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 3

STATE(1) 04
------------ SENT! --------------

*** SESSION VERIFICATION COMPLETE *** 
unreality commented 10 months ago

A good start would be to add hp.debugPrint = true; just after the hp object connects: https://github.com/unreality/FujiHK/blob/3856c17ebb1a7e9938d94b8faac02dd32d44f5cd/src/fuji-hk.cpp#L410

It should print out the frames it sees on the bus. If you dont see any coming in, then your rx/tx lines might be mixed up, or the LIN controller not working correctly...

YouCanNotBeSerious commented 10 months ago

Thank you, I am trying that now... could it be related that i have trouble adding the accessory to home every time, it takes a long time and multiple attempts. Also noted the serial debug terminal stops responding after maybe 30 sec - I have time after flashing to set my wifi, then it stops unless i reboot the board. The debug frames below never stop though so maybe the setup terminal is only active on startup by design.

<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2C 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:0 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 20 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:2 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2C 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:0 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 20 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:2 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
YouCanNotBeSerious commented 10 months ago

OK some more - the debug info above corresponds and updates with my actions on the remote control panel - here i turned it on, changed the temp to 30 - and it seesm to be commuicating. Very cool!

So comms seems to be OK - but please note it still takes many atempts and a long time to add the accessory to Home. This is probably more of a pointer to the problem now....

<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2E 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:0 uM:8 cTemp:23 acError:0
--> 21 81 0 38 14 20 2F 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:2 cTemp:23 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 38 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 8 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 1 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2E 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:0 uM:8 cTemp:23 acError:0
--> 21 81 0 39 14 20 2F 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:2 cTemp:23 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2E 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:0 uM:8 cTemp:23 acError:0
--> 21 81 0 39 14 20 2F 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:2 cTemp:23 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 14 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 14 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 14 A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 20, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 8 39 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 1 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 1E 0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2C 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:0 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 20 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:2 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2C 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:0 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 20 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:2 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 0 39 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 39 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 39 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 1 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
<-- 20 A1 8 38 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 1 login: 1 unknown: 1 onOff: 0 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 1E 0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 30, mode: 4 cP:1 uM:0 cTemp:1 acError:0
<-- 20 A1 0 38 1E 80 2D 0 mSrc: 32 mDst: 33 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 30, mode: 4 cP:1 uM:8 cTemp:22 acError:0
--> 21 81 0 38 1E 0 2D 0 mSrc: 33 mDst: 1 mType: 0 write: 0 login: 0 unknown: 1 onOff: 0 temp: 30, mode: 4 cP:1 uM:0 cTemp:22 acError:0
<-- 0 A0 0 38 1E A0 3 20 mSrc: 0 mDst: 32 mType: 0 write: 0 login: 1 unknown: 1 onOff: 0 temp: 30, mode: 4 cP:1 uM:10 cTemp:1 acError:0
YouCanNotBeSerious commented 10 months ago

Focussing on my hardware differences, i am using a Lolin D32 board, I don't have the neopixel connected, and i don;t have a pushbutton connected. Could there be any dependancies there? I also am still having trouble adding the accessory to Home, it eventually worked but since flashing the debug frame line above i can;t add it - am going to remove that ine since it seems to have shown the issue is not comms with the fujitsu unit.

Is it expected that the serial terminal stops responding after about 30 sec on boot btw? I have to be quick to get my wifi settings done....

YouCanNotBeSerious commented 10 months ago

OK - I have progress.

I think it is some kind of lockup or crash issue.

What I have proven over at least 2 dozen attempts is that the serial debug comms stops after as little as <30s when i am using the debug tools i.e. set wifi, pairing code, or as long as a couple of minutes when watching the LIN frame info stream past. Also this is why i have had trouble adding the accessory to my Home - if i do it quickly after boot it works fine, if i am too slow the process starts but then times out after the board stops responding.

I did in fact catch the Home app communicating with the esp as shown below, but then the comms stopped - suspected board lockup. Serial comms only comes back if I reset the board,

Any ideas? Surely it has to be an Atom --> My D32 board difference....? I am compliing in the latest released Arduino IDE, no errors, selecting the D32 board in the IDE...

The Atom seems to use ESP32-PICO-D4 and my board uses ESP32-WROOM

40 MHz crystal oscillator 4 MB flash Filter capacitors RF matching links

Accessory configuration number: 1

Fujitsu AirConditioner is READY!

Trying to connect to NZ Police Rolleston.  Waiting 1 sec...
WiFi Connected!  IP Address = 192.168.0.69

Starting MDNS...

HostName:      FUJIAC-E7D69027FCDC.local:80
Display Name:  Fujitsu AirConditioner
Model Name:    FUJIAC
Setup ID:      FUJI

Starting HAP Server on port 80 supporting 14 simultaneous HomeKit Controller Connections...

update(): coolingThresholdTemperature -> using midpoint 20C instead. <--- sucessfully comm with Home app!
YouCanNotBeSerious commented 10 months ago

Noted that if I press "W" in the serial terminal and scan for available wifi, then do not enter anything, it stays responsive for many minutes where normally it stops responding.... maybe that points to which area of code is in play.

YouCanNotBeSerious commented 10 months ago

SOLVED!

As usual when troubleshooting these things, I feel a bit silly now, but will leave this issue here so others might benefit.

The “button” pin in the code happenned to map to a TOUCH sensor input on the dev board i used! Naturally this pin had to be one that was unconnected ;-)

A floating input is never wise, but a sensitive touch sensor input..... well, it resulted in this issue and has been solved with a simple 10k pullup resistor.

If I had implemented the button this would never have come up, but the dev board is hidden behind the drywall behind the Fujitsu wall remote so I saw no need for a button.

ALWAYS check the basics.....

Maybe I redeem myself slightly if I mention that this all works fine with MCP2021-330 for the LIN transciever which was easier to source for me....

Thank you for your help @unreality and more so thanks for this fantastic project. My Fujitsu ducted whole house HVAC now has a new lease on life, automations will be coming out my ears to turn it off when no one is home, preheat/cool the house on a schedule and all sorts of things.

YouCanNotBeSerious commented 9 months ago

Proven working fine more than a month later, check and doublecheck your hardware definitions is the lesson I learned :-)