Therefore my conclusion is that the seq number is only an id of the message that is then used in the response. Apparently you can set that seq to anything you want, and then you can check if the response have the same seq to be sure that is the answer to your message.
I did not find the need to set the seq 12345 or 1, like you said in your previous message.
By the way, Packet Sender is a very useful tool I didn’ t know about.
Therefore we may start developing a custom component for Home Assistant and this way contribute to this awesome project.
Regards,
Pablo
Note: I formatted the XML messages for a better reading experience. But they are sent and received in a single line.
Hello pavlo,
Sorry for my late response.
About the seq number if I turn on the AC with seq 12345 I can’t turn it off with the same seq number.
Another test I did is, if I turn on AC with seq 12345 I can rise the temperature using the same seq but if I want to lower the temperature I need to change the seq, otherwise nothing happens.
If you can do some more tests as I say.
I’m not a professional developer but I think I can help you in some tasks, talk to me in PM
Thanks mate.
I’ve built an initial working version that can be found here.
Place the file under /config/custom_components/climate and make sure to add the following to your configuration.yaml.
climate:
platform: tfiac
host: 192.168.10.26
It’s not really clear how seq is used so I just used epoc (seconds since 1970). Also I need help to figure out which modes (OPERATION_LIST, FAN_LIST, SWING_LIST) that are supported and how the swing mode should be set (I guess this is what is called WindDirection).
According to statusUpdateMsg there seems to be an Opt_super and an Opt_ECO mode, is that something we should strive for to also support?
There is still quite a bit to get this in a stage where it can be added as an official component but it is a good start. It would for instance be great if we could support the UDP-broadcasts, both for auto discovery but also to update the state by local push instead of polling.
Hi fredrike and pavlo,
For my unit and TFIAC app I figure out this:
Parameter
Value
Obs.
BaseMode
heat
Min temp: 61F (16C) - Max temp: 88F (31C)
BaseMode
selfFeel
Called AUTO mode in the TFIAC app
BaseMode
dehumi
When this mode is set it’s not possible to set the temp
BaseMode
fan
When this mode is set it’s not possible to set the temp
BaseMode
cool
Min temp: 61F (16C) - Max temp: 88F (31C)
WindSpeed
Low
WindSpeed
Middle
WindSpeed
High
WindSpeed
Auto
Cannot be used when BaseMode is fan
WindDirection_V
on
WindDirection_V
off
WindDirection_H
on
WindDirection_H
off
Opt_super
on
Called Turbo in the TFIAC app
Opt_super
off
Called Turbo in the TFIAC app
Opt_ECO
on
Can only be used with BaseMode cool, heat and selfFeel. Can’t be used when Opt_sleepMode is on
Opt_ECO
off
Can only be used with BaseMode cool, heat and selfFeel. Can’t be used when Opt_sleepMode is on
Opt_sleepMode
sleepMode1:0:0:0:0:0:0:0:0:0:0
Don’t know why the zeros… Can’t be used when Opt_Eco is on
Opt_sleepMode
off:0:0:0:0:0:0:0:0:0:0
Don’t know why the zeros… Can’t be used when Opt_Eco is on
If we consider all this modes I think (except the timer funcion) we cover all the TFIAC app options.
There is also some other cool options that the App don’t use, like BeepEnable on or off but I think it’s not a must have option
Edit1: Home-Assistant does not have a eco mode but it could be implemented as heat eco, cool eco, selfFeel eco, is that ok? What happens to WindSpeed Auto if BaseMode is switched to fan? What does Opt_super/Turbo mean, is that a fan-mode or a special heat mode? Home-Assistant does not support sleep_mode (if it’s not a special fan mode)? Here are the currently supported modes for ha: https://www.home-assistant.io/components/climate#services
Edit2: I’ve updated the file on gist, please test so the different modes work while deciding on my questions on edit1.
I test to send this after my unit is turned off: <msg msgid="SetMessage" type="Control" seq="1355"><SetMessage><BaseMode>heat</BaseMode><TurnOn>on</TurnOn><SetTemp>69</SetTemp><BeepEnable>off</BeepEnable></SetMessage></msg>
And the result is my unit turns on and the basemode and temp was correctly set.
I think it’s ok, in the end the parameter sended for the unit will be the same.
The WindSpeed is changed to low automatically, so I think the best is to not send the WindSpeed parameter when the BaseMode is set to fan.
In the reality is more a kind of a shortcut key because when I activate it the fan in the splitter works at maximum speed (WindSpeed sets to High) and the heat goes to max (88ºF), in case the BaseMode is set to heat. If the BaseMode is set to cool then the WindSpeed sets to High too but the temp is set to the minimum (61ºF).
@phenriques3000, @pavlo please make sure to test all the different combinations i the code now and I’ll make sure all that features works well before I’ll add the ones discussed above.
Yes, but we are out of options for a toggle to enable this and I don’t feel like creating a separate switch for it.
Perhaps it could be a service call so it can be added as a button. But I think I’m done with features now so make sure that the current implementation works and we’ll see how the rest can be implemented.
Ok @fredrike, now I’m installing HA for the first time because until now i’m a OH user
Maybe @pavlo can test it before I. But we will keep you updated. Very thanks!
Hi @fredrike,
Already test the component.
So far what I see to work:
If I toggle On/Off button nothing happens.
If I change the operation mode AC turns on but don’t set the selected operation mode and temp.
Currently temperature shows fine.
Everything else is not working… how can I do some debug? Can I see anywhere the output everytime I change something?
thanks
Could you please send some commands via the app and send me the xml the app is sending for each commamd. We must have missed something in the api format.
I can add some debug information to the home assistant code, but first tomorrow.
Edit: added debug output to the code on gist. Perhaps we need to send a more complete message (BaseMode+SetTemp+TurnOn) as your example above @phenriques3000.
I can’t because the app don’t use this type of communication, it send some kind of data over UDP to port 80, until now I can’t decrypt what is sent by this packets.
I discover this xml method because I decompile the apk and I figured out this
What I do for test purposes is send the ASCII string (the xml) packets with Packet Sender and next I see the result using the TFIAC app or viewing the current status in my unit.
I don’t think you do it bad… But if you put something to help viewing each xml string that results for any interaction in HA I can test and say what is wrong
@phenriques3000, you may have not noticed but you can also get the result in the Packet Sender app. Once you sent an XML command, you get back a packet with same seq number and “Return Ok”, and you can then send another XML command requesting status, and you will get the XML with the whole status.
My point is that do not need the TFIAC app to see the result.
This @fredrike idea is very good and it may solve the problems with the update of the current status of the device.
It would be nice to do some tests and see if there is a broadcast packet every time we use the remote control, apart from the ones we get periodically. This way we could update the status of the component right away.
First thing I can see is that probably the seq number is not set fine:
Sending message: b’<msg msgid=“SyncStatusReq” type=“Control” seq="-3600">\n<SyncStatusReq></SyncStatusReq></msg>’
-3600 doesn’t seem fine. We know that apart from the SyncStatusReq, the rest of the commands should have a different seq number every time. -3600 seems to be fixed.
Edit: Confirmed the seq number is wrong also when sending another command:
Sending message: b’<msg msgid=“SetMessage” type=“Control” seq="-3600">\n<SetMessage><SetTemp>79.34</SetTemp></SetMessage></msg>’
I can also confirm that you can send messages like the following:
And when it is switched on you get the same thing plus some messages like the following at least one every 6 seconds (some of them may come even more frequently):