NEWS
Beca Thermostate einbinden (Firmware-Mod)
-
Hallo,
ich habe mir auch dieses Thermostat geholt und mich am Thread orientiert.
Ich habe entsprechend versucht die Objekte hinzuzufügen.
Einige funktionieren, einige nicht. Kann man nicht irgendwo einsehen, welche Subscriptions es gibt und wie sie genau heißen?
Erstelle ich beispielsweise "mode" unter cmnd, wird mir in stats ein neues mode objekt angelegt. Allerdings nicht unter properties sondern eine ebene darüber.
Stelle ich in cmnd targetTemperature auf 16.5 wird dieser Wert auch in stats in dem Objekt unter thermostat gesetzt. Auch am Thermostat wird dieser Wert eingestellt. Die targetThemperature in stats/.../properties/targetTemperature, also eine Ebene tiefer verändert sich jedoch nicht. Dieser Wert wird erst geändert wenn ich es manuell am Thermostat einstelle. Dann ändert sich dafür aber der Wert des Objektes /stats/.../thermostate/targetTemperature nicht...Irgendwie habe ich da wohl noch einen Fehler drin.
Kann mir da jemand helfen
-
@sauerm
Welche Version der Firmware verwendest Du denn? Ich meine, dass die Werte unterhalb von "properties" erst korrekt regelmäßig mit der letzten Beta gefüllt werden. Vorher muss man den Properties Schlüssel im JSON Format auslesen/angucken, wenn man zuverlässig die aktuellen Werte will.
Die JSON Variante ist auch der Standard, die einzelnen Werte unterhalb von Properties als "Klartext" hat er als Hilfe nur "dazugebastelt". Aber wie gesagt, in der letzten Beta sollte man die eigentlich verwenden können.Und Du musst eigentlich keine Objekte hinzufügen, das wird alles von allein bevölkert (zumindest der Status). Die "cmnd" Zweige bekommst Du, wenn Du per MQTT Client die entsprechenden Befehle absetzt.
Dabei kannst Du einfach nur "stat" gegen "cmnd" tauschen, um alle gültigen Befehle zu haben. Also alles was es als "stat" gibt, gibt es glaube ich auch als "cmnd".In meinem Post über deinem Beitrag ist auch ein Beispiel dazu.
-
@berlinerbolle said in Beca Thermostate einbinden (Firmware-Mod):
MQTT Client
Ah, okay, vielen Dank!
Sorry, bin noch ganz neu in mqtt.
Ich verwende die letzte stable 1.18Also müsste ich zusätzlich zum mqtt-server, noch eine client instanz aufmachen über die ich dann Abfragen absetzen kann?
Ich habe deinen Post so interpretiert, dass so die zusätzlich Objekte angelegt werden müssen -
Mir fällt grad auf - ich habe die 1.18 von fashberg drauf. Gab es hier jetzt noch eine separate Version von @Wal?
Kann man eine davon irgendwie in sonoff einbinden? ich würde gern einen meiner adapter loswerden wollen -
@sauerm
Nimm ruhig die 1.19 von fashberg, da funktioniert das zuverlässig mit den separaten properties.
Du musst dir nicht extra eine zweite MQTT Instanz installieren, um Kommandos abzusetzen. Dafür ist (zum Beispiel) MQTT.fx besser geeignet, gibt es auch für Windows. Damit kannst Du auch gleichzeitig lauschen, was so alles in MQTT bei dir los ist.
Hast Du mal geschaut, ob zumindest das JSON Objekt mit allen Properties geändert wird, wenn du die Temperatur am Thermostat änderst? Also was bei dir home/livingr/wthermostat-main/stat/things/thermostat/properties ist? Da sind auch alle properties drin, nur eben alle auf einmal in einem JSON formatierten String.
-
Moin,
ich muss mich hier mal mit einklinken, da ich bei diesem Thema nicht weiter komme und Hilfe benötige.
Ist-Zustand:
- Beca-Thermostate vom Typ BHT-002GALW (funktionieren Top)
- Firmware geflasht mit Fashberg 1.19 beta (funktioniert Top)
- Aliase angelegt und den ganzen Kram im IOT-Adapter verankert, so dass ich mit Alexa darauf zugreifen kann (funktioniert, aber nur im Read-Modus)
- wenn ich Alexa sage, dass die Target-Temp soundso viel Grad Celsius sein soll, wird der Befehl auch problemlos in ioBroker übertragen und angezeigt, nur nach ein paar Sekunden, wenn das Thermostat neue Werte an den ioBroker schickt, wird der Wert mit dem im Thermostat eingestellten überschrieben
Ich bekomme es einfach nicht hin, wie ich per MQTT (bzw. danach per Sprachbefehl an Alexa) den Befehl dauerhaft ans Thermostat senden kann.
Ich benötige mal eine Schritt für Schritt Anleitung.
Was muss ich wie und wo genau anlegen, damit ich zu dem von dir beschriebenen "cmnd-Zweig" komme?
Alles was ich bisher über MQTT weiß - und das ist sehr wenig - hilft mir bei diesem Thema nicht weiter. -
@th16 ,
das Thermostat muss auf Hand stehen, damit das funktioniert. -
@th16 said in Beca Thermostate einbinden (Firmware-Mod):
Aliase angelegt
Was meinst Du damit? In ioBroker werden die Datenpunkte der verschiedenen Statusmeldungen der Thermostate von allein angelegt, da sie von den Thermostaten regelmäßig gesendet werden. Damit hat man dann zumindest schonmal die lesbaren Daten (.../stat/things/thermostat/properties). Zum Setzen der Werte per MQTT müssen die Werte über ".../cmnd/things/thermostat/properties" gesendet werden. Den Zweig bekommst Du am einfachsten dadurch, indem Du mit einem MQTT Client das einfach mal entsprechend raus schickst (schaue was an Daten rein kommt, kopiere die den ".../stat/things/thermostat/properties" String, und ersetze "stat" mit "cmnd". Der Teil den ich mit "..." bezeichnet habe, ist bei dir sicher ein Anderer als bei mir. Als MQTT Client kannst Du zum Beispiel MQTT.fx benutzen.
Das was @Wal ist natürlich absolut korrekt - vielleicht liegt es nur daran, dass deine Thermostate nicht auf Handbetrieb stehen?
P.S.: auf welche Art hast Du die Alexa Anbindung realisiert?
-
Das Thermostat stand auf Automatik - mein Fehler
Aber auch wenn ich es auf Hand gestellt habe, bleibt jetzt zwar der Target-Wert im ioBroker bestehen, doch dieser Wert wird nicht ans Thermostat übertragen. -
Genau das ist mein Problem, wie "schicke" ich mit einem MQTT-Client was heraus?
Alexa-Anbindung:
Als erstes hatte ich versucht im IOT-Adapter die vom Thermostat an den MQTT übertragenen Original-Werte im IOT-Adapter zu hinterlegen und diese dann als Alexa-Geräte abzurufen. Keine Chance, Alexa meint immer nur, dass sie das nicht unterstützt.
Also hab ich dann die beiden Werte (Temperatur und Target Temperatur) als ACTUAL (für aktuelle Temp) und SET (für Target Temp) als Thermostat-Aliase angelegt und diese dann in IOT eingebunden und mit Alexa verbunden - dann ging's. -
@th16 said in Beca Thermostate einbinden (Firmware-Mod):
Genau das ist mein Problem, wie "schicke" ich mit einem MQTT-Client was heraus?
Installiere dir doch einfach mal MQTT.fx und probiere es aus, das ist relativ selbsterklärend. Falls nicht, noch kurz nachlesen, wie MQTT funktioniert. Ich hatte vorher auch keinen Plan davon (bin jetzt auch kein Experte, aber es funktioniert).
Im Endeffekt sagst Du im Client dann nur, was Du schicken willst (Pfad und Wert, in meinem Fall "thermostat/thermOffice/cmnd/things/thermostat/properties/targetTemperature" und Wert z.Bsp. "23.0").
Wenn Du dadurch den Zweig in ioBroker erstmal hast, kannst Du dann auch in ioBroker die Werte setzen, und die werden über MQTT ans Thermostat geschickt - MQTT.fx brauchst Du dafür dann nicht mehr.Bei dem Alexa Teil kann ich dir aber nicht helfen, das hab ich nicht im Einsatz.
-
Ich bin wahrscheinlich doch zu doof das hinzubekommen!
So sieht es jetzt bei mir aus, nur das es nicht funktioniert:Ich kann in diesem "cmnd-Zweig" Zahlen eingeben wie ich will, es wird nicht an das Thermostat gesendet.
Aber es wird eigentlich noch schlimmer.
Denn wenn ich z.B. 17 eingebe, dann passiert erstmal gar nichts.
Nach ca. 1 Min. wird die 17 dann grün angezeigt und wieder ca. 30 Sec. später "blinkt" die 17 im Halbsekundentakt bis sie nach einer weiteren ca. 1 Min. aus dem Feld weg ist.
Das Ganze wiederholt sich ein paar Minuten später.
Als ich aber eine 18 "gesendet" habe geht das Spiel mit der 17 und der 18 im Wechsel so weiter.Also irgendwas stimmt da überhaupt nicht.
Ach so, habe es mit MQTT.fx so gemacht...
-
-
An sich sieht das doch schon gar nicht schlecht aus.
Aber es sieht fast ein bißchen so aus, als ob du da eine Event-Schleife drin hast. Was nimmst Du als MQTT Server? Den von ioBroker? Wie sind deine Einstellungen im ioBroker MQTT Adapter?
-
-
@wal said in Beca Thermostate einbinden (Firmware-Mod):
@th16,
bei dir ist es /stat/cmnd/ , es muss /cmnd/ heißen. stat und cmnd müssen in der selben ebene sein.Tatsächlich, das hab ich ganz übersehen - sorry. @Wal hat vollkommen Recht.
-
Vielen Dank, hab ich gar nicht so für voll genommen und gleich umgestellt.
Es gibt zumindest einen Teilerfolg:
Wenn ich jetzt über MQTT.fx z.B. sende "21", dann wird auch sofort die 21 im "cmnd und im stat-Zweig" angezeigt und zum Thermostat übertragen.Habe danach die Neuverknüpfung zum Alias umgestellt, so dass er auf die Target Temperatur im "cmnd-Zweig" zugreift, so das ich mit Alexa den Temperaturbefehl geben kann.
Dieser wird von Alexa auch ausgeführt und in dem "cmnd-Zweig" angezeigt (siehe Bild).
Doch weiter passiert nichts. Es findet keine Anzeige im "stat-Zweig" statt und es wird auch nichts an das Thermostat übertragen.Mühsam ernährt sich das Eichhörnchen...
PS.: mit diesen Einstellungen hat sich auch mein Log beruhigt.
-
Habe noch ein bisschen herumprobiert und auch ioBroker neu gestartet, aber ich komme da nicht weiter.
Auch wenn man direkt ins Feld eine Zahl schreibt, bleibt die zwar drin stehen, wird aber nicht an das Thermostat weitergeleitet.
Es kann doch nicht sein, dass wenn ich das gleiche Feld mit einer externen Software (MQTT.fx) mit einer Zahl befülle, dass es dann funktioniert und die Daten ans Thermostat weitergeleitet werden und wenn ich innerhalb vom ioBroker das gleiche Feld mit einer Zahl befülle (direkt reinschreibe oder per Alexa-Befehl), dass es dann nicht funktioniert???
Wo ist da der Unterschied?
Kann man das irgendwie anders machen oder umgehen, oder...?`Übrigens, am Ende der Einstellungszeile hat man ja noch ein Schraubenschlüsselsymbol:
Von dort aus kommt man z.B. in die MQTT-Client Einstellungen.
Dort ist aber bei mir nichts aktiviert oder eingetragen.
Muss da was rein? Weil ich hatte dort mal auf aktiv und auch bei publish auf aktiv umgestellt, doch leider hat es auch keinen Erfolg gehabt.Irgendwie muss es doch da eine Lösung geben, wie habt ihr das bei Euch gemacht?
-
@th16 ,
mit einem MQTT-Client funktioniert das nicht, du brauchst ein MQTT-Server. -
@th16 Das ist ein alter Adapter, den Du verwendest - man sollte ihn mE entfernen, da man mit dem anderen Adapter sowohl einen CLient als auch einen Broker zur Verfügung hat. Nimm den mqtt Adapter, der als Client und als Broker eingerichtet werden kann.
Als Broker kann ich ihn Dir zwar nicht uneingeschränkt empfehlen, da der einen BUG mit dem ACK Flag hat, deswegen empfehle ich den MQTT Adapter als CLient zu konfigurieren und dann noch mosquitto zusätzlich, aber Du kannst ja der Einfachheit halber erst mal den MQTT Adapter als Broker konfigurieren.
Allerdings gibt es wie gesagt ein Problem mit dem Broker mit dem ACK Flag, deswegen verwende ich nur noch mosquitto als Broker.