NEWS
Floureon Wifi Raumthermostate
-
Leider vergessen auf welcher Seite ich das genau gefunden hab, aber von da bin ich ausgegangen:
https://community.openhab.org/t/electronic-heating-thermostat-reverse-engineering-beok-floureon-decdeal/39251
https://community.home-assistant.io/t/wifi-thermostat-beok-floureon-beca-energy-component/48519/40und andere Seiten von FEHM u.s.w.
Ich glaube dass du den Test mit Pythopn machen solltest, wenn das geht kann ich es einbinden.
Leider kommuniziert mein gerade zurückgeschiktes Floureon nur mit der cloud app und bringt bei jedem Versuch wie bei anderen BL-Devices mit ihnen zu Sprechen einen Fehler -6, im Python und bei meinem Javascript-Versuch! -
@martin sagte in Floureon Wifi Raumthermostate:
Das hier habe ich:
Hat etwas Zeit in Anspruch genommen aber ich habe das C17-GH3 jetzt mit iobroker am laufen (via mqtt). Aber es ist Patching der Firmware erforderlich. Die Aussagen von frankjoke stimmen, das Thermostat redet nach der Initialconfig nur noch mit der Amazon IOT cloud. Das ist aber schlicht MQTT TLS.
Ausgangspunkt für mich war, das die Alexa App nur die Solltemperatur und nicht die aktuelle Raumtemperatur anzeigt, die WeBack APP aber beides.Das Thermostat verwendet einen ESP-12S und die Firmware ist zumindest bei meinem nicht gegen auslesen geschützt.
Erforderlich sind die folgenden Schritte, openssl, ein Hex Editor und esptool.py und die (USB-)Adapter die man zum Flashen eines Arduinos braucht.- Eigenen MQTT Broker mit SSL auf Port 8883 aufsetzen: eigenes Zertifikat mit cn= *.iot.eu-central-1.amazonaws.com , signiert durch eigenes self signed ca Zertifikat. Das * ist zwingend, ein Zertifikat auf den dedizierten Zielhost wird durch die SSL Validierung im ESP abgelehnt.
- Eigener lokaler DNS Server, mit dem der Zielhost a9vvblgf32b6o.iot.eu-central-1.amazonaws.com auf den eigenen MQTT Broker umgebogen wird. Bin nicht sicher ob der Hostname bei allen C17-GH3 identisch ist. Mag von der Firmwareversion und der Geräte Version abhängen, jedenfalls ist der konkrete Hostname im der Firmware als c-string enthalten.
- Firmware aus ESP auslesen und den enthaltene Public Key des Verisign CA Zertifkats durch den Public Key der eigenen CA ersetzen. Das Zertifikat ist ebenfalls als c-string in der Firmware enthalten und daher darf das eigene ca Zertifikat im PEM Form nicht länger sein als das Verisign Zertifikat, aber auch nicht kürzer. Eigenes Zertifikat daher mit Leerzeichen am Ende (nach "-----END CERTIFICATE-----") auf konkrete Länge des Verisign Zertifikates auffüllen. Wenn das eigene Zertifikat zu lang ist: Auf 1024 bit Schlüssel und SHA1 reduzieren. Anschließend gepatchte Firmware wieder in den ESP flashen.
- Da die Firmware ein OTA Update zuläßt hab ich dem Thermostat den Internetzugang in der Firewall verboten, sonst würde das nächste Firmwareupdate alles wirder zunichte machen.
Achtung: das Zertifikat ist wie nahezu alle anderen Abschnitte an zwei Stellen in der Firmware enthalten. Vermutlich wegen der OTA Funktion.
Seit dem sendet Das Thermostat sobald eine Wertänderung eintritt eine Nachricht an meine lokale MQTT Instanz in Form einer json Nachricht:
Topic: $aws/things/<thermostat id>/shadow/update
message:
{
"state":{
"desired":{
"connected":"true",
"working_status":null,
"safe_lock":null,
"set_tem":null,
"workmode":null,
"bgl":null,
"poweron_state":null,
"freeze_protect":null,
"tem_uint":null,
"control_mode":null,
"tem_cal":null,
"inter_sen_cal":null,
"outer_sen_cal":null,
"outer_sen_top":null
},
"reported":{
"connected":"true",
"offset_hours":0,
"offset_minutes":0,
"working_status":"on",
"workmode":"hand",
"air_tem":232,
"floor_tem":0,
"set_tem":46,
"safe_lock":"off",
"bgl":"auto",
"poweron_state":"keep",
"freeze_protect":"off",
"tem_uint":"C",
"control_mode":"inter",
"tem_cal":-20,
"inter_sen_cal":10,
"outer_sen_cal":30,
"outer_sen_top":55,
"Mon":"06:00_044C,08:00_030C,11:00_044C,12:30_030C,17:00_044C,22:00_030C",
"Tues":"06:00_044C,08:00_030C,11:00_044C,12:30_030C,17:00_044C,22:00_030C",
"Wed":"06:00_044C,08:00_030C,11:00_044C,12:30_030C,17:00_044C,22:00_030C",
"Thur":"06:00_044C,08:00_030C,11:00_044C,12:30_030C,17:00_044C,22:00_030C",
"Fri":"06:00_044C,08:00_030C,11:00_044C,12:30_030C,17:00_044C,22:00_030C",
"Sat":"06:00_044C,08:00_044C,11:00_044C,12:30_044C,17:00_044C,22:00_030C",
"Sun":"06:00_044C,08:00_044C,11:00_044C,12:30_044C,17:00_044C,22:00_030C"
}
}
}air_tem ist die aktuelle Lufttemperatur *10
set_tem ist die Zieltemperatur * 2Es spielen auch noch die folgenden Topics in der Kommunikation eine Rolle, Details dazu noch in Arbeit:
Gerät meldet sich beim nächsten Einschalten:
Topic: WeBack/LWT/device_change/device_offline (kommt nicht bei längerer Zeit stromlos)
{"Thing_Name":"<thermostat id>","connected":"false"}
Kommt bei jedem Einschalten:
Topic: $aws/things/<thermostat id>/shadow/update
{"state":{"desired":null, "reported":{"connected":"true","config_app":"WeBack","firmware_version":"3.1.2rel"}}}
Kommt bei jedem Einschalten:
Topic: WeBack/device_change/notify_from_device
{
"Notify_Reason": "timestamp_sync_req",
"Thing_Name": "<thermostat id>",
"Offset_Hours": 0,
"Offset_Minutes": 0
}<thermostat id> entspricht "by-t03-aa-bb-cc-dd-ee-ff" mit aa-bb-cc-dd-ee-ff = MAC des ESP
-
@jaghatei
Danke für die tolle Anleitung, wäre nichts für mich persönlich...Habe mir gerade einen wireless Router mittels eines Raspi2 gebaut und versuche mit Wiresharkiden Dingen auf die Schliche zu kommen.
Bin draufgekommen dass alle Broadlionk-Teile mit China 'telefonieren', aber in UDP und nicht IP/MQTT!
Bin auch draufgekommen dass sie vorerst versuchen mit einem lokalen Rechner in Kontakt zu kommen der auf port 15001 zuhört, antwortet dieser nicht dann versuchen sie einen main-Adresse und eine Backup-adresse zu erreichen, auf verschiedenen ports.
Sie kommunizieren dann alle 25 Sekunden mit dem gefundenen Rechner.Ich habe mir auf der Fritzbox eine Regel 'nur surfen und mailen' erstellt, diese schließt UDP-Kommunikation nach außen aus und teile diese diesen IP's/Macs zu damit sie nicht mehr mit ihren Servern sprechen können. Sie versuchen dann zwar noch immer dns-anfragen für die zwei server zu bekommen, können aber nicht mehr mit ihnen kommunizieren.
Ich versuche jetzt den lokalen server zu simulieren und zu schauen ob man das implementieren könnte ohne das man das Netzwerk verändert.
Ich konzentriere mich aber nicht auf das Floureon sonder auf die anderen Teile. Ziel ist hier dass der Adapter verhindert dass die Geräte nach Hause sprechen und dass man sie mittels einer einfachen Regel 'einsperren' kann ohne sie umprogrammieren oder eigene DNS-Server zu installieren.
Noch einige andere 'Observations':
- Die Geräte ändern ihre MAC-Adressen! Sobald sie das Netzwerk ändert (Die mac-Adresse des routers wahrscheinlich ) ändert das Gerät auch seine MAC-Adresse! Ich hatte zuerst ein Testnetzwerk mit der mobilöe hotspot-Funktion meines notebooks gemacht und am Raspi dann das selbe Netzwerk verwendet. Die Geräte haben auf den beiden Netzwerken dann neue Hostnamen und Macs! Das Erklärt mir auch als ich ein Mesh-Netzwerk aufgebaut habe und das als brige hinter der Fritzbox betrieben habe dass damals alle neu 'eingefangen' werden mussten mittels fritzbox Namen! Einige Nutzer habe auch davon berichtet dass sie Namenänderungen hatten.
- Die Geräte melden sich am Netzwer an und versuchen dann lokale Kommunikation aufzubauen. Es ist mir schon gelungen dies im Adapter zu nutzen da ich Geräte die abgemeldet waren und wieder ins netzwerk kommen damit wieder identifizieren und einbinden kann (sofern sich das Netzwerk (der WLan-Router) nicht verändert hat..
p.s.: Hätte eine Frage an Spezialisten: Verwende am selbstbau-router dnsmasq, wie kann ich dort dns-adressen 'asusschalten' (auf 127.0.0.1 setzten wie im hosts-file?)
-
Super dass das Thermostat mit dem iobroker läuft.
Nur ist mir das viel zu kompliziert, verstehe da nur Bahnhof.
Ein richtiges Tutorial etc. würde mir da weiter helfen. -
@frankjoke : in der /etc/dnsmasq.conf für jeden auszuschaltenden DNS Eintrag folgendes eintragen:
address=/facebook.com/127.0.0.1
und dnsmasq restarten / config neu laden.@martin: kann ich verstehen, aber ich bin für ein zusammenfassendes Tutorial noch nicht weit genug .
Für die einzelnen Schritte kann ich aktuell nur auf viele Seiten verweisen:
opnsense.org als Firewall, DNS Server und vieles mehr.
www.openssl.org zur Erklärung und Generierung von Zertifikaten und CAs etz, aber auch zum debugen der Verbindung zum MQTT ("openssl s_client ...") oder dem Thermostat ("openssl s_server ...")
mosquitto.org zur SSL Konfig des MQTT brokers. (ich musste einen separat installieren, weil ich im iobroker keine zweite mqtt/server instanz mit SSL neben der ersten ohne SSL zum laufen bekommen habe. Einer von beiden ist immer eingefroren.
http://stefanfrings.de/esp8266/ enthält eine gute Übersicht zur PIN Belegung der ESP Module.
https://github.com/espressif/esptool für das esptool zum auslesen und schreiben der Firmware
https://github.com/arendst/Sonoff-Tasmota/wiki für ein paar gute Tutorials zum Flashen von ESP Bausteinen
https://mh-nexus.de/de/hxd/ ein für meine Zwecke mehr als ausreichender HEX Editor für Windows. -
Cool, dass Ihr an der Sache dran bleibt/seit
Leider kann ich gar nicht behilflich sein, da ich nur ein "Anwender" bin... O:)
@jaghatei
Was ich nicht vestehe, wieso versucht das Thermostat sich mit der amazon cloud zu verbinden?
Eigentlich sind die (älteren) Floureons doch gar nicht "Alexa kompatibel".
Meins z.B. (könnte das hy03we4 sein) läuft nur mit der "room heat" app (oder auch der app von "beok"). -
@padrino
betrifft wohl die neueren Modelle mit WeBack App: https://www.amazon.de/gp/product/B07DQ8S82T
Die Anleitung der App verweist auf einen WeBack Alexa Skill. Der Funktionsumfang des Skills ist aber im Vergleich zur App ein Witz.Ich habe die mit Broadlink Chip / room heat App / Beok App (https://www.amazon.de/gp/product/B077G6JKCX) auch im Einsatz (via FHEM mit BEOK Modul -> iobroker)
-
@jaghatei
Danke!Die ganzen Broadlink-Geräte sprechen immer mit zentralen servern und die Handy apps auch, die Apps greifen nicht direkt auf die Geräte zu sondern über die Server (es muss ja auch funktionieren wenn das Handy nicht im Heimnetz ist).
Das einzige was lokal gemacht wird ist die Initialisierung, wenn das Gerät ins wlan eingebunden wird. Das Gerät kreiert sich dazu sein eigenes WLan in daqs sich das Handy einklinkt und dem Gerät dann Wlan SSID und passwort schickt womit das Gerät dann auf das wlan zugreift und dort die Server sucht mit denen es sich mit der Handy app verbinden kann.Deswegen verwende ich solche Geräte die nur über handy apps gesteuert werden können nicht, broadlink war 'ne Ausnahme da ich sie mit dem Broadlink-Adapter rein lokal steuern kann und die Kommunikation mit den zentralen Servern via der Fritzbox unterbinden kann.
p.s.: Ich habe schon etliche gekaufte Geräte wieder 'entsorgt' da sie einfach nicht ohne zentralen Server verwendbar waren. Ich brauch z.B. keine Überwachungskamera die nur über die cloud des Herstellers funktioniert, das mach bei mir lokal der QNAP-Speicher.
Ich kann ja meine Geräte über ioBroker bedienen und brauch keine zusätzliche cloud. -
@jaghatei
Ja, das mit den neuen (optisch anderen) Versionen hatte ich schon mit bekommen.
Dachte (vom Look her), das C17-GH3 wäre noch ein altes. Wusste nicht, dass es von der 1. Gen auch neuere gibt...@frankjoke
Funken denn die RM Pros auch noch im Betrieb "nach Hause"?
Falls ja, hättest Du die Adresse griffbereit, die man unterbinden kann?Hmm, ich frag mich ja, ob es nicht zumindest theoretisch möglich wäre das FHEM "BEOK Modul" für iobroker zu protieren.
Bin froh, dass ich den iobroker einigermaßen im Griff habe, mir jetzt auch noch FHEM zu installieren - und das für ein Gerät - wäre doch wohl overkill.
Zumal ich mir nicht mal sicher bin, ob fhem zusammen mit iobroker reibungslauf auf der PI laufen würde... -
Ja, die RM's funken auch nach Hause, hab aber noch nicht die server gecheckt da mein einziger RM Plus in meinem Produktionssystem ist und nicht im Testnetzwerk das ich 'überwachen' kann.
Allerdings wie schon gesagt, du kannst in der Fritzbox unter Internet/Filter/Zugangsprofile eines erstellen das nur wen und email erlaubt und alles andere abschaltet (Ich hab's IoT lokal getauft).
Auf Internet/Filter/Kindersicherung kannst das dann deinen Broadlink-Geräten zuweisen. Dann können sie nicht mehr mit ihren Servern in UDP sprechen, aber iobroker kann lokal noch mit ihnen reden.p.s.: Habe den PHP source von BEOK gefunden, vielleicht kann ich genug PHP lernen dass ich mal was probieren kann.
-
Habe keine Fritzbox, nur die doofe Easybox von Vodafone.
Allerdings habe ich hier noch einen alten LinkSYS router und ich überlege meine SH Geräte in dessen Netzwerk zu betreiben...Bist Du nicht ein Perl Mensch? Wenn ich nicht irre, ist Perl doch die Programmiersprache von FHEM, also dann wohl auch vom BEOK Modul, oder?
-
@padrino sagte in Floureon Wifi Raumthermostate:
Habe keine Fritzbox, nur die doofe Easybox von Vodafone.
Allerdings habe ich hier noch einen alten LinkSYS router und ich überlege meine SH Geräte in dessen Netzwerk zu betreiben...Bist Du nicht ein Perl Mensch? Wenn ich nicht irre, ist Perl doch die Programmiersprache von FHEM, also dann wohl auch vom BEOK Modul, oder?
Ok, kenn Easybox nicht aber vielleicht kannst du dort auch irgend eine Kindersicherung einrichten die den Datenverkehr mit der Außenwelt regelt!
Ach ja, kann sein dass es Perl ist, die Dateien heißen .pm und ich kenne das nicht!
-
@frankjoke
Hmm, vielleicht kann "perlito" etwas helfen?
https://github.com/fglock/Perlito
(sorry, hab' wirklich null Ahnung und versuch' nur irgenndwie zu helfen... O:) -
@jaghatei sagte in Floureon Wifi Raumthermostate:
Topic: WeBack/device_change/notify_from_device
{
"Notify_Reason": "timestamp_sync_req",
"Thing_Name": "<thermostat id>",
"Offset_Hours": 0,
"Offset_Minutes": 0
}Auf diesen Request erwartet das Thermostat eine Response mit der aktuellen Uhrzeit:
topic: WeBack/device_change/notify/by-t03/<thermostat id>
{"Notify_Info": "timestamp_sync_rsp", "weekday": 4, "hour": 15, "min": 26, "year": 2019, "month": 3, "date": 7}Allerdings funktioniert das Thermostat auch ohne Probleme im manuellen Modus, wenn das nicht gesendet wird. Das Setzen der Uhrzeit dürfte allerdings für die Wochenprogramme von Bedeutung sein.
Werte kann man über folgendes Topic ändern:
topic: $aws/things/<thermostat id>/shadow/update/delta
{"state":{"set_tem": 46}}Das Beipiel setzt die Solltemperatur auf 23 °C.
-
Hallo Zusammen,
was mich dabei etwas wundert, ich habe den Floureon gleich nach dem Einrichten für sämtliche Internet Kommunikation gesperrt in der Fritzbox.
Und er ist mit der App ansprechbar und verstellbar.
Da muss dann ja eine Lokale Funktion eingebunden sein, die man nutzen können müsste?!?!?
bzw. irgendwie scheint es ja ohne cloud zu gehen...Oder liege ich da gedanklich vollkommen falsch?
Danke
-
Hmm, Du müsstest wohl die App, also Dein Handy blockieren, oder?
-
Im Grunde sollte eines doch reichen...
die Verbindung wäre doch Handy - Cloud - Thermostat
wenn also Cloud zu Thermostat gekappt ist kann der Thermostat ja nur noch lokal angesprochen werden.
Habe es aber extra noch mal getestet, auch wenn ich Thermostat sowie Handy in der Fritzbox sperre fürs Internet, kann ich
den Thermostaten mit der App bedienen.Musste aber feststellen, die App lässt sich nur noch mit Standortfreigabe starten ansonsten ist nichts zu machen, geht
ja gar nicht -
@AingTii sagte in Floureon Wifi Raumthermostate:
Habe es aber extra noch mal getestet, auch wenn ich Thermostat sowie Handy in der Fritzbox sperre fürs Internet, kann ich
den Thermostaten mit der App bedienen.Von welchem Thermostat redest du? Von dem welches MQTT messages schickt oder dem mit dem broadlink-Protokoll?
Ich werde das mal weiter testen, auch mit meinem nun selbst gebauten wireless-trap wo ich alle Daten aufzeichnen kann. die zuwischen den Geräten ausgetauscht werden.
Ich scheine die broadlink-protokoll-Version zum Test zu haben da keine https-MQTT-messages auftauchen sondern nur UDP-Messages.
p.s.: Habe das Teil schon vor 2 Wochen verpackt und das Porto schon bezahlt gehabt um es dem netten Kollegen der es mir geborgt hat zurückzusenden aber nochmal ausgepackt um weitere Tests durchzuführen!
-
Hallo,
Kann das nicht helfen?
link text -
Danke für den Link.
Das hab ich schon mit meinem Floureon ausprobiert, funktioniert leider nicht
Krieg die gleiche Fehlermeldung wie bei meinem broadlink2-adapter...
Ich hab mir eins bestellt um beok testen zu können. Mein 'Testthermostat' funktioniert nur mit der Handy-app, aber nicht mit der beok-app.Die Lieferung wird erst im April sein, kommt ja aus dem fernen Osten....