Compare commits

...

11 Commits
v0.9 ... master

Author SHA1 Message Date
Philipp Wo 035d9e832e new commandref syntax - help is now working on fhem page 2023-12-16 17:03:24 +01:00
Philipp Wo e3c6c6819f „98_TadoAPI.pm“ ändern
added ZoneIDs to readings - some code cleanup
2023-02-13 14:33:29 +00:00
Philipp Wo 16ff369335 „README.md“ ändern
Credits Format edited
2021-10-28 12:10:36 +00:00
Philipp Wo 3d9e067dd8 „README.md“ ändern 2021-02-23 19:02:31 +00:00
Philipp Wo 1195179491 added childLock readings 2021-02-23 19:35:47 +01:00
Philipp Wo c2269cfe7a prevent error when no token 2020-12-28 23:22:08 +01:00
Philipp Wo 8bfba91e2e „README.md“ ändern
FHEM forum thread-link added
2020-12-22 17:58:43 +00:00
Philipp Wo ce9ec91cb4 updated fhem commands 2020-12-22 11:58:34 +00:00
Philipp Wo 408f68ece3 „README.md“ ändern
wrong wget URL - fixed
2020-12-22 11:33:01 +00:00
Philipp Wo 1ff546c028 Installation in Doku beschrieben 2020-11-11 09:36:06 +00:00
Philipp Wo 079b9ea763 Installation in Doku beschrieben
Step by Step Anleitung für die Installation des Moduls
2020-11-11 09:33:15 +00:00
2 changed files with 68 additions and 26 deletions

View File

@ -1,5 +1,5 @@
#===============================================================================
# $Id: 98_TadoAPI.pm 105 2019-12-27 15:58:26Z psycho160 $
# $Id: 98_TadoAPI.pm 107 2023-12-16 16:11:28Z psycho160 $
#
# FILE: 98_TadoAPI.pm
#
@ -16,9 +16,7 @@
# NOTES: https://git.wolfmajer.at
# AUTHOR: Philipp Wolfmajer
# ORGANIZATION:
# VERSION: 0.9
# CREATED: 04/12/2019
# REVISION: 12/10/2019
#===============================================================================
package main;
@ -561,7 +559,7 @@ sub TadoAPI_NewTokenRequest {
close($TOKENFILE);
# token lifetime management
if (defined($decoded_data)){
if ( defined($decoded_data->{'expires_in'}) ){
$hash->{TOKEN_LIFETIME} = gettimeofday() + $decoded_data->{'expires_in'};
}
$hash->{TOKEN_LIFETIME_HR} = localtime( $hash->{TOKEN_LIFETIME} );
@ -710,13 +708,13 @@ sub TadoAPI_SetZoneOverlayById {
my $dt = time();
$dt += $duration if defined($duration);
delete( $hash->{helper}{LockedZones}{$zoneID} );
# remove overlay
# remove overlay & lock
if ( $setting eq "remove" ) {
$method = "DELETE";
Log3 $name, 3,
"TadoAPI $name" . ": " . "Deleting Overlay for Zone $zoneID";
delete( $hash->{helper}{LockedZones}{$zoneID} );
}
# turn heating of
@ -778,7 +776,7 @@ sub TadoAPI_SetZoneOverlayById {
Log3 $name, 3, "TadoAPI $name" . ": "
. "Set Timer Overlay for Zone $zoneID with $duration seconds expire.";
# seet lock for this zone
# set lock for this zone
$hash->{helper}{LockedZones}{$zoneID} = "locked";
}
else {
@ -985,16 +983,12 @@ sub TadoAPI_UpdateAllZoneReadingsCallback {
= TadoAPI_GetZoneReadingsById( $hash, $zoneID );
# updates zone readings
readingsBulkUpdate( $hash, "Temperatur_" . $zoneName,
$temperature );
readingsBulkUpdate( $hash, "Luftfeuchtigkeit_" . $zoneName,
$humidity );
readingsBulkUpdate( $hash, "Heizleistung_" . $zoneName,
$currentHeatingPower );
readingsBulkUpdate( $hash, "OverlayType_" . $zoneName,
$overlay );
readingsBulkUpdate( $hash, "DesiredTemp_" . $zoneName,
$desiredTemp );
readingsBulkUpdate( $hash, "ZoneID_" . $zoneName, $zoneID );
readingsBulkUpdate( $hash, "Temperatur_" . $zoneName, $temperature );
readingsBulkUpdate( $hash, "Luftfeuchtigkeit_" . $zoneName, $humidity );
readingsBulkUpdate( $hash, "Heizleistung_" . $zoneName, $currentHeatingPower );
readingsBulkUpdate( $hash, "OverlayType_" . $zoneName, $overlay );
readingsBulkUpdate( $hash, "DesiredTemp_" . $zoneName, $desiredTemp );
# iterate through all devices in zone
my $devices = $zone->{'devices'};
@ -1004,6 +998,11 @@ sub TadoAPI_UpdateAllZoneReadingsCallback {
"Battery_" . $device->{'serialNo'},
$device->{'batteryState'}
);
readingsBulkUpdate(
$hash,
"ChildLockEnabled_" . $device->{'serialNo'},
$device->{'childLockEnabled'}
);
}
}
readingsEndUpdate( $hash, 1 );
@ -1842,7 +1841,7 @@ sub TadoAPI_readPassword {
=item summary_DE Anbindung der Tado Heizungssteuerung über API
=begin html
<a name="TadoAPI"></a>
<a name="TadoAPI" id="TadoAPI"></a>
<h3>TadoAPI</h3>
<ul>
The TadoAPI module connects your tado devices to FHEM. Most zone readings are shown and desired temperature for a zone can be set.<br>
@ -1853,7 +1852,7 @@ sub TadoAPI_readPassword {
Please install the module (e.g. with <code>sudo apt-get install libjson-perl</code>) or the correct method for the underlying platform/system.</li>
</ul>
<a name="TadoAPIdefine"></a>
<a name="TadoAPIdefine" id="TadoAPIdefine"></a>
<b>Define</b>
<ul>
The username and password must match the username and password used on the Tado website.<br>
@ -1867,7 +1866,7 @@ sub TadoAPI_readPassword {
<br>
</ul>
<a name="TadoAPIset"></a>
<a name="TadoAPIset" id="TadoAPIset"></a>
<b>Set</b>
<ul>
<li>
@ -1895,7 +1894,7 @@ sub TadoAPI_readPassword {
</ul>
<br>
<a name="TadoAPIattr"></a>
<a name="TadoAPIattr" id="TadoAPIattr"></a>
<b>Attributes</b>
<ul>
<li>homeID<br>
@ -1913,5 +1912,21 @@ sub TadoAPI_readPassword {
=end html
=for :application/json;q=META.json 98_TadoAPI.pm
{
"author": [
"Philipp Wolfmajer <philipp@wolfmajer.at>"
],
"x_fhem_maintainer": [
"psycho160"
],
"keywords": [
"Heating",
"Tado",
"Heatingcontrol"
]
}
=end :application/json;q=META.json
# Ende der Commandref
=cut

View File

@ -1,7 +1,8 @@
# FHEM-Tado
FHEM Modul für [tado](https://www.tado.com/at/) Heizungssteuerung.
Bin unter philipp@wolfmajer.at erreichbar.
Für Fragen / Anliegen bin ich im FHEM-Forum (https://forum.fhem.de/index.php/topic,116764) oder unter philipp@wolfmajer.at erreichbar.
## Was wird unterstützt?
* Übersicht aller Tado Zonen
@ -10,6 +11,30 @@ Bin unter philipp@wolfmajer.at erreichbar.
* aktuelle Heizleistung
* Wunschtemperatur
* Overlays (static & timer)
* ChildLock Status (nur Reading)
## 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`
5. FHEM neu starten.
`sudo systemctl restart fhem.service`
6. Fertig, weiter geht´s in FHEM mit der Definition
## Definition & Funktion
@ -32,23 +57,25 @@ Standardmäßig aktualisiert das Modul alle 5 Minuten die folgenden Werte:
Sämtliche externen Aufrufe sind *nonblocking* ausgeführt.
### Overlay für Zone setzen
`set setZoneOverlay <zonenID> <Wunschtemperatur> [Dauer des Overlay in Sekunden]`
`set <name> setZoneOverlay <zonenID> <Wunschtemperatur> [Dauer des Overlay in Sekunden]`
**INFO:** unterstützte Werte der Wunschtemperatur: `remove=delete overlay; 0=heating power off; 1<=desired temperature (overlay)`
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/so.PNG" width="500" />
#### Info für Overlay mit Timer
Kann entweder mit wie oben beschrieben oder, für Widgets von Tablet UI interessant, mit `set timedZoneOverlay <zonenID> <Dauer des Overlay in Sekunden> <Wunschtemperatur>` gesetzt werden.
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.
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...)
### Overlay für alle Zonen setzen
`set setAllOverlays <Wunschtemperatur> [Dauer des Overlay in Sekunden]`
`set <name> setAllOverlays <Wunschtemperatur> [Dauer des Overlay in Sekunden]`
**INFO:** unterstützte Werte der Wunschtemperatur: `remove=delete overlay; 0=heating power off; 1<=desired temperature (overlay)`
### Tado Geräte anzeigen (z.B. Battery State)
`get <name> getZoneDevices`
<img src="https://git.wolfmajer.at/Public/FHEM-Tado/raw/branch/master/doc/gzd.PNG" width="500" />
@ -136,7 +163,7 @@ Zuerst wird ein Token (mit Username und Passwort) von tado angefordert der ca. 1
Pfad des Token ist im Modul fix eingestellt `/fhem-root/FHEM/FhemUtils/TadoAPI_token_<fhem-devicename>`
##Credits
## Credits
Thx to: