Neues Modul: Tado Heizungssystem

Begonnen von strategy, 28 Januar 2019, 21:40:08

Vorheriges Thema - Nächstes Thema

bewa58

@strategy
Hallo Matthias,

leider funktioniert es noch nicht (ganz).
Bei "INTERNALS,ZONES"   ist jetzt keine Auswertung mehr (leer), war vorher mit "0" gefüllt.
siehe Bildschirmfoto.
LOG nochmals anbei.

Wird schon!

Gruß
Bernd

strategy

#76
Puuuh,

da hattet Ihr aber beide Recht.

Leider hab ich ein falsches Schlüsselwort verwendet. Das hat zu einem Teil der Probleme im Log geführt und zugleich auch die ganze Logik ausgehebelt, die ich gebaut habe Bernds Räume zu unterstützen.
Das habe ich jetzt korrigiert.

Zudem hat das Thema "OFF" wohl doch noch mehr Konsequenzen gehabt. Da ich OFF bisher noch nicht benutzt habe, kamen bei mir auch keine Fehler. Schalte ich aber eine der Heizungen in OFF kommen bei mir vergleichbare Fehlermeldungen wie bei Stefan.
Habe jetzt die Logik zum Parsen der JSON Nachrichten von Tado so angepasst, dass auch bei OFF Nachrichten keine Fehler mehr auftreten sollten.

Neue Logik ist eingecheckt.
Ich freue mich über ein kurzes Feedback nach dem Test...

Gruß,
Matthias

PS: Ich hoffe ich habe nicht versehentlich irgendwelche Readings totgelegt... Dann bitte melden

strategy

Hallo Stefan

bzgl. dieses Problems:

Zitat von: Karflyer am 24 Mai 2019, 14:26:20

Ich noch einmal versucht über get mobil_devices die mobile_devices anzulegen. Das führte nicht zum Erfolg. Es wird nach wie vor nur eins gefunden.


Kannst du mal bitte folgende URL mit deiner ZoneID, Username und Passwort ergänzen und die Ergebnisse hier posten?
Dann kann ich zumindest mal schauen ob es sich um ein Tado Problem handelt oder an meinem Modul liegt...


https://my.tado.com/api/v2/homes/<HOMEID>/mobileDevices?username=<EMAIL>&password=<PASSWORT>

bewa58

@strategy
Hallo Matthias, bekomme jetzt die Daten für alle Zonen rein !!
TOP !!
Aber: Alles Zonen werden mit desired:off angezeigt.
         off ist aber nur 1ne Zone

Tado_B_ro
T: 24.5 °C desired: off H: 52.1%
Tado_Bad
T: 21.7 °C desired: off H: 66.8%
Tado_Heizung_Bad
T: 21.9 °C desired: off H: 54.6%
Tado_Heizung_K_che
T: 20.7 °C desired: off H: 43.2%
Tado_KinderZi
T: 20.9 °C desired: off H: 52.2%
Tado_Marcel
T: 22.0 °C desired: off H: 62.9%
Tado_SchlafZi
T: 24.1 °C desired: off H: 43.8%
Tado_Warmwasser
T: 0.0 °C desired: off H: 0.0%
Tado_WohnZi_EssZi
T: 23.2 °C desired: off H: 49.0%

strategy

Hmm,

irgendwie hat der Unterschied in der Abfrage nach Gleichheit oder Ungleichheit doch eine Bedeutung....

@Bernd,
versuchs nochmal mit der neuen Version. Da sollte es jetzt besser aussehen...

Gruß,
Matthias

bewa58

@Matthias:

Habe mich wohl etwas unglücklich ausgedrückt:

Im "STATE" wird desired "OFF" angezeigt.
Im Reading "desired-temp" wird korrekt angezeigt!

Also: Heizung AN  wird die Temperatur die eingestellt richtig angezeigt (im Reading)
        im STATE wird "OFF" angezeigt.

        Heizung AUS  wird im Reading "OFF"  angezeigt (also korrekt)
        im STATE wird "OFF" angezeigt

Entsprechend müsste "nur" der "STATE"  korrigiert werden.


Karflyer

Hallo Matthias,
ZitatKannst du mal bitte folgende URL mit deiner ZoneID, Username und Passwort ergänzen und die Ergebnisse hier posten?
Dann kann ich zumindest mal schauen ob es sich um ein Tado Problem handelt oder an meinem Modul liegt...

Code: [Auswählen]

https://my.tado.com/api/v2/homes/<HOMEID>/mobileDevices?username=<EMAIL>&password=<PASSWORT>

Das sieht dann so aus:

0
name "Simones Smarti"
id 433552
settings
geoTrackingEnabled true
location
stale false
atHome true
bearingFromHome
degrees 0
radians 0
relativeDistanceFromHomeFence 0
deviceMetadata
platform "Android"
osVersion "6.0.1"
model "LGE_Nexus 5"
locale "de"
1
name "Stefans Smarti"
id 468173
settings
geoTrackingEnabled true
location
stale false
atHome true
bearingFromHome
degrees 88.69149999359111
radians 1.5479586934206946
relativeDistanceFromHomeFence 0
deviceMetadata
platform "Android"
osVersion "9"
model "OnePlus_ONEPLUS A5010"
locale "de"


Hier werden die zwei relevanten Mobil-Devices angezeigt.

Beim booten gab es jetzt nur noch eine Fehlermeldung. Beim rumspielen haben sich dann noch vier dazugesellt..

2019.05.24 19:25:26.190 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 963.
2019.05.24 19:34:47.005 1: PERL WARNING: Use of uninitialized value $temperature in string eq at ./FHEM/98_Tado.pm line 1319.
2019.05.24 19:34:47.005 1: PERL WARNING: Use of uninitialized value $temperature in addition (+) at ./FHEM/98_Tado.pm line 1324.
2019.05.24 19:34:47.005 1: PERL WARNING: Argument "Auto" isn't numeric in multiplication (*) at ./FHEM/98_Tado.pm line 1331.
2019.05.24 19:36:23.146 1: PERL WARNING: Use of uninitialized value $aVal in concatenation (.) or string at ./FHEM/98_TadoDevice.pm line 318.


Ich freue mich, dass du am Ball bleibst. Ist schon jetzt eine tolle Arbeit!
Einen Wunsch hätte ich. Zum einstellen der Temperatur bietest du ein einfachrs Textfeld an. Wäre es möglich für die Temperatureinstellung eine Dropdownliste zu bauen? Die Liste sollte die Werte automatik, off, 5,6,7...25 beinhalten. Bisher löse ich das über widgetOverride. Wäre klasse, wenn es das Modul gleich mitbringen würde.

Gruß
Stefan

strategy

#82
Da hast du aber Glück, dass meine Frau mir heute Abend einen freien Abend gönnt :-)

Ich hab mich erstmal an die Beseitigung der Fehler im Log gemacht.
Folgendes habe ich behoben:

1. Wenn man einen Set Befehl ohne Angabe einer Temperatur aufruft gibt es jetzt eine Fehlermeldung anstatt zu versuchen daraus eine Tado Nachricht zu machen.
2. Logging korrigiert wenn man das EarlyStart Attribut löscht.
3. Fehler im Logging beseitigt wenn man ein TadoDevice wieder auf Automatik stellt.
4. Android Telefone können keine Push-Nachrichten und haben daher bestimmte Attribute nicht. Es wird jetzt geprüft ob diese Attribute vorhanden sind und nur bei Apple Geräten werden diese dann angelegt.

Nachtrag: @Karflyer: Stefan, möglicherweise hat die Fehlerbeseitigung unter Punkt 4 auch dein Problem mit den beiden Telefonen gelöst....

strategy

Sooo,

ZitatWäre es möglich für die Temperatureinstellung eine Dropdownliste zu bauen?

auto geht (noch) nicht, aber off und die Temperaturen sollten schon gehen.
Ich hab mich an meinen Homematic Schaltern und den Einstellwünschen meiner Frau orientiert, daher sind es 0.5 Grad-Schritte geworden.

Gruß,
Matthias


bewa58

Hallo Matthias,

erstmal herzlichen Dank für Deine Bemühungen und auch an Deine Frau !!
Das Modul ist TOP.
Kann jetzt endlich direkt (ohne Umweg über IFTTT) meine Heizung steuern.
Funktioniert bei mir jetzt fast einwandfrei, bis auf (nicht so wichtig) die Fehlermeldung in der Bridge "Parterre"
und Fehlermeldungen im LOG.
Wenn Zeit und Lust schau doch noch mal drüber.

Fehlermeldung kommt wenn Zone 1 aufgerufen wird. Habe aber keine Zone 1.
Beginnt bei mir mit Zone 2 dann Zone 3 und Zone 4 !

Und ich habe da noch eine Verständnisfrage:
Internals fullresponse: ERROR
was bedeutet diese Meldung?

Folgende Meldungen hab ich noch im LOG:
Zitat2019.05.25 12:26:59 1: PERL WARNING: Use of uninitialized value in substitution iterator at ./FHEM/98_Tado.pm line 1273.
2019.05.25 12:27:04 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 1122.
2019.05.25 12:27:04 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 1142.
2019.05.25 12:27:04 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 1155.
2019.05.25 12:27:05 1: PERL WARNING: Argument "" isn't numeric in sprintf at ./FHEM/98_TadoDevice.pm line 186.
2019.05.25 12:28:02 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 953
2019.05.25 12:28:02 1: PERL WARNING: Use of uninitialized value $found in concatenation (.) or string at ./FHEM/98_Tado.pm line 974.

Gruß
Bernd


Pr3mut05

Vielen Dank für das Modul

Hab TADO schon eine Zeit lang und dachte es ist wohl so das einzige Smarte in meinem System was ich nicht in FHEM einbinden kann.
Jetzt gehts endlich :D

Die Bridge zeigt mir zwar
ZitatError: accessDenied / current user is not allowed to access this resource
Aber alles läuft

Da freu ich mich schon auf den nächsten winter damit ich das voll automatisieren kann

Karflyer

Hallo Matthias,

super gemacht. Aktuell keine Fehlermeldungen mehr beim Neustart von FHEM. Die Dropdownliste funktioniert auch wunderbar.

ZitatNachtrag: @Karflyer: Stefan, möglicherweise hat die Fehlerbeseitigung unter Punkt 4 auch dein Problem mit den beiden Telefonen gelöst....

Das geht nach wie vor noch nicht. Hast du registriert, dass das erste Smartphone den Index '0' hatte. Das ist das was nicht gefunden wird. Das Zweite, das gefunden wird hat den Index '1'. Danke auch an deine Frau, für die dir zur Verfügung gestellte Zeit  :D.

Gruß
Stefan

bewa58

@Pr3mut05
ZitatError: accessDenied / current user is not allowed to access this resource
Hallo, schau doch mal ob es das gleiche Problem wie bei mir ist.
Bei mir fangen die Zonen mit Nr. 2 an, dadurch Fehlermeldung da die Zone 1 nicht
gefunden wird.
Das hilft Matthias evtl. bei der Eingrenzung um die Meldung auszuschließen.
(siehe Bildschirmausdruck)

Gruß
Bernd

strategy

Hallo zusammen, ich hab mir das Modul nochmal vorgeknöpft.


Zitat von: bewa58 am 26 Mai 2019, 12:19:56
@Pr3mut05Hallo, schau doch mal ob es das gleiche Problem wie bei mir ist.
Bei mir fangen die Zonen mit Nr. 2 an, dadurch Fehlermeldung da die Zone 1 nicht
gefunden wird.
Das hilft Matthias evtl. bei der Eingrenzung um die Meldung auszuschließen.
(siehe Bildschirmausdruck)

Gruß
Bernd


Das Problem liegt vermutlich darin begründet wie ich die Zonen aktualisiert habe. Tado erwartet hier verschiedene Nachrichten, eine um alle Zonen abzurufen und dann jeweils eine separate Nachricht um die Werte einer jeden Zone abzurufen.
Dabei habe ich es mir zu einfach gemacht und mir nicht jede existierende Zone gemerkt sondern nur ob ich bei 0 oder bei 1 starten muss und welche Nummer die höchste Zone hat. Das funktioniert natürlich nicht bei Lücken...
Habe jetzt die Logik umgestellt und ermittle alle definierten Zonen. Wenn ich dann die Werte abhole, nutze ich diese Liste um auch wirklich die richtigen Zonen abzurufen. Sprich alle relevanten und keine nicht existenten.

Code liegt im GIT, bitte ausprobieren.

Gruß,
Matthias

strategy

@Karflyer

Die Nummer mit den Mobiltelefonen habe ich mir auch nochmal angeschaut.
Hier ist die Logik bei Tado allerdings anders. Hier gibt es lediglich eine Nachricht die alle Informationen enthält. Diese schicke ich zyklisch ab und extrahiere die relevanten Daten.

Zitat von: Karflyer am 25 Mai 2019, 21:03:26

Hast du registriert, dass das erste Smartphone den Index '0' hatte. Das ist das was nicht gefunden wird. Das Zweite, das gefunden wird hat den Index '1'. Danke auch an deine Frau, für die dir zur Verfügung gestellte Zeit  :D.


Die Indizierung in diesem Fall lege über eine Zählvariable  fest, die Information die Tado braucht ist die lange ID-Nummer. In deinem Fall die Nummern 433552 und 468173.

Ich hab jetzt ein wenig zusätzliches Logging auf Level 2 hinzugefügt um dem Problem auf die Schliche zu kommen.

Kannst du bitte folgendes machen:

1. Setze bitte das Attribut "verbose" für die Bridge auf 2. Die Bridge sollte reichen, Devices kannst du so lassen wie sie sind.
2. Dann stell bitte sicher, dass auf der Bridge das Attribut 'generateMobileDevices' auf 'yes' steht. Es darf weder auf 'no' stehen, noch darf das Attribut gelöscht sein.
3. Führe ein Update der Mobile Devices aus:
get <TadoBridge> mobile_devices
Das sollte im Log zu 2 Einträgen führen, ähnlich zu diesen:
  2019.05.28 13:21:47 2: Tado_GetMobileDevices: Adding mobile device with id '913695' and name (with unsave characters) 'IPhone'
2019.05.28 13:21:47 2: Tado_GetMobileDevices: Adding mobile device with id '907194' and name (with unsave characters) 'ipAd'

4. Führe auf einem der mobilen Geräte ein Update durch. Das sollte die Werte aller mobilen Geräte aktualisieren:
  get <Tado_MobileDevice> update
Im log sollten dann 2 Zeilen auftauchen ähnlich diesen:
  2019.05.28 13:21:50 2: TadoBridge: trying to dispatch message: Tado;913695;locationdata;0;;;;;;1;1;1;1;1
2019.05.28 13:21:50 2: TadoBridge: trying to dispatch message: Tado;907194;locationdata;0;;;;;;1;1;1;1;1


Kannst du das bitte mal machen und die Auszüge aus dem Log hier posten?

Gruß,
Matthias