Nützliche Tado Befehle (Switch für Manauelle/Automatische Steuerung)

  • Hallo liebe Leute,


    ich habe mal wieder was richtig tolles gefunden auf meiner Suche nach einer Lösung für die Tado Thermostate bzgl des "Fenster auf > Heizung aus" Problem.


    Da ich die Tado Heizkörperthermostate verwende und eigtl mit der Tado App und der nativen HomeKit Unterstützung zufrieden bin, gibt es eine klitze kleine aber für mich dennoch wichtige Sache die mich stört.


    Das Problem mit den Fenstern. Tado unterstütz ja das erkennen von offenen Fenstern und dabei das ausschalten von Heizungen bis zu 60min. Ich habe das soweit getestet und bin überhaupt nicht zufrieden mit der nativen Lösung da zumal das Erkennen über die Temperstursensoren läuft und nicht Fensterkontakte.


    Und wenn ich mir eine eigene Automation erstelle mit (Wenn Fenster auf, dann Heizung aus) hatte ich das Problem das es auf "Manuell" geschalten wird und ich beim wieder schließen des Fenster selber auf "Automatik" schalten muss über die Tado App.


    Und genau hier setzt meine Lösung an. Ich habe mir mal die Tado API angeguckt und man kann tatsächlich mit einem gaaanz einfachen cURL Befehl die "Manuelle" Steuerung rausnehmen und wieder auf Automatik setzen!


    Ich verwende zum Ausführen der Befehle CMDSWITCH2 und habe mir sogar ein "State" Befehl mit eingebaut so das ich in der Apple Home App sehen kann ob die Heizung/Heizungen gerade auf Manuell geschalten sind oder auf Automatik laufen.


    Lange Rede kurzer Sinn. Bevor wir anfangen müssen wir, falls ihr es ebenfalls mit CMDSWITCH2 lösen wollt, dieses auch installieren:


    Code
    sudo npm install -g homebridge-cmdswitch2


    Und anschließend auch das JQ Tool installieren (wird später wegen der Status Anzeige gebraucht):


    Code
    sudo apt-get install jq


    So jetzt hätten wir schonmal alles vorbereitet. Als nächstes müssen wir einige Daten ais der Tado API auslesen um später auch Änderungen setzen zu können. Zu allererst brauchen wir die homeID. Dafür einfach folgendes in Terminal eingeben:


    Schritt 1:

    Code
    curl -s 'https://my.tado.com/api/v2/me?password=*****&username=***@***.**' | jq -r '.homes[].id'

    (Die Sternchen mit eigenen Daten Füllen!)


    Als Output müsstet ihr eine Nummer gekriegt haben (das ist die Home ID), diesen notieren wir uns und machen weiter mit den "Zones"


    Damit wir die Räume seperat steuern können brauchen wir die Zone ID. Das geht genauso einfach. Folgendes in Terminal tippen:


    Schritt 2:

    Code
    curl -s 'https://my.tado.com/api/v2/homes/HOMEID/zones?password=****&username=***@***.**' | jq '.[] | .id, .name'

    (HOMEID mit der eigenen ersetzen aus Schritt 1! Und Sternchen mit eigenen Daten füllen!)


    Hier kriegen wir als output sowohl die ZoneID als auch den dazugehörigen Raumnamen. Auch diese notieren wir uns!


    Damit hätten wir alle Daten die wir zum Schalten von der Manuellen Steuern wieder zurück auf Automatik brauchen!


    Jetzt kommt CMDSWITCH2 ins Spiel


    https://github.com/luisiam/homebridge-cmdswitch2


    Damit man alles besser nachvollziehen kann erstelle ich mal beispielhaft eine Switch. Folgende Parameter habe ich mir aus den obigen Schritten notiert:


    Code
    Aus Schritt 1
    HomeID: 123456
    
    Aus Schritt 2
    ZoneID: 15
    Zone: Wohnzimmer


    Meine Config würde dann folgendermaßen aussehen:



    Wie man der Config entnehmen kann hat mein "on_cmd" keine Funktion, da ich den Switch selber nie einschalte. Ich brauche nur die "State" Funktion um zu gucken ob gerade eine Heizung auf Manuell geschalten ist und natürlich die "off_cmd" Funktion um die Manuelle Steuerung auszuschalten.


    Man kann natürlich auch mit anderen Sachen rumspielen, für mich war aber einzig allein das mit dem abschalten der Manuellen Steuerung wichtig.


    Meine Automation sieht demnach so aus:


    - Wenn Wohnzimmer Fenster auf - Dann Heizung aus (nach ausschalten geht die Heizung automatisch auf die Manuelle Steuerung über und unsere erstellte Switch geht automatisch auf 'ON')


    - Wenn Wohnzimmer Fenster zu - Dann schalte Manuelle Steuerung wieder aus (Schaltet die erstellte Switch und somit die manuelle Steuerung wieder aus und die Heizung läuft wieder auf automatik)



    Ich hoffe ich habe es leicht und verständlich erklärt und wenn dennoch Fragen aufkommen sollten einfach her damit :)


    Ansonsten freut es mich wenn ich damit einigen helfen konnte.


    Liebe Grüße,


    SmartX

    2 Mal editiert, zuletzt von SeydX () aus folgendem Grund: Bug behoben wo die Statusabfrage nicht richtig funktioniert hat

  • Das kannst du mit dem IFTTT Plugin auch ganz einfach machen. Habe ich schon seit einem Jahr in gebrauch.


    Hatte ich mal hier erklärt:


    Tado



    Aber auch ein Interessanter Ansatz denn du hast ;)

  • Da siehst du mal, hättest mal besser gefragt 8o


    Zitat

    die automatische Erkennung in Apple Home

    Was meinst du genau damit? Also die Anwesenheitserkennung für Tado läuft bei mir auch noch über Tado sowie Zeitpläne.


    Ich nutze denn IFTTT Schalter auch nur um zurück auf denn Automodus zu wechseln. Das wird in HomeKit am Thermostat auch direkt angezeigt wenn der Status sich ändert.

  • Mit der automatischen Erkennung meine ich nicht die Anwesenheits Erkennung, sondern den Zustand des Heizkörperthermostats ob es über die manuelle Steuerung làuft oder Automatisch.


    d.h. sobald ein Thermostat auf manuelle Steuerung springt, sei es wegen manuelles Heizen oder manuelles Ausschalten, geht der erstellte Switch sofort an, da kann ich dann direkt in dee Home App sehen ob die manuelle Steuerung an ist oder nicht

  • Ok, das funktioniert mit IFTTT nicht, verstehe aber nicht wofür du es brauchst kannst doch am Originalen Schalter vom Thermostat in HK sehen wenn er auf aus steht das er im manuellen Modus ist bzw. über den Status.

  • naja speziell den manuellen Modus kann man ja nicht sehen. Man sieht nur ob die Heizung heizt oder nicht bzw aus ist. Klar daraus kann man ableiten das sie über die manuelle Steuerung läuft wenn die Heizung auf aus ist, je nach Heizplan, aber wie bereits erwähnt sieht man nicht "direkt" den Schalter für die manuelle Steuerung, jedenfalls nicht in der Home App, in der Tado App sieht man es ja.


    Ich habe aber eine Switch in der Home App gebraucht um genau diesen Schalter den es in der Tado App ja gibt (Also manuelle Steuerung) zu zeigen.


    Ich habe quasi für alle Tage nen Heizplan erstellt in der Tado App. Das läuft ja soweit gut, nur funktioniert der Heizplan in der Tado App ja nicht wenn ich die Thermostate in Verbindung mit den Fensterkontakten ausschalte via Automation (da sie ja dann in den manuellen Modus wechseln) und ich habe keine Lust gehabt jedesmal die manuelle Steuerung in der Tado App rauszunehmen. Klar man kann das auch in der Tado App mit Timer oder 'bis zum nàchsten Zeitblock' lösen, aber ich wollte halt etwas haben damit ich nur diesen einen Schalter in der Home App triggern kann und ich auch direkt in der Home App sehe, ohne mir ableiten zu müssen, ob die Heizung jetzt manuell läuft oder nach Heizplan.


    Und den Status der manuellen Steuerung frage ich ja deswegen ab, weil falls ich die Heizung mal selber hochdrehe zb direkt am Thermostat, dann zu sehen, wieder ohne es ableiten zu müssen, ob es grad manuell läuft oder automatisch ^^


    Ich möchte halt so wenig wie möglich mit externen Apps machen und lieber alles über die Apple Home App gestalten ^^

  • Hey, danke für die super Anleitung! Geht das ganze auch in die "andere" Richtung? Hätte gerne einen Switch, der mir anzeigt, ob der Automatikmodus an oder aus ist... eben auch mit state funktion.


    Hab es grade mal zum testen mit deiner Variante probiert, funktioniert irgendwie nicht so recht. Switch springt immer auf "An" und hat keine funktion..

    Gebe ich den overlay befehl "nackt" in den Browser ein, wird folgendes ausgegeben:

    Code
    {"errors":[{"code":"notFound","title":"overlay of zone 4 not found"}]}


    Habe noch etwas weiter rumpobiert, mit meiner Zone 1 geht es.. merkwürdig..

    Code
    {"type":"MANUAL","setting":{"type":"HEATING","power":"ON","temperature":{"celsius":21.00,"fahrenheit":69.80}},"termination":{"type":"MANUAL","projectedExpiry":null}}

    4 Mal editiert, zuletzt von krmkrx ()

  • Andersrum geht es auch ohne probleme, einfach im "state_cmd" Bereich anstatt MANUAL folgendes eingeben - null -


    Off Befehl funktioniert nur in Verbindung mit DELETE , also 'curl -X DELETE ...' ansonsten wird die Fehlermeldung ausgegeben die du hast


    Bzgl das es immer auf "An" springt probiere nochmal folgenden Befehl

    (hab gleich mal andersrum gemacht so das es diesmal nur auf an gehen sollte wenn auf Automatik läuft)



    Code
    curl -s 'https://my.tado.com/api/v2/homes/HOMEID/zones/ZONEID/state?password=****&[email protected]' | jq '.overlayType' | grep 'null'
  • Ich habe jetzt beide Varianten nochmal probiert, leider gehen beide Switches sofort aus und der Tado Modus ändert sich nicht, schade. Wäre wirklich deutlich schöner als der Umweg über IFTTT.

  • Ich denke/hoffe nicht, dass es an der Config liegt, sie ist ziemlich lang. Aber hier:


  • Hier der Output beispielhaft für Zone 5:

    Code
    {"tadoMode":"HOME","geolocationOverride":false,"geolocationOverrideDisableTime":null,"preparation":null,"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":20.00,"fahrenheit":68.00}},"overlayType":"MANUAL","overlay":{"type":"MANUAL","setting":{"type":"HEATING","power":"ON","temperature":{"celsius":20.00,"fahrenheit":68.00}},"termination":{"type":"TADO_MODE","projectedExpiry":"2018-01-18T21:00:00Z"}},"openWindow":null,"link":{"state":"ONLINE"},"activityDataPoints":{"heatingPower":{"type":"PERCENTAGE","percentage":22.00,"timestamp":"2018-01-18T18:08:33.305Z"}},"sensorDataPoints":{"insideTemperature":{"celsius":20.11,"fahrenheit":68.20,"timestamp":"2018-01-18T17:57:27.005Z","type":"TEMPERATURE","precision":{"celsius":0.1,"fahrenheit":0.1}},"humidity":{"type":"PERCENTAGE","percentage":55.70,"timestamp":"2018-01-18T17:57:27.005Z"}}}


    Und hier für Zone 1:

    Code
    {"tadoMode":"HOME","geolocationOverride":true,"geolocationOverrideDisableTime":"2018-01-18T21:30:00Z","preparation":null,"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":21.00,"fahrenheit":69.80}},"overlayType":null,"overlay":null,"openWindow":null,"link":{"state":"ONLINE"},"activityDataPoints":{"heatingPower":{"type":"PERCENTAGE","percentage":0.00,"timestamp":"2018-01-18T18:10:59.031Z"}},"sensorDataPoints":{"insideTemperature":{"celsius":22.13,"fahrenheit":71.83,"timestamp":"2018-01-18T18:10:54.051Z","type":"TEMPERATURE","precision":{"celsius":1.0,"fahrenheit":1.0}},"humidity":{"type":"PERCENTAGE","percentage":40.60,"timestamp":"2018-01-18T18:10:54.051Z"}}}
  • Scheint doch zu funktionieren


    hier mal 2 Befehle zur Status Abfrage beider Räume, einfach mal in Terminal eingeben (vorher mal bitte ein Thermostat auf Manuell und das andere auf Automatik stellen zur Überprüfung im Terminal)


    Für Zone 5:

    (HOMEID, Password, Username mit den eigenen Werten ersetzen!)


    Code
    curl -s 'https://my.tado.com/api/v2/homes/HOMEID/zones/5/state?password=***&username=***@***.**' | jq '.overlayType' | grep 'null'



    Für Zone 1:

    (HOMEID, Password, Username mit den eigenen Werten ersetzen!)


    Code
    curl -s 'https://my.tado.com/api/v2/homes/HOMEID/zones/1/state?password=***&username=***@***.**' | jq '.overlayType' | grep 'null'



    Als Ausgabe müsste - null - stehen im Terminal (falls Thermostat auf automatik läuft)


    Andernfalls, falls Thermostat auf manuell läuft, dürfte nichts ausgegeben werden.



    Könntest du das mal testen bitte und sagen ob das auch so ausgegeben wird?


    lg

  • Die Werte werden richtig ausgegeben. Habe alle meine Zonen durchgetestet.


    Es wird "null" beim Automatikmodus ausgegeben und nichts, wenn das Thermostat auf manuell steht.


    Woran könnte es denn liegen, das die Schalter bei mir gar nicht funktionieren? Scheint ja alles sauber zu sein.

  • Die Befehle die du nun zum Überprüfen getestet hast kannst du in state_cmd einfügen


    also


    für Zone 1


    Code
    "state_cmd":"curl -s 'https://my.tado.com/api/v2/homes/HOMEID/zones/1/state?password=***&username=***@***.**' | jq '.overlayType' | grep 'null'"


    und Zone 5:


    Code
    "state_cmd":"curl -s 'https://my.tado.com/api/v2/homes/HOMEID/zones/5/state?password=***&username=***@***.**' | jq '.overlayType' | grep 'null'"


    (HOMEID, Username und Passwort wieder ersetzen)


    dann sollte die Status Anzeige auch diesmal richtig funktionieren :)

  • Sorry aber leider klappt es dennoch nicht. Weder die Statusanzeige ist richtig, noch hat der Schalter irgendeine Funktion/Auswirkung auf den Tado Heizmodus.


    Das hier wird ausgegeben:


    Code
    Jan 19 00:38:57 raspberrypi homebridge[6754]: [2018-1-19 00:38:57] [CMD Switch] Zimmer Automatik is turned off.
    Jan 19 00:38:57 raspberrypi homebridge[6754]: [2018-1-19 00:38:57] [CMD Switch] Zimmer Automatik is on.

    Kleines Update: mittlerweile zeigt der Switch zwar den richtigen Status an, aber beim klicken passiert nichts. Er switcht immer sofort in den vorigen Status zurück. Also wenn er "Aus" anzeigt, bekomme ich ihn nicht an. Daher erstmal nur als Statusanzeige zu gebrauchen?

  • Ja wie ja in meiner Anleitung beschrieben benutze ich es primär als Statusanzeige (Switch geht an wenn auf manuell läuft) und FALLS die Thermostate manuell laufen das ich diese via Switch deaktivieren, also zurück auf automatik, schalten kann


    Je nach belieben kann man es natürlich ändern, ich habe für mich es jetzt so angepasst, das wenn ich manuell den Switch einschalte, dass die manuelle Steuerung aktiviert wird und es auf 24 Grad geheizt wird, beim deaktivieren geht es dann wieder zurück auf automatik


    In der obigen Anleitung hat "on_cmd" keine Funktion, lediglich das manuelle Ausschalten (off_cmd) des Switches bewirkt dass die Heizung wieder zurück in automatik modus geht


    Kannst ja schreiben wie du die Switches gerne hättest (also die On/Off Funktion) bin ja hilfsbereit :)


    lg