Electronic heating thermostat reverse engineering (Beok, Floureon, Decdeal)


(Leszek Leżoń) #21

Hi, could you write how you get AP working?


(Ohad Eytan) #22

Great work! I used it with Floureon and it worked perfectly.


(Eoin Daltún) #23

Tried with the T12-01 but unfortunately it didn’t work. It looks like there is no port open on the device itself so it’s probably subscribed to a service. From some packet sniffing it looks like it sends JSON to AWS but I haven’t been able to find out exactly what it or the App sends.

I could get it into AP mode by just letting it sit there for about a minute.
It would then provide a wireless AP THERM###

It’s this one Floureon Thermostat

This is what a registration messages looks like
{“version”:“3.1”,“Thing_Type”:"_THERMOSTAT",
“Thing_Name”:“th12-001-xx-xx-xx-xx-xx-xx”,
“Sub_Type”:“th12-001”,
“Region_Info”:“eu-central-1”,
“Identity_Id”:“eu-central-1:42ea5a21-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,
“Firmware_Version”:“3.1.1rel”,
“History_Device_Account”:“null”,
“Last_Thing_Name”:“th12-001-xx-xx-xx-xx-xx-xx”,
“Last_Region_Info”:“eu-central-1”,
“Last_APP_Info”:“WeBack”
}


(Ohad Eytan) #24

I paired it with their app first, only then tried with python broadlink.

I’m using this one.


(Eoin Daltún) #25

What app were you using to connect to it?
Mine uses the WeBack app.


(Ohad Eytan) #26

(Eoin Daltún) #27

Thanks for that. Unfortunately it looks like mine is using a different setup.


(Ohad Eytan) #28

I hope you will find a way to configure it.
If you figure it out eventually please keep us updated.


(Joel) #29

Hi all. I have installed three of these, and they’re great so far, apart from the step setting being 1.5C.

This means that I set the temperature to 21C (Auto) but on switches when it gets to 19.5C. I think it also switches off when it gets to 22.5… I’d prefer a 0.5C step

Does anyone know if it’s possible to change this setting some how?

Thanks in advance!

Joel


(Hakam Saffour) #30

Can you explain how you do it?


(Hakam Saffour) #31

Hi @DennisVonDerBey
Can you provide more details?
I am trying to connect to this device

IWhen starting “python2.7 broadlink-thermostat.py” in Python 2.7, I am getting the following:

broadlink discover
Reconnect Disconnect, reason: 1
Disconnect, reason: <paho.mqtt.client.Client object at 0x00000000046BABE0>
broadlink discover
Reconnect Connect, reason: 5
Disconnect, reason: 5
Disconnect, reason: <paho.mqtt.client.Client object at 0x00000000046BABE0>
broadlink discover

By the way, I am able to ping the thermostat


(Dennis Von Der Bey) #32

@hakam
It tries to reconnect to your MQTT broker not your thermostat. Can you connect to the former manually?


(Hakam Saffour) #33

@DennisVonDerBey
In the config file, I changed
mqtt_qos to 1 instead of 2 and it works…on Topic: /broadlink, i got

connect

and the “python2.7 broadlink-thermostat.py” logs the following:

broadlink discover
Reconnect
Connect, reason: 0
broadlink discover
Reconnect
broadlink discover
Reconnect
broadlink discover

What about the Thermostat? it should be first configured to my WLAN SSID and password using the App provided by Floureon Thermostat, right?


(Ohad Eytan) #34

If anyone is interested, I followed thit post to produce this systemd file:

[Unit]
Description=Python bridge from Broadlink devices to MQTT
Documentation=https://github.com/ralphm2004/broadlink-thermostat
After=openhab2.service

[Service]
Type=simple
ExecStart=/opt/broadlink-thermostat/broadlink-thermostat.py
WorkingDirectory=/opt/broadlink-thermostat
Restart=always

[Install]
WantedBy=multi-user.target

(Michal) #35

Hi all,
I have bought Floureon thermostat based on what is written in this thread.

I have tried python script to discover it but with no success. Device is connected to internet and works with WeBack app.

Python script found Broadlink IR blaster but not thermostat found.

Does anyone have any ideas how to get it woking?


(Ohad Eytan) #36

If you look carefully on the thread you will see that this specific device indeed currently doesn’t work with this script.
It might work if someone will figure out the needed changes. but nobody has done it so far.


(Kristof Rado) #37

If I’m right, this will work with this Python script, without modification?


(Thallaa) #38

I have these Floureon thermostats and got them to work. There is one catch, though and I’ll post this here in case someone else is struggling with this.

I’m running the broadlink-thermostat.py on my Linux server, which has multiple network interfaces (one of which is a strictly limited VLAN just for these untrusted Chinese stuff I like to play around with). This script however uses (I believe) the first available interface by default.

The good news is, this is quite easy to fix as the broadlink.discover() has a second optional argument for local ip address to be used for scanning. So I added a configuration option in broadlink-thermostat.conf:

local_ip = '192.168.0.1'

And then made this small change to broadlink-thermostat.py starting at about line 236 after the print:

    print "broadlink discover"
    timeout = conf.get('lookup_timeout', 5)
    local_ip = conf.get('local_ip', '')
    if local_ip == '':
        devices = broadlink.discover(timeout)
    else:
        devices = broadlink.discover(timeout, local_ip)

I’m sure there’s a prettier way of doing this in Python but this does the job for me.


(Winter Mute) #39

Does anyone of you have more than 3 of these thermostats running successfully?

Until yesterday I had installed two of them, worked like a charm after carefully following all the steps mentioned here (big thanks for that!). Today I installed another two thermostats, but when I start the broadlink-thermostat service it discovers only three of them, and it seems quite random, which one is missing.


(Vanja Vršić) #40

Hi Edaltun,

did you find the solution for your thermostat? I found out that my device is connected with this IP 35.157.40.99 - probably WeBack cloud. It should be some way to control the thermostat through the WeBack server - just like the Google or Alexa services are working. On https://35.157.40.99 i get some JSON responses.