Tigo optimizer local monitoring - without cloud now possible!

Hello,

base on the taptap project which reverse engineered protocol between Tigo TAP and CCA components I was able to create mqtt bridge and package it as a Home Assistant addon TapTap.

So now we can detailed information from the Tigo photovoltaic optimizer modules locally - without Tigo cloud and with refresh time of 10s. :wink:

Implementation requires:

  • Modbus RS485 to Ethernet convertor (like for example WaveShare models
  • MQTT broker (like mosquitto addon)
  • MQTT integration

As Addon uses HomeAssisatant MQTT auto discovery feature, it will setup all provided sensors automatically in the HA.

Any feedback is welcome.

5 Likes

Hey there, I have a waveshare RS485 to WiFi/ETH device and trying to configure it in HA

Please can you elaborate more on the settings to configure like what I should be putting in for the following:
taptap_module_ids*
taptap_module_names*

Maybe some screen shots of the waveshare setup and the config would help as you instructions are not that clear

These are the errors I am getting
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service init-taptap: starting
s6-rc: info: service init-taptap successfully started
s6-rc: info: service taptap: starting
[17:13:33] INFO: Starting taptap…
s6-rc: info: service taptap successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Reading config file: /etc/taptap/config.ini
Invalid config entry: TAPTAP/ADDRESS
[17:13:33] INFO: Service taptap exited with code 1 (by signal 0)
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service taptap: stopping
s6-rc: info: service taptap successfully stopped
s6-rc: info: service init-taptap: stopping
s6-rc: info: service init-taptap successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Just some comments,
taptap_address = Waveshare IP
taptap_port = Waveshare Port

Hi, sorry for issue - there was malformed translation YAML and therefore no help was displayed in addon configuration page. I fixed it and also provided detailed DOCS page. Also new version of the taptap-mqtt is now included in the latest release 0.1.1. You can check it out.

1 Like

Thank you, will play again and see how it works out

1 Like

Thank you very much for this! it works great, and now I don’t have to rely on Tigo API! For future folks:

  1. add the repo to HA add-on store:
  1. Search the HA add-on store for TapTap, install it.

  2. Follow the configuration instructions

Hello, good to hear @josher-mi that it works! Some users struggle with the setup as it is not easy - wiring is required, MQTT prerequisites, add-on settings etc. So any hint where additional more detailed description/docs could be helpful is very welcome.

1 Like

I was thrown off by the docs page here:

https://github.com/litinoveweedle/hassio-addons/blob/38cee27eb0190208d590f52b80fb6e05122164ac/taptap/DOCS.md

Basically the doc directs us to install the ‘example’ add-on, which generates random quotes.

Maybe replace this (pictured) above section with a few bullets like…

  1. explain how to add your repo to the add-on store (and include the actual repo url)

  2. Explain how to search for TapTap in the add-on store, and then how to install it and add config, and finally start it.

  3. Show how to verify that the HA MQTT broker is getting messages from the converter.

  4. because it’s so simple, describe how to install the MQTT add-on AND integration. Probably many folks find MQTT a little intimidating :laughing:

I felt the rest of the instructions were spot on!

I also think pictures speak volumes :slightly_smiling_face:

This is what a working waveshare converter looks like:

2 Likes

Today was announced new custom integration without need any device or cloud:

1 Like

I was using local web access to the Tigo CCA whole last year, even wrote similar rest API based integration. However to my knowledge latest Tigo version of the CCA firmware completely closed local web server access, so this method is not feasible anymore for upgraded devices or new installations (where there is mandatory step to first upgrade the firmware to be able to contiue with commissioning).

integration is based on 3.8.3-ct-3

yr version?

Hi @Bobsilvio , I’ve checked you integration. It are actually uses:

URL: http://IP/cgi-bin/summary_data
credentials: Tigo:$olar

That very well known credentials are no longer valid for new FW - as Tigo probably realized that people start using this loophole more and more. I just re-checked this access on the two installations which were commissioned at the end of the last year and it really doesn’t work. I am not on the site so I have no idea which version of the FW is installed there (and I do not know other way to get FW than from the mobile app when using local BT connection).

Also at least on the older FW (can’t say for the new one) you needed either reverse proxy or logging into CCA using SSH modifying iptables rules to circumvent source IP address restriction (to IP 10.11.1.1) for the webserver access.

So instead battling those limitations with every new FW I decided to go for taptap - as it is much more hard for Tigo to close the physical Modbus tapping access.

EDIT:

just rechecked (saw the message on the same forum were were learned about the Tigo) and I can actualy get http://IP/summary/ page from the CCA. So the isue was probably my fault not providing summary_data GET params. So your integration shall work :wink:

my CCA was installed 10 days ago, and it contains the latest firmware

http://xxx/cgi-bin/mobile_api?cmd=DEVICE_INFO&dev=1&ver=1

I don’t think you have a firmware higher than 3.8.3

maybe you have a different cca? not the black and green one?

EDIT: OK thanks

I have the RS485 connectivity working, but with 64 panels I’m having a hard time mapping all the IDs and panel names.

Is there a way from the Tigo web app to figure out what serial or what name maps to which panel ID in taptap? Enabling debugging didn’t really help much.

I configured the waveshare with the same parameters as yours, I installed the taptap from repository on HA which connects correctly, but I have no data from the panels. i not undestand if must configure other, this id the log
s6-rc: info: service s6rc-oneshot-runner: starting

s6-rc: info: service s6rc-oneshot-runner successfully started

s6-rc: info: service base-addon-banner: starting


Add-on: TapTap

Tigo CCA to HomeAssistant MQTT bridge


Add-on version: 0.1.3

You are running the latest version of this add-on.

System: Home Assistant OS 15.2 (amd64 / qemux86-64)

Home Assistant Core: 2025.4.4

Home Assistant Supervisor: 2025.04.1


Please, share the above information when looking for help

or support in, e.g., GitHub, forums or the Discord chat.


s6-rc: info: service base-addon-banner successfully started

s6-rc: info: service fix-attrs: starting

s6-rc: info: service base-addon-log-level: starting

s6-rc: info: service fix-attrs successfully started

Log level is set to DEBUG

s6-rc: info: service base-addon-log-level successfully started

s6-rc: info: service legacy-cont-init: starting

s6-rc: info: service legacy-cont-init successfully started

s6-rc: info: service init-taptap: starting

s6-rc: info: service init-taptap successfully started

s6-rc: info: service taptap: starting

s6-rc: info: service taptap successfully started

s6-rc: info: service legacy-services: starting

[22:42:50] INFO: Starting taptap…

s6-rc: info: service legacy-services successfully started

INFO: Reading config file: /etc/taptap/config.ini

DEBUG: Configured nodes: {‘2’: ‘a01’, ‘3’: ‘a02’, ‘4’: ‘a03’, ‘5’: ‘b01’, ‘6’: ‘b02’, ‘7’: ‘b03’, ‘8’: ‘b04’, ‘9’: ‘b05’, ‘10’: ‘b06’, ‘11’: ‘b07’, ‘12’: ‘b08’, ‘13’: ‘b09’, ‘14’: ‘b10’, ‘15’: ‘b11’, ‘16’: ‘c01’, ‘17’: ‘c02’, ‘18’: ‘c03’, ‘19’: ‘c04’, ‘20’: ‘c05’, ‘21’: ‘c06’, ‘22’: ‘c07’, ‘23’: ‘d01’, ‘24’: ‘d02’}

DEBUG: Into mqtt_init

DEBUG: Into mqtt_on_connect

INFO: MQTT client connected

DEBUG: Into taptap_init

INFO: TapTap process started

DEBUG: Into taptap_discovery

DEBUG: Into taptap_discovery_device

DEBUG: Publish MQTT lwt topic taptap/tigo/lwt

DEBUG: Publish MQTT discovery topic homeassistant/device/tigo/config

DEBUG: {‘device’: {‘ids’: ‘ec97d8e6-3b3a-52c6-aa9c-57264759e889’,

value_json.nodes.d02.timestamp }}', ‘availability_topic’: ‘taptap/tigo/lwt’}}, ‘state_topic’: ‘taptap/tigo/state’, ‘qos’: ‘1’}

DEBUG: Into taptap_tele

DEBUG: Node a01 init as offline

DEBUG: Node a02 init as offline

DEBUG: Node a03 init as offline

DEBUG: Node b01 init as offline

DEBUG: Node b02 init as offline

DEBUG: Node b03 init as offline

DEBUG: Node b04 init as offline

DEBUG: Node b05 init as offline

DEBUG: Node b06 init as offline

DEBUG: Node b07 init as offline

DEBUG: Node b08 init as offline

DEBUG: Node b09 init as offline

DEBUG: Node b10 init as offline

DEBUG: Node b11 init as offline

DEBUG: Node c01 init as offline

DEBUG: Node c02 init as offline

DEBUG: Node c03 init as offline

DEBUG: Node c04 init as offline

DEBUG: Node c05 init as offline

DEBUG: Node c06 init as offline

DEBUG: Node c07 init as offline

DEBUG: Node d01 init as offline

DEBUG: Node d02 init as offline

DEBUG: No nodes reported online

DEBUG: Updating MQTT state topic taptap/tigo/state

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

DEBUG: Into state_file

DEBUG: stats file updated

DEBUG: Into taptap_tele

INFO: Node a01 went offline

INFO: Node a02 went offline

INFO: Node a03 went offline

INFO: Node b01 went offline

INFO: Node b02 went offline

INFO: Node b03 went offline

INFO: Node b04 went offline

INFO: Node b05 went offline

INFO: Node b06 went offline

INFO: Node b07 went offline

INFO: Node b08 went offline

INFO: Node b09 went offline

INFO: Node b10 went offline

INFO: Node b11 went offline

INFO: Node c01 went offline

INFO: Node c02 went offline

INFO: Node c03 went offline

INFO: Node c04 went offline

INFO: Node c05 went offline

INFO: Node c06 went offline

INFO: Node c07 went offline

INFO: Node d01 went offline

INFO: Node d02 went offline

DEBUG: No nodes reported online

1 Like

Thank you very much, I have just finished setting this up, and once I had it all wired up, the auto discovery worked just fine and I have my 24 panels now showing.

As per the earlier request, having some kind of auto-discovery of panels, without having to do the ID/Name mapping manually in the config would be great, plus, also, I’m not sure that I’ve actually mapped my panels properly - going to have to try to figure this out manually at some point.


Cheap device no need for additional power supply ( 5 to 24V )
I my case i’ve used same power supply that supports CCA
Some pannels are responding longer than 120 seconds so 240s for avability timeout is fine.
See attached configuration from my screenshots. There are all settings for proper working device. In HA i have mosquitto broker working and i’ve used user and pass for mqtt from there. As allways first you need to set proper network configuration becouse device has staticIP 192.168.0.7 and you need to be in same network to change it. Device is small like lipstick , fast and easy to instal. I’am using it over a week with no problems. Cheers

Hello, first of all thak you for your outstanding work done so far.

I got my Tigo installed a month ago and started to experiment with it. However I still have some issues. The inability of the plugin to actually get some data from the RS485 drove me to do some more in-depth debugging.
The Waveshare converter just seems to work as it should so I needed to access the binary data of the communication to see what is going on. I have build the original taptap to check the raw data and I figured out that there is actually a valid communication as far as the taptap protocol specifies up to the gateway transport layer so I can clearly see that the structure of the Receive Request and Receive Response is correct. This is checked by using the command ./taptap peek-frames which correctly identifies all frames, however the command ./taptap peek-activity is already silent. I have checked the structure of the PV application layer in my hex dumps and in the published taptap protocol and they are slightly different, so it is probably the reason why it is not decoded.

Now, I have the correct green Tigo CCA with firmware version 3.8.3-ct-3 so I’m wondering what can be wrong here. Is it possible that Tigo modified the protocol a bit or that I have some new TAPs which are not supported ?

Have anyone of you observed something like that so far ? Any information would be great.

Thank you very much,

I suppose that Tigo is working to close his FW, my version is 3.12.9-gm8 and I can’t open any http path (ie: URL: http://IP/cgi-bin/summary_data http://IP/summary/ or http://xxx/cgi-bin/mobile_api?cmd=DEVICE_INFO&dev=1&ver=1)