Proscenic 790T Integration

Hi there! Please, excuse me for any mistakes. English is not my native language. And currently it is 4:04 AM in Bulgaria. Yes, yes … You’re right - Bulgarian is my native language. And PHP. And Swift. Anyway … It doesn’t matter. I just finished Proscenic 790T platform for the vacuum component. Tested! It works well. One advice - If you’re making custom card, please use the ‘vacuum.proscenic_*’ services instead of the default. There is a reason for them to exist and why you should us them instead of the build in ones, but it is a long story, that I don’t have time to explain. This component is controlling the vacuum locally (not trough the cloud platform of the app), but they can coexist and work together very well (without any ‘fight’ between them both). The option for the fan speed is not working for the 790T model (officially it doesn’t support it), but I left it, so it can be used if 811 model supports it. I haven tested it with 811 because I don’t have one. I implemented the code from the official app reverse engineered. There is more to be implemented - like the original, build in the vacuum, week scheduler, but I’ll write this part far in the future when I have enough time for that. Until then you can use Home Assistant automations and scripts or NodeRed for that purpose. Turning left and right (vacuum.proscenic_move_left/right services) are turning in about 30 - 35 degrees and then stop automatically while vacuum.proscenic_move_forward/backward are continuous and they need to be stopped using vacuum.proscenic_move_stop service. I’ve implemented the voice on/off/toggle sevices too (vacuum.proscenic_voice_on,vacuum.proscenic_voice_off, vacuum.proscenic_voice_toggle). I’ve also implemented vacuum.proscenic_clean_auto (default mode), vacuum.proscenic_clean_area (spot), vacuum.proscenic_clean_border modes.

All you need to implement it is to download proscenic.zip file below and extract it to custom_components folder, located in in your config folder (config folder is the folder, where your configuration.yaml file is located). Then restart Home Assistant.

proscenic.zip

After that in your configuration.yaml file add the vacuum cleaner:

vacuum:
  - platform: proscenic
    name: Vacuum Cleaner
    host: "<your vacuum cleaner ip address>"

*name: not required, but recommended (default value: Proscenic 790T)
*host: required. Replace <your vacuum cleaner ip address> with your vacuum IP address.

Example:

    vacuum:
      - platform: proscenic
        name: My Vacuum Cleaner
        host: "192.168.0.23"

Save the configuration.yaml file, restart Home Assistant and start cleaning your house … :smiley:
Ah … And buy me a beer … Or two beers … :wink:

1 Like

Example NOT 100% working lovelace card

from_sensors.yaml
from_input_slider.yaml

from_ui-lovelace.yaml
The cheduler is not working and the styles are not finished yet, but you can give it a try and even finish it and share it. This way I can copy it and use it without the need to finish it by myself. :smiley:

Thank you very much !!!
I will test this in the day.

Thank’s for this support.
I have add it on my configuration.yaml.
but now home assistant don’t start.
Nothing write on logs… Do you have an idea?

After a short analysis, it seems that a message is being sent to the vacuum cleaner: <MESSAGE Version="1.0"><HEADER From="020000000000000000" Keep="1" MsgSeq="1" MsgType="MSG_TRANSIT_SHAS_REQ" To="01801930aea421f164" /><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTE3RkRFMTA5MDAwMDAxMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE> but no answer is ever received The code is waiting indefinitely for a response.

Did you put proscenic.py file in custom_components\vacuum folder?

at home it works well by putting proscenic.py file in config\custom_components\vacuum folder

But is not successful to put in place lovelace cards.
I do not know where to put from_sensors.yaml and from_input_slider.yaml

from_sensors.yaml and from_input_slider.yaml are actually sensors.yaml and input_slider.yaml. I prepend from_ because if you already have these file in config folder and you paste them, you can override by mistake your existing files and configuration. And from_ indicates that you have to get the content of this file and put it into your file. :slight_smile:

So on the question … If in your config directory you already have sensors.yaml and input_slider.yaml, copy the snippets from my files and paste it in the end of yours. If you don’t have such files - create them and paste my snippets in your file. :slight_smile:

1 Like

config folder is the folder where configuration.yaml file is. :slight_smile:

1 Like

Yes I have.
I have add some logs on code, and I can see it.
As say on previous message, I see the sended request, but I have not response by the vacuum.
how did you find the requests sent to the vacuum cleaner?

I found that one of their old android application uses them, so I reverse engineered the app and found all that codes. These are actually serial commands send to the serial inside of the vacuum. :slight_smile: I haven’t updated the firmware of the vacuum. I left it with the one that it came with. Works perfect with 970T model. After the latest HA update, the custom card I made is not sending commands. I’ll figure out what I have to change in order to fix the problem it has.

1 Like

Hello,
sorry for my English.
I tried on my 811 gb:

Work in my 811gb ( github oskarn97 )

visuel check ok

Stop.sh: AA55A55A0DFDE20906000100030000000000
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBERkRFMjA5MDYwMDAxMDAwMzAwMDAwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.99/10684

run.sh: AA55A55A0DFDE20906000100020000000100
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBERkRFMjA5MDYwMDAxMDAwMjAwMDAwMDAxMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.99/10684

dock.sh: AA55A55A0FFDE20906000100010000000000
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBGRkRFMjA5MDYwMDAxMDAwMTAwMDAwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.99/10684

Check in smartphone:

mode_auto.sh: AA55A55A09FDE20906000100020500000000
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTA5RkRFMjA5MDYwMDAxMDAwMjA1MDAwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.99/10684

mode_area.sh (Spot): AA55A55A0AFDE20906000100020400000000
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBBRkRFMjA5MDYwMDAxMDAwMjA0MDAwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.99/10684

mode_edge.sh: AA55A55A0BFDE20906000100020300000000
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBCRkRFMjA5MDYwMDAxMDAwMjAzMDAwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.99/10684

mode_zigzag.sh: AA55A55A0CFDE20906000100020200000000
#!/bin/bash

`echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBDRkRFMjA5MDYwMDAxMDAwMjAyMDAwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.99/10684`

Tried your work

the 7 order work in my 811GB

‘MOVE_BACKWARD’: “AA55A55A0BFDE20906000100030000020000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBCRkRFMjA5MDYwMDAxMDAwMzAwMDAwMjAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘MOVE_FORWARD’: “AA55A55A0CFDE20906000100030000010000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBDRkRFMjA5MDYwMDAxMDAwMzAwMDAwMTAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘MOVE_LEFT’: “AA55A55A0AFDE20906000100030000030000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBBRkRFMjA5MDYwMDAxMDAwMzAwMDAwMzAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘MOVE_RIGHT’: “AA55A55A09FDE20906000100030000040000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTA5RkRFMjA5MDYwMDAxMDAwMzAwMDAwNDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘MOVE_STOP’: “AA55A55A08FDE20906000100030000050000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTA4RkRFMjA5MDYwMDAxMDAwMzAwMDAwNTAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘VOICE_OFF’: “AA55A55A0BFDE20906000100040000000001”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBCRkRFMjA5MDYwMDAxMDAwNDAwMDAwMDAwMDE8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘VOICE_ON’: “AA55A55A0AFDE20906000100040000000002”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBBRkRFMjA5MDYwMDAxMDAwNDAwMDAwMDAwMDI8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

3 WIND does not work in my 811gb but work in infra red telecom (normal / speed):

‘WIND_HIGH’: “AA55A55A0AFDE20906000100030003000000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBBRkRFMjA5MDYwMDAxMDAwMzAwMDMwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘WIND_NORMAL’: “AA55A55A0BFDE20906000100030002000000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBCRkRFMjA5MDYwMDAxMDAwMzAwMDIwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘WIND_OFF’: “AA55A55A0CFDE20906000100030001000000”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTBDRkRFMjA5MDYwMDAxMDAwMzAwMDEwMDAwMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

LES 2 QUERY ???

‘QUERY_ORDER’: “AA55A55A28FDD20700000100”,
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTI4RkREMjA3MDAwMDAxMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

‘QUERY_STATE’: “AA55A55A17FDE10900000100”
#!/bin/bash

echo "<HEADER MsgType="MSG_TRANSIT_SHAS_REQ" MsgSeq="1" From="02000000000000000" To="01801930aea421f164" Keep="1"/><BODY>PFRSQU5TSVRfSU5GTz48Q09NTUFORD5ST0JPVF9DTUQ8L0NPTU1BTkQ+PFJUVT5BQTU1QTU1QTE3RkRFMTA5MDAwMDAxMDA8L1JUVT48L1RSQU5TSVRfSU5GTz4=</BODY></MESSAGE>\r\n\r\n" >/dev/udp/192.168.1.69/10684

Have you a water control code AA55A55A0BFDE20906???

hello English is not my native language. And i have a problem how can I change ‘vacuum.proscenic_*’ services instead of the default.
Integration proscenic not found when trying to verify its vacuum platform.

1 Like

I cannot fully understand your question, especially the part with changing the services.

In order to be found first you add its files to custom_components folder, then restart, and after that you add the vacuum in configuration.yaml . Then restart and it should work. :slight_smile:

file __init__.py from proscenic.zip is empty. should it be like that (I am newbie)?
I get error:

Platform error vacuum.proscenic - cannot import name 'VACUUM_SERVICE_SCHEMA' from 'homeassistant.components.vacuum' (/usr/src/homeassistant/homeassistant/components/vacuum/__init__.py)

It was written before about year … It was for older version of hassio …

today not work??

In the newest hassio probably it doesn’t … If you are using 0.8x or 0.9x it will probably still work … I’ll have to test it at home if it works … :slight_smile: Sorry that I left this integration in the past …

1 Like

I need to really use my robotic with the latest version of Hassio. Can someone please describe if it works??? Thank you advance so much.

Ditto, an update would be good