Partial success with Samsung AC using climate_io (update: some solution found)

Hi @SebuZet ,

First of all thanks a lot, your component works great!
That said, I have 5 ACs of the same model and make (the old 2878 kind), was able to talk to only two.

I was able to pull the tokens from all five using the tool from node-samsung-airconditioner.

Now, when I’m defining them in configuration.yaml, two work just fine and the other three fail to connect.

Do you have an idea of what I might be doing wrong? Below are all the diagnostics I could think of. The only thing that looks somewhat incriminating to me is that logs show 5 configurations of climante.climate_ip even though I have only two, so maybe HASS has kept some persistent data in the DB that’s interfering.

Thanks,
– Sasha

  • This is not a case of conflict between configurations, I tried leaving only one of the ACs defined in the configuration.yaml, same result - the “bad” ACs refuse to talk.
  • This is not a case of ACs stuck in some bad state - I did a hard reset all of them by disconnecting the mains. Still the same result.
  • I triple checked all the tokens, IPs and MAC addresses.
  • The mobile app is able to see and communicate wit all the ACs, so they are not in a very broken state.
  • In the logs, I see the following message related to it (only when the bad AC is in the configuration):
2019-09-13 21:21:05,stderr,ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)
2019-09-13 21:21:05,stderr,    self._sslobj.do_handshake()
2019-09-13 21:21:05,stderr,"  File \"/usr/local/lib/python3.7/ssl.py\", line 1139, in do_handshake"
2019-09-13 21:21:05,stderr,    self.do_handshake()
2019-09-13 21:21:05,stderr,"  File \"/usr/local/lib/python3.7/ssl.py\", line 1163, in _real_connect"
2019-09-13 21:21:05,stderr,"    self._real_connect(addr, False)"
2019-09-13 21:21:05,stderr,"  File \"/usr/local/lib/python3.7/ssl.py\", line 1172, in connect"
2019-09-13 21:21:05,stderr,"    sslSocket.connect((cfg.host, cfg.port))"
2019-09-13 21:21:05,stderr,"  File \"/config/custom_components/climate_ip/samsung_2878.py\", line 234, in create_connection"
2019-09-13 21:21:05,stderr,    self.create_connection()
2019-09-13 21:21:05,stderr,"  File \"/config/custom_components/climate_ip/samsung_2878.py\", line 245, in socket"
2019-09-13 21:21:05,stderr,    sslSocket = self.socket
2019-09-13 21:21:05,stderr,"  File \"/config/custom_components/climate_ip/samsung_2878.py\", line 189, in send_socket_command"
2019-09-13 21:21:05,stderr,2019-09-14 00:21:05 ERROR (MainThread) [custom_components.climate_ip.climate] Traceback (most recent call last):
2019-09-13 21:21:05,stderr,2019-09-14 00:21:05 ERROR (MainThread) [custom_components.climate_ip.climate] Sending command failed
  • I see 5 lines of the kind “Setting up climate.climate_ip”, so I suspect they’ve somehow remained registered in the Home Assistant even though I’ve commented them out from configuration.yaml.
2019-09-13 21:19:56,stderr,2019-09-14 00:19:56 INFO (MainThread) [homeassistant.components.climate] Setting up climate.climate_ip
2019-09-13 21:19:56,stderr,2019-09-14 00:19:56 INFO (MainThread) [homeassistant.components.climate] Setting up climate.climate_ip
2019-09-13 21:19:56,stderr,2019-09-14 00:19:56 INFO (MainThread) [homeassistant.components.climate] Setting up climate.climate_ip
2019-09-13 21:19:56,stderr,2019-09-14 00:19:56 INFO (MainThread) [homeassistant.components.climate] Setting up climate.climate_ip
2019-09-13 21:19:56,stderr,2019-09-14 00:19:56 INFO (MainThread) [homeassistant.components.climate] Setting up climate.climate_ip
  • I’m running a slighltly customized docker of homeassistant/home-assistant:latest, with the following change, just to make sure xmljson is loaded:
FROM homeassistant/home-assistant:latest
MAINTAINER Sasha <[email protected]>
LABEL Description="Adding xmljson to libs."
RUN pip install xmljson
RUN pip install --upgrade pip

Also seeing the following warning in HASS:

Setup of platform climate_ip is taking over 10 seconds.
12:31 PM __main__.py (WARNING)

Update: I was successful connecting to all the AC units by removing the certificate to check.
Not sure what it was needed for in the first place - but I’m willing to live with it for now.