NEWS
Floureon Wifi Raumthermostate
-
Hmm,
sieht äußerlich aus, wie gewohnt, seltsam mit der App…
Den Skill kenne ich leider nicht - nur vom Namen her.
Ich kann hier kein Termometer mit der "weback" app installieren, da ich keine gültige Seriennummer angeben kann, die abgebfragt wird.
Und ohne eingetragenes Gerät in der App macht der Skill auch nix.
Aber ja, der Skill ist nur für Alexa.
Was iobroker angeht, da müssen wir weiter warten und hoffen.
CU,
padrino
-
moin moin,
gibt es denn schon neuigkeiten
-
@Olfrygt
Hallo alle mitsammen!
Ich überarbeite gerade den broadlink2-Adapter und habe mir auch das Floureon angesehen. Ich habe eines geliehen bekommen und habe versuch es einzubinden.Leider funktioniert das überhaupt nicht! das Gerät verwendet das Broadlink-Protokoll nur am Anfang um ins W-Lan integriert zu werden und im W-Lan gefunden zu werden.
Ab dann redet es nur noch über externe Server mit der App https://play.google.com/store/apps/details?id=com.davell.heat_eu
Die App sucht das Teil im Netzwerk, nimmt Kontakt auf mit zwei Servern in China und holt sich dort anscheinend keys, mit welchen sie dann einen anderen Server in der Amazon-cloud anspricht und dieser kontaktiert dann das Gerät um daten zu senden/Empfangen. Das geht, Mit Ausnahme des keys, bei jedem touch auf die App oder alle x-Sekunden so, über die Server in China und in der AWS laufen alle Daten! Das Handy greift nie dirket lokal auf das Floureon zu, mit ausNamhe dass es eine broadcast Message schickt wo siech alle Broadlink-Geräte melden und ihre Typen, ID's und Macs bekanntgeben.
Ich habe im Web auch einige Bibliotheken gefunden, am prominentesten ist broadlink-phython, welches oft verwendet wird.
Dabei bin ich draufgekommen dass dies nur mir Geräten mir 3 verschiedenen Mac-Adressen-Reihen funktioniert.
Mei Teil hat aber leider eine andere Adresse!
Ich habe auch eine Anleitung gefunden wie man mittels dem China-Server mit dem Gerät kommunizieren kann, aber es funktioniert anscheinen nur auf den chinesischen Typen, nicht die EU-Version.Habe auch eine Original API-Beschreibung von Broadlink ergattert, da tauchen diese Geräte auch nicht auf aber es hilft mir andere Geräte einzubinden die ich noch nicht implementiert hatte
Zusammenfassung:
- ich persönlich würde dieses Teil nie einsetzten da es nicht 'lokal' funktioniert. Alle anderen Teile des Broadlink2-Adapter kommunizieren nur lokal im Netz und greifen nicht auf externe server zu! Das gilt wahrscheinlich auch für die Floureon web cams übrigens!
- Alle Hilfsmittel (FEHM, Python, MQTT) haben auf meinem Teil nicht funktioniert (und die Server die angesprochen werden haben andere IPs/Namen als alle Beispiele vorgeben)
- Das Teil hat eine sehr große Hysterese, es kann nur 0,5° auflösen und schaltet meist bei Sollwert-1° Grad ein und Sollwert +1° aus, das möcht ich bei mir nicht haben!
p.s.: Habe mir ein Broadlink S1C bestellt Amazon und werde versuchen das einzubinden. Das schaut mir nach normalen broadlink lokal aus soweit ich python lesen kann.
-
Sehr schade, aber danke fürs probieren.
Kannst Du mir sagen, welche Mac Adressen gehen könnten?
Würde mal schauen, welche meins hier hat...
-
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?