banban525 / echonetlite2mqtt

ECHONET Lite to MQTT bridge.
MIT License
48 stars 7 forks source link

Air Conditioners Showing as `nodeProfile` #8

Closed aftertommy closed 1 year ago

aftertommy commented 1 year ago

I'm testing out echonetlite2mqtt to use in my home. I have a number of different echonetlite devices, including several air conditioners.

It seems like my air conditioners aren't being discovered as air conditioners, but instead as nodeProfile objects, and they never seem to update after being discovered. If I restart echonetlite2mqtt, some get discovered, but not all.

I have tried some other echonetlite software, and these air conditioners do get discovered as air conditioners. Is there perhaps a race somewhere?

What logging and information can I provide you?

aftertommy commented 1 year ago

This is the list of properties for one of the air conditioners. Notice the manufacturer(MC) code of 8, which is Daikin:

{
  "operatingStatus": "true",
  "version": "010c0100",
  "id": "fe0000089c50d148d05800000000000000",
  "faultDescription": 0,
  "manufacturer(MC)": "000008",
  "uid": "342d",
  "selfNodeInstances": "000001",
  "selfNodeClasses": 2,
  "selfNodeInstanceListS": {
    "numberOfInstances": 1,
    "instanceList": [
      "013001"
    ]
  },
  "selfNodeClassListS": {
    "numberOfClasses": 1,
    "classList": [
      "0130"
    ]
  }
}
banban525 commented 1 year ago

@aftertommy

Thank you for your report. I reproduced it with my Daikin air conditioner.

But 3 months ago it was fine. Maybe, a firmware update for the air conditioner may have changed its behavior.

In my environment, the cause was that the ID of the nodeProfile and the ID of the air conditioner were the same.

I will fix this issue in a few days.

Also, detailed logs are not output. I plan to add functionality.

aftertommy commented 1 year ago

Thank you! Please let me know if I can help with gathering more info.

aftertommy commented 1 year ago

I’m curious, because I’m still learning how this protocol works — are you saying that Daikin is reusing the nodeProfile SEOJ value but sending property codes for the air conditioner class? I’m trying to understand how sometimes these get identified as normal air conditioners (and I’m trying to make sure I understand how echonet lite works).

banban525 commented 1 year ago

I will elaborate on this issue.

If your problem is the same as mine, this problem is a bug in ECHONETLite2MQTT.

Daikin's air conditioner is sending in ECHONET protocol that there are two devices, a nodeProfile and a air conditioner. However, ECHONETLite2MQTT recognizes as one device because the nodeProfile's Id and air conditioner's Id are the same. ECHONETLite2MQTT selects the device that received first.

ECHONETLite2MQTT Json does not have air conditioner information, but it is inside. I'm going to make a feature to get internal information.

aftertommy commented 1 year ago

Oh man thank you. You just taught me about EPC=0x83. Thanks!

banban525 commented 1 year ago

@aftertommy

I fixed this issue.

If you are using docker, use latest or tag:v2.0.1 or newer. If you're running on node.js, clone the latest code.

In v2.0.1, I changed the nodeProfile Id if the nodeProfile and the device Id are the same. This will show both the device and the nodeProfile.

If your problem was not due to duplicate Ids, please download the logs at the bottom of the "Logs" page and send them to me.

aftertommy commented 1 year ago

it looks to be working. thank you so much! oh man im so glad you have no idea.