NEWS
Beca Thermostate einbinden (Firmware-Mod)
-
hatte mir einen BHT-002-GBLW von aliexpress geholt und habe es heute endlich angeschlossen und geflasht.
Flashen über tuya-convert hat geklappt
Nach dem flashen hat er sich zunächst immer wieder neu mit dem tuya-convert AP verbunden - hat etwas gedauert das herauszufinden. Danach konnte ich das Themorstat aber in mein Wifi einbinden und mqtt konfigurieren.
Scheint erstmal zu funktionieren... Vielen Dank @WalHatte dann mal versucht schedules zu setzen, aber wie kann ich die anzeigen? Aktuell bekomme ich im Objekt-Tab den sunday angezeigt:
Gibt es in dem mqtt adapter sowas wie eine console, über die ich die kommandos absetzen kann und dann die "3 separate messages for workday, saturday and sunday" mal sehen kann?Ansonsten ist mir noch aufgefallen, dass das wifi symbol im Display nicht an ist, aber das ist ja nicht entscheidend...
-
@axelander
wenn du den mqtt-server auf Debug setzt, bekommst du die Wochentage im Log angezeigt.
In Schedules eine 0 eintragen, dann aktualisiert er und du siehst es im Log.
Du kannst auch mit dem Node-Red-Adapter arbeiten, um Schedules zu bearbeiten. -
Vielen Dank erst mal an Wal für diese coole Lösung
Habe das bei Github gefunden und mir direkt mal zwei BHT-002-GBLW (von MOES) gekauft und mit Tuya Convert geflasht.
Noch nicht produktiv, scheint aber alles zu gehen. Ich sehe Meldungen im MQTT Browser und kann die Zieltemp. (desiredTemperature) setzten und das Thermostat reagiert.
Kleiner Schönheitsfehler für mich ist noch die Zeit ist immer UTC also eine Stunde weniger als bei uns.
<topic>/timeTone bleibt leer.
Stelle ich die Zeit am Themostat ist sie bei nächsten NTP Sync wieder falsch.
Hab schon folgendes versucht:Im DHCP Server Zeitinformationen mitgeben
option time-offset 3600;
option tcode "Europe/Berlin";
option pcode "CET-1CEST,M3.5.0/2,M10.5.0/3";
oder
option pcode "GMT+01:00";Per MQTT Publish <topic>/timeZone auf:
Europe/Berlin (mit und ohne "")
oder CET
oder GMT+01:00Wenn das nächste <topic>/state kommt ist timeZone wieder leer.
Oder muss das als JSON? desiredTemperature geht ohne -
Ich glaube ich hab es selbst gefunden
Also die ganzen Smarthome Devices dürfen bei mir nicht ins Internet.
Weil einige sich aber keinen anderen Zeitserver unterjubeln lassen (z.B. per DHCP) ist der Zugriff auf NTP erlaubt.Ich hatte jetzt mal testweise das Thermostat mit ins Internet gelassen und schon hab ich auch eine Zeitzone.
Das Log sagt mir eine NTP Anfrage an 217.13.65.177 (das klappte ja auch vorher schon) und eine Anfrage auf 52.18.156.77 Port 80.Nanu, was ist denn das?
Hab dann mal im Sourcecode gesucht und siehe da in KaClock.cpp:String request = "http://worldtimeapi.org/api/ip";
Die liefern offensichtlich zu eigenen IP eine Zeitzone.
Also Firewallregel angepasst, das Thermostat darf auf http://worldtimeapi.org:80 zugreifen und gut ist.
-
Hallo zusammen
Ich habe heute einen BHT002GCLW mit der BecaThermostat0.95 Firmware von Klaus Ahrensberg geflasht.
Das Gerät ist im Netz und sendet fleißig MQTT-Strings , allerdings nimmt das Thermostat nicht meine gesendeten Temperaturen an.
Hat jemand den genauen Aufbau des Publish-Strings? -
Firmware läuft prima bei mir, danke dafür.
Hätte da noch eine Frage wie bekomme ich die ganzen Datenpunkte hin wie es bei dir im Bild ist? -
@bishop ,
normalerweise werden die automatisch erzeugt. Ich muß aber leider gestehen, das ich auf die neue Firmware von Klaus Ahrenberg umgeswitcht bin. Die sendet nur noch ein Json-String über MQTT, den ich mit einem Skript danach auswerte, da ich den Hardwaremod für die Abfrage des Relais gemacht habe.createState("javascript.0.Wohnzimmer.Isttemperatur", {type: "number"}); createState("javascript.0.Wohnzimmer.Solltemperatur", {type: "number"}); createState("javascript.0.Wohnzimmer.Heizen", {type: "boolean"}); on({id: "mqtt.0.beca.thermostatbeca_6036635.things.thermostat.properties", change: "ne"}, function (obj) { var value = JSON.parse(obj.state.val); setState("javascript.0.Wohnzimmer.Isttemperatur", {val: value.temperature, ack: true}); setState("javascript.0.Wohnzimmer.Solltemperatur", {val: value.targetTemperature, ack: true}); if (value.state=="off") { setState("javascript.0.Wohnzimmer.Heizen", {val: false, ack: true}); setState("sonoff.0.Sonoff_Heizung.POWER", {val: false, ack: true}) } else { setState("javascript.0.Wohnzimmer.Heizen", {val: true, ack: true}) setState("sonoff.0.Sonoff_Heizung.POWER", {val: true, ack: true}); }; console.log(value.temperature); console.log(value.targetTemperature); console.log(value.state); });
-
danke
ich meinte eigentlich so wo in deinem Bild am Anfang.
Habe das mal versucht:
wieso bekomme ich so keine änderungen!?!
Habe mal dein Script auf mich angepasst.
createState("mqtt.0.Fussbodenheizung_Bad.things.TemperaturRaum", {type: "number"}); createState("mqtt.0.Fussbodenheizung_Bad.things.TemperaturSoll", {type: "number"}); createState("mqtt.0.Fussbodenheizung_Bad.things.TemperaturBoden", {type: "number"}); createState("mqtt.0.Fussbodenheizung_Bad.things.heizen", {type: "boolean"}); on({id: "mqtt.0.Fussbodenheizung_Bad.things.thermostat.properties", change: "ne"}, function (obj) { var value = JSON.parse(obj.state.val); setState("mqtt.0.Fussbodenheizung_Bad.things.TemperaturRaum", {val: value.temperature, ack: true}); setState("mqtt.0.Fussbodenheizung_Bad.things.TemperaturSoll", {val: value.targetTemperature, ack: true}); setState("mqtt.0.Fussbodenheizung_Bad.things.TemperaturBoden", {val: value.floorTemperature, ack: true}); if (value.state=="off") { setState("mqtt.0.Fussbodenheizung_Bad.things.heizen", {val: false, ack: true}) } else if (value.state=="heating") { setState("mqtt.0.Fussbodenheizung_Bad.things.heizen", {val: true, ack: true}); }; //console.log(value.temperature); //console.log(value.targetTemperature); //console.log(value.state); });
jetzt wäre es noch schön wenn ich die TemperaturSoll ändere, er es auch sendet!
was ich auch nicht ganz verstehe, warum werden die Datenpunke mit "createState" nicht automatisch angelegt?
-
@bishop ,
für Solltemperatur must du dir ein Object "targetTemperature" erstellen, siehe Bild.
-
@Wal
kannst du mal auf den stift gehen und mir den Inhalt zeigen?so wie ich das oben im Bild gemacht habe -> topic oder?
ändern kann ich den wert, wenn ich einen eintrage wird er auch gesendet!
Er wird aber nicht aktualisiert wenn ich am Becathemostat ein wert eingebe!?!
Kann es sein das er den Topic nur sendet aber nicht empfängt? -
@bishop ,
du mußt das Objekt unter properties erstellen siehe mein Bild.{ "_id": "mqtt.0.beca.thermostatbeca_6036635.things.thermostat.properties.targetTemperature", "type": "state", "common": { "name": "targetTemperature", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "°C", "min": 15, "max": 30, "def": 20, "read": false, "write": true }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1583050297419, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
-
Ja gesendet wird nur der properties-string, deswegen das Auswerteskript.
-
@Wal
habe gesehen das es neue Updates gibt!läuft soweit ich bekomme nun in stat im MQTT Adapter alles gesendet ohne vorher anlegen zu müssen.
Meine Frage ist jetzt, wie bekomme ich die cmnd angezeigt damit ich auch aus dem Mqtt Adapter steuern kann?
Die werden bei mir nicht angelegt. -
@bishop
aktuell ist die 1.09 von fashberg, da habe ich aber noch einen pullrequest am laufen, da er die cmnd nicht erstellt wie du schon sagtest.
du kannst das Objekt selber erstellen.cmnd/things/thermostat/properties/ecoMode
cmnd/things/thermostat/properties/mode
cmnd/things/thermostat/properties/locked
cmnd/things/thermostat/properties/targetTemperatureecoMode u. locked als Logikwert
mode als Zeichenkette
targetTemperature als Zahlmode steht für "off,heat,auto" heisst soviel wie "aus,hand,Wochenschaltung"
-
Mit pullrequest sieht es dann so aus:
-
Hallo würde mich mal interessieren ob die auch mit dem Broadlink Adapter zusammen spielen.
Würde ich fast wetten. Könnte das jemand mal antesten ? -
@Wal
Vielen Dank werde ich testen.P.s. dein Boden hat 104,5 grad
edit.
Funktioniert das ich die Werte ändern kann, aber im tele/log kommt "warning: Not sending state via MQTT Fussbodenheizung_Bad/stat/things/thermostat/properties, deviceStateComplete=false"
in den stats wird dann auch nichts geändert. -
Guten Morgen
Ich habe nun endlich erfolgreich per Tuya-Convert ein meiner Thermostate geflasht. Jedoch habe ich nun Tasmota 8.20 drauf. Wie bekomme ich nun die FW für das Thermostat installiert? Die Version 1.0.3 von Klaus Ahrenberg sitzt wohl auf Tasmota 7.x, smit geht kein Downgrade. Habt ihr ne Firmware, die auf Tasmota 8.x aufgebaut ist?
Im Moment habe ich aus einem funktionierenden Tuya Thermostat einen Tasmota Briefbeschwerer gemacht, aber wenigstens ist das 1. Thermostat schon mal den China-Cloud-Zwang los. Den Rest schaffe ich bestimmt noch mit Euch zusammen.
Über diesen Weg habe ich geflasht: https://ownsmarthome.de/2019/12/07/tasmota-mit-tuya-convert-over-the-air-flashen/
Hat erst mal prima geklappt. Nun fangen die Probleme an
Danke schon mal im Voraus.
-
@leonracer
kannst du nicht die bin auswählen bei tasmota upgrade und flashen? Wenn nicht versuch mal eine tasmota minimal zu flashen und dann die bin!?! -
@leonracer
du musst die Tasmota 7.2 minimal flashen, danach die 1.09 von Fashberg. Firmware 1.09 Fashbergedit: danach Pfeil nach unten für 7sec. um das Thermostat in den AP-Mode zu versetzen ... das Übliche wie bei Tasmota.