Hello everyone, i also got a ras-b13n4kvrg-e installed today, unfortunately my dad bought the wrong model so now i’m stuck with this smartish yet stilish AC.
Anyway i’ve got the app up and running on a rooted phone if it can be of any help (especially to @h4de5).
I also setup the google home link, but it’s very embarassing, it exposes only the on/off status to google home
I even tried @h4de5’s example.py and it works flawlessly.
All this to say that I, my AC and my phone are at your disposal!
What kind of wifi-module is in the A/C?
if it is a OSK-102 or OSK-103 probably the ESPhome solution would work for you, as i noticed two other Toshibe A/C’s are confirmed working allready😉
It does require some diy work, but it is not difficult, and would cost around €7.50
Unfortunately my model has integrated wifi module and no port USB at all and also no reachable serial without voiding the warranty, so the cloud-interfacing option is the only way in my case.
I have set up a Toshiba AC system with this wifi controlled system you are talking about, in our offices.
However i have trouble connecting the module to our wifi network, as we have a firewall that prevents all “foreign” connections. My IT department is asking me what web port have they got to open to make it work?
I’ve been frantically searching online and haven’t found any hope… until i came across this forum.
hello and welcome.
the wifi adapter is making an connection to the outside: 51.144.118.31 to port 8883 and uses a tls encrypted amqp protocol.
your app is also connecting to that server, so normally no direct connection is necessary. unless maybe during pairing. if the company wifi is too restrictive i would take a second mobile phone open an wifi hotspot with the same credentials and do the initial pairing there.
@h4de5 I have digged a bit into AMQP connection. I’ve managed to capture some decrypted communication in wireshark (with mitmproxy) but it stops working when establishing AMQP communication. It seems like we have multiple levels of encapsulation. Firts TLS connection is established with toshibasmaciothubprod.azure-devices.net, then websocket is created:
Hypertext Transfer Protocol
GET /$iothub/websocket HTTP/1.1\r\n
Host: toshibasmaciothubprod.azure-devices.net:443\r\n
Connection: Upgrade\r\n
Upgrade: websocket\r\n
Sec-WebSocket-Version: 13\r\n
Sec-WebSocket-Key: ######
Sec-WebSocket-Protocol: AMQPWSB10\r\n
\r\n
[Full request URI: https://toshibasmaciothubprod.azure-devices.net:443/$iothub/websocket]
[HTTP request 1/1]
[Response in frame: 1822]
Server accepts websocket communication:
Hypertext Transfer Protocol
HTTP/1.1 101 Switching Protocols\r\n
Upgrade: websocket\r\n
Server: Microsoft-HTTPAPI/2.0\r\n
Sec-WebSocket-Protocol: AMQPWSB10\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Accept: ######
Date: Fri, 20 Aug 2021 12:16:45 GMT\r\n
\r\n
[HTTP response 1/1]
[Time since request: 0.033266349 seconds]
[Request in frame: 1821]
[Request URI: https://toshibasmaciothubprod.azure-devices.net:443/$iothub/websocket]
This should create websocket with protocol AMQPWSB10 which is AMQP version 1.0. Unfortunately at this stage my connection is breaking - mitmproxy has some problem handling this further.
@h4de5 I have mannaged to connect to AMQP and I’m receiving state change notifications for my AC.
I’ve done this with azure-iot-device python package and following code: Toshiba Home AC AMQP connection · GitHub. You have to fill your device id and shared key.
When I change something on my AC it generates output similar to this:
nice.
unfortunatelly I did not find another way to get those ids.
@Didier3L the script needs to run stand alone at the moment, even it was planed to be integrated into HA. but for the whole “idea” to use the scheduler to send updates to the AC: this did not turn out to be working. so think I’ll retire that again.
but I will definitelly have a look into the AMQP setup asap.
Load current state from HTTP API (as discovered by @h4de5) as AMQP only notifies about changes - we need to know initial state after connection. Loading current state on init, also reloading from HTTP periodically as well (just in case).
Parse all the fields from fcu reports (currently only some information is parsed)
Extract SHARED_ACCESS_KEY, DEVICE_ID and AC_ID from HTTP API (@h4de5 in decompiled SmartAC.Services.ACServices.ACDeviceServices there is a method called GetACDeviceProvisioned which returns RegisterMobileDeviceRespObj that should contain shared access key - can you please check if this works? It requests /api/AC/GetRegisteredACByUniqueId with HTTP GET and ACUniqueId set to device ID) Done, now APP login info is only required.
EDIT: Latest version uses APP login info to fetch all required data, initial AC state and required tokens are fetched using HTTP API and further state updates are handled by AMQP.
Heartbeat notification also provides some nice data.
It will be nice to get some help. I’ve never created home-assistant integration. Also, library also needs some polishing - it’s missing a lot of error handling and python is not my primary language. Any help is appreciated.
Also I’ve updated the lib - sample has now some GUI in tkinter (I’ve tested in on linux only)
I never created a python package myself, but I think you are on a good track.
I know some basic home-assistant stuff, due to an integration I did for another system. usually we split up the API part (any code that actually communicates with the devices or hubs) and the HA stuff (everything else, that helps home-assistant create and use new entites).
the existing toshiba repository includes most of the boilerplate code for a new integration already. I’ll have a look and add a simple climate entity to it in the next days.
I think the best would be to release this on pypi and create separate repo for HA integration. This way we can separate lib from integration - I think that HA requires this.
exactly.
I updated the toshiba integration. it uses your github repo directly (so for testing we do not need a pypi package - but we should have one later)
if you add it as custom component, it should show up in the integration list:
if you enter the correct user + password it should create one climate entity for each device you have connected:
currently its possible to turn the device on and off, change modes, target temperature and fan speed.
it misses the current temperature as well as settings for the power level.
also there seem to be an issue on my side with the updates back to HA - so any changes made to the device will not show up in HA.