FHEM-Tado/README.md

172 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

2019-10-17 10:07:01 +00:00
# FHEM-Tado
2019-10-17 10:18:02 +00:00
FHEM Modul für [tado](https://www.tado.com/at/) Heizungssteuerung.
Für Fragen / Anliegen bin ich im FHEM-Forum (https://forum.fhem.de/index.php/topic,116764) oder unter philipp@wolfmajer.at erreichbar.
2019-10-17 10:18:02 +00:00
2019-11-14 05:59:16 +00:00
## Was wird unterstützt?
* Übersicht aller Tado Zonen
* Temperatur & Luftfeuchtigkeit
* Batteriestatus
2019-11-22 09:37:39 +00:00
* aktuelle Heizleistung
2019-11-14 05:59:16 +00:00
* Wunschtemperatur
2019-11-25 21:05:14 +00:00
* Overlays (static & timer)
2021-02-23 19:02:31 +00:00
* ChildLock Status (nur Reading)
2019-11-14 05:59:16 +00:00
## Installation
1. Wechsle mit der Console (SSH) in dein FHEM Installationsverzeichnis (Pfad ggf. anpassen):
`cd /opt/fhem/FHEM/`
2. Lade die aktuellste Modulversion auf dein FHEM herunter:
`wget https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/98_TadoAPI.pm`
3. Zur Sicherheit noch die Berechtigungen anpassen:
`sudo chown fhem:dialout 98_TadoAPI.pm`
`sudo chmod 644 98_TadoAPI.pm`
2020-11-11 09:36:06 +00:00
5. FHEM neu starten.
`sudo systemctl restart fhem.service`
6. Fertig, weiter geht´s in FHEM mit der Definition
2019-10-17 10:18:02 +00:00
## Definition & Funktion
In FHEM wird das Modul folgendermaßen definiert:
2019-11-20 05:13:26 +00:00
`define <name> TadoAPI <username> [<homeID>]`
2019-10-17 10:18:02 +00:00
Das Passwort muss mit dem `set <name> <password>` Befehl (z.B. set myTado password 12345) gesetzt werden.
2019-10-17 10:18:02 +00:00
2019-11-22 09:37:39 +00:00
Standardmäßig aktualisiert das Modul alle 5 Minuten die folgenden Werte:
* Zonen Temperatur
* Zonen Luftfeuchtigkeit
* aktuelle Wunschtemperatur einer Zone
* Geolocation aller eingerichteten Smartphones
* API-Status (siehe Bild Modulübersicht)
* Batteriestatus aller Tado Geräte
* Overlays (manuell eingestellte Wunschtemperatur die den Intelligenten Zeitplan überschreibt)
2020-02-08 01:22:32 +00:00
* Timed Overlays (manuell eingestellte Wunschtemperatur, die den Intelligenten Zeitplan für die angegebene Zeitdauer (Sec) überschreibt)
2019-10-17 10:18:02 +00:00
2019-10-17 11:12:09 +00:00
Sämtliche externen Aufrufe sind *nonblocking* ausgeführt.
2019-10-17 10:18:02 +00:00
2019-11-22 09:44:53 +00:00
### Overlay für Zone setzen
2020-12-22 11:58:34 +00:00
`set <name> setZoneOverlay <zonenID> <Wunschtemperatur> [Dauer des Overlay in Sekunden]`
2019-11-22 09:44:53 +00:00
2019-12-27 08:56:19 +00:00
**INFO:** unterstützte Werte der Wunschtemperatur: `remove=delete overlay; 0=heating power off; 1<=desired temperature (overlay)`
2019-11-22 09:44:53 +00:00
2020-10-15 15:57:41 +00:00
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/so.PNG" width="500" />
2019-11-22 09:50:00 +00:00
2020-02-08 01:22:32 +00:00
#### Info für Overlay mit Timer
2020-12-22 11:58:34 +00:00
Kann entweder mit wie oben beschrieben oder, für Widgets von Tablet UI interessant, mit `set <name> timedZoneOverlay <zonenID> <Dauer des Overlay in Sekunden> <Wunschtemperatur>` gesetzt werden.
2020-02-08 01:23:55 +00:00
Bei einem Timer Overlay erscheint in den tado Readings ein neuer Wert `Zone<ID>Lock`. Zusätzlich ist in den Internals noch ein Helper mit der Info welche Zone gesperrt ist. Das kann man in FHEM dann in eigenen Scripts weiterverarbeiten. (z.B. Anwesenheitserkennung soll Overlay nicht überschreiben wenn Timer...)
2020-02-08 01:22:32 +00:00
2019-11-22 09:44:53 +00:00
### Overlay für alle Zonen setzen
2020-12-22 11:58:34 +00:00
`set <name> setAllOverlays <Wunschtemperatur> [Dauer des Overlay in Sekunden]`
2019-11-22 09:44:53 +00:00
2019-12-27 08:56:19 +00:00
**INFO:** unterstützte Werte der Wunschtemperatur: `remove=delete overlay; 0=heating power off; 1<=desired temperature (overlay)`
2019-11-22 09:44:53 +00:00
2019-11-22 09:50:00 +00:00
### Tado Geräte anzeigen (z.B. Battery State)
2020-12-22 11:58:34 +00:00
`get <name> getZoneDevices`
2020-10-15 15:57:41 +00:00
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/gzd.PNG" width="500" />
2019-11-22 09:44:53 +00:00
2019-10-17 10:18:02 +00:00
2019-11-22 09:50:00 +00:00
## Screenshots
### Modulübersicht
2019-10-17 10:18:02 +00:00
2020-10-15 15:57:41 +00:00
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/Modul1.PNG" width="500" />
2019-10-17 11:12:09 +00:00
2019-11-22 09:50:00 +00:00
## Verwendung in FHEM
2019-10-17 11:12:09 +00:00
### FHEM Tablet-UI
Im Tablet UI lassen sich alle Readings des tado FHEM Modul anzeigen:
2020-10-15 15:57:41 +00:00
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/tablet-ui-readings.PNG" width="500" />
Auch lassen sich im Tablet UI mit einem Thermostat Widget alle Zonen steuern:
2020-10-15 15:57:41 +00:00
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/tablet-ui-thermostat.PNG" width="500" />
Code Snippet für einen Thermostat Widget:
```
<div data-type="thermostat" data-height="250" data-width="285" data-temp="Temperatur_Heizung" data-min="15" data-max="24" data-device="mytd" data-set="timedZoneOverlay 1 7200" data-get="DesiredTemp_Heizung"></div>
```
### Tado mit Anwesenheit verknüpfen
2019-11-14 05:59:16 +00:00
In Kombination mit dem Presence (bzw. Residents) Modul kann man *tado* automatisch zwischen HOME und AWAY umschalten lassen und die Temperatur mittels FHEM absenken lassen.
2019-10-17 11:12:09 +00:00
Beispiel dafür:
```
2019-11-14 05:59:16 +00:00
+*00:03:00 {
if (Value("Bewohner") eq "absent" && ReadingsVal("mytd","OverlayType_<zonenName>",0) ne "MANUAL")
{
2019-11-22 09:37:39 +00:00
fhem("set mytd setZoneOverlay <zonenID> 16; set mytd setGeo <Mobile ID> on");
2019-11-14 05:59:16 +00:00
Log 3, "TadoAPI: Keiner mehr zu Hause - Overlay und Geolocation wird aktiviert.";
}elsif (Value("Bewohner") eq "home" && ReadingsVal("mytd","OverlayType_Heizung",0) eq "MANUAL")
2019-10-17 11:12:09 +00:00
{
2019-11-14 05:59:16 +00:00
# jemand zu hause
2019-12-27 08:56:19 +00:00
fhem("set mytd setZoneOverlay <zonenID> remove; set mytd setGeo <Mobile ID> off");
2019-11-14 05:59:16 +00:00
Log 3, "TadoAPI: Bewohner anwesend - Overlay wird deaktiviert.";
}
2019-10-17 11:12:09 +00:00
}
...
```
2019-10-17 11:16:07 +00:00
GPlot-Beispiel:
2020-10-15 15:57:41 +00:00
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/Modul2-SVG.PNG" width="500" />
2019-10-17 11:16:07 +00:00
```
2019-10-22 07:21:41 +00:00
# Created by FHEM/98_SVG.pm, 2019-10-20 03:52:15
2019-10-17 11:16:07 +00:00
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
2019-11-22 10:03:26 +00:00
set title 'Schafzimmer <TL> <L1>'
2019-10-17 11:16:07 +00:00
set ytics
2019-10-22 07:21:41 +00:00
set y2tics
2019-10-17 11:16:07 +00:00
set grid ytics
set ylabel "Temperatur"
2019-10-22 07:21:41 +00:00
set y2label "Heizleistung"
2019-10-17 11:16:07 +00:00
set yrange [18:26]
2019-10-22 07:21:41 +00:00
set y2range [0:100]
2019-10-17 11:16:07 +00:00
2019-11-22 10:03:26 +00:00
#Log_tadoAPI 4:mytd.Temperatur_Schlafzimmer\x3a::
#Log_tadoAPI 4:mytd.OverlayType_Schlafzimmer\x3a:1:$fld[3]&&$fld[3]=~"MANUAL"?20:0
#Log_tadoAPI 4:mytd.Luftfeuchtigkeit_Schlafzimmer\x3a::
#Log_tadoAPI 4:mytd.Heizleistung_Schlafzimmer\x3a::
#Log_tadoAPI 4:mytd.DesiredTemp_Schlafzimmer\x3a::
2019-10-17 11:16:07 +00:00
plot "<IN>" using 1:2 axes x1y1 title 'Temperatur' ls l1fill lw 1 with lines,\
2019-11-22 10:03:26 +00:00
"<IN>" using 1:2 axes x1y2 title 'Abwesenheit' ls l0fill_stripe lw 0.5 with histeps,\
2019-10-22 07:21:41 +00:00
"<IN>" using 1:2 axes x1y2 title 'Feuchte' ls l2 lw 1 with lines,\
2019-11-22 10:03:26 +00:00
"<IN>" using 1:2 axes x1y2 title 'Heizleistung' ls l5dot lw 1.5 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Desired' ls l5 lw 0.5 with lines
2019-10-17 11:16:07 +00:00
```
2019-11-14 05:59:16 +00:00
2019-11-22 09:50:00 +00:00
## Technische Information
### OAuth2 Token Authentifizierung
2019-11-14 05:59:16 +00:00
2019-11-22 09:50:00 +00:00
Alle Anfragen an das API sind über *oauth2* realisiert.
Zuerst wird ein Token (mit Username und Passwort) von tado angefordert der ca. 10 Minuten gültig ist. Alle folgenden Aufrufe werden nur mehr über den Token realisiert. Das Modul prüft den Token auf Gültigkeit und erneuert ihn bevor er abläuft.
2019-11-14 05:59:16 +00:00
2019-12-11 12:50:00 +00:00
Pfad des Token ist im Modul fix eingestellt `/fhem-root/FHEM/FhemUtils/TadoAPI_token_<fhem-devicename>`
## Credits
2019-12-11 12:50:34 +00:00
2019-12-11 12:50:00 +00:00
Thx to:
2019-12-11 12:50:34 +00:00
2019-12-11 12:50:00 +00:00
[https://shkspr.mobi/blog/2019/02/tado-api-guide-updated-for-2019/](http://)
[http://blog.scphillips.com/posts/2017/01/the-tado-api-v2/](http://)