Ich habe Tado Heizungsregler an 4 Heizkörper.
Hier mal der Code :
'{"time":{"start":"00:00","end":"23:59","mode":"hours","interval":1},"period":{"days":1}}'/* -- do not edit following lines - START --
{
"expert": true,
"debug": false,
"verbose": false
}
-- do not edit previous lines - END --*/
// tado Script für ioBroker
// Version 0.1
//
// Anleitung:
// 1. Pro Thermostat muss ein Script erstellt und individuell konfiguriert werden!
// 2. Eindeutigen Raumname im Konfig-Bereich des Scripts für das Thermostat angeben. Bei mehreren Thermostaten in einem Raum bitte unterschiedliche Raumnamen verwenden.
// 3. Über folgende URL (Nutzername und Passwort in der URL angeben) per WEbbrowser die HomeID ermitteln und in dem Konfigurations-Teil des Scripts eintragen:
// https://my.tado.com/api/v2/me?username=USERNAME&password=PASSWORT
// 4. Über folgende URL (HOME ID, Nutzername und Passwort in der URL angeben) per Webbrowser die ZoneID ermitteln und in dem Konfigurations-Teil des Scripts eintragen:
// https://my.tado.com/api/v2/homes/HOMEID/zones/2/state?username=USERNAME&password=PASSWORT
// - Die "2" im Link steht für ZoneID 2, in meinem Fall war das das Thermostat im Wohnzimmer
// - am besten unterschiedliche Temperaturen in den Räumen per App einstellen und dann verschiedene Zahlen im Link durchprobieren
//
//
// Quellen die bei der Scripterstellung geholfen haben:
// http://wirres.net/article/articleview/10326/1/6/
// http://blog.scphillips.com/posts/2017/01/the-tado-api-v2/
schedule("*/10 * * * *", function () { // Zeiteinstellung: Script aktualisiert alle 10 Min die Werte. Bei geringeren Abfrageintervallen kann es zu Verbindungsabbrüchen kommen und alle Geräte müssen neugestartet werden!
//[b]Konfiguration:[/b]
var Raumname = 'Badezimmer'; // Der hier angegebene Raumname dient zur Benennung des erzeugten Channel Objekts in ioBroker
var ZoneID = "****************"; // Zonennummer des Raums (muss über API URL ermittelt werden, siehe Anleitung)
var HomeID = "***************"; // HomeID (muss über API URL ermittelt werden, siehe Anleitung)
var Username = "*************; // tado Username (E-Mail Adresse)
var Password = "************"; // tado Passwort (Sonderzeichen müssen entsprechend umgewandelt werden, z.B. # = %23)
// SCRIPTBEGINN - AB HIER NICHTS VERÄNDERN !
var url = "https://my.tado.com/api/v2/homes/"+HomeID+"/zones/"+ZoneID+"/state?username="+Username+"&password="+Password; // API URL
//läd die Json herunter
var request = require("request");
request(url, function (error, response, body) {
//parst die Json
var json = JSON.parse(body);
//Datenpunkterstellung:
createState("tado." + Raumname + ".temperature", 0, false, {type: "number", name: "temperature", desc: "Eingestellte Temperatur", role: "value.temperature", unit: "°C", read: true, write: true});
createState("tado." + Raumname + ".power", "OFF", false, {type: "string", name: "power", desc: "Aufheizen", read: true, write: true});
createState("tado." + Raumname + ".inside_temperature", 0, false, {type: "number", name: "inside_temperature", desc: "Gemessene (Raum-)Temperatur", role: "value.temperature", unit: "°C", read: true, write: true});
createState("tado." + Raumname + ".humidity", 0, false, {type: "number", name: "humidity", desc: "Luftfeuchtigkeit", role: "value.humidity", unit: "%", min: 0, max: 100, read: true, write: true});
createState("tado." + Raumname + ".heatingpower", 0, false, {type: "number", name: "heatingpower", desc: "Heizkraft", unit: "%", min: 0, max: 100, read: true, write: true});
//Datenabfrage:
//Temperatur:
setState("javascript.0.tado."+Raumname+".temperature", json.setting.temperature.celsius);
log('tado Temperatur '+Raumname+': ' + json.setting.temperature.celsius);
//Power:
setState("javascript.0.tado."+Raumname+".power", json.setting.power);
log('tado Power-Setting '+Raumname+': ' + json.setting.power);
//Humidity:
setState("javascript.0.tado."+Raumname+".humidity", json.sensorDataPoints.humidity.percentage);
log('tado Humidity '+Raumname+': ' + json.sensorDataPoints.humidity.percentage);
//Inside Temperature:
setState("javascript.0.tado."+Raumname+".inside_temperature", json.sensorDataPoints.insideTemperature.celsius);
log('tado Inside Temperature '+Raumname+': ' + json.sensorDataPoints.insideTemperature.celsius);
//Heating Power:
setState("javascript.0.tado."+Raumname+".heatingpower", json.activityDataPoints.heatingPower.percentage);
log('tado Heating Power '+Raumname+': ' + json.activityDataPoints.heatingPower.percentage);
});
});