Neues Modul: Tado Heizungssystem

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

Vorheriges Thema - Nächstes Thema

strategy

Und noch etwas:

Leider kann ich den Fehlermeldungen aus den letzten Posts nicht nachgehen, da sich durch meine Änderungen die Zeilennummern vollständig geändert haben.
Daher müsst Ihr auftretende Fehler bitte neu posten.

Danke,
Matthias

CoolTux

Hallo Matthias,

Ich habe mir erlaubt Dir einen kleinen Pull Request zu schicken.


Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

strategy

Hallo Leon,

Danke. Habe ich eingearbeitet und werde die Tage mal schauen ob ich noch mehr stellen finde.
Da habe ich wohl vom falschen abgeschrieben :-)

Gruß,
Matthias

CoolTux

Zitat von: strategy am 28 Mai 2019, 14:55:10
Da habe ich wohl vom falschen abgeschrieben :-)

Oder falsch abgeschrieben  ;D
Wenn Du magst kann ich gerne die Tage noch mal schauen. Aber wirklich nur wenn es ok für Dich ist.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

strategy

Zitat von: CoolTux am 28 Mai 2019, 15:40:21
Wenn Du magst kann ich gerne die Tage noch mal schauen. Aber wirklich nur wenn es ok für Dich ist.


Klar gerne. Kann der Qualität nur zuträglich sein. Und wenn ich dabei noch was lerne um so besser....

strategy

@CoolTux

Hast du noch einen Tipp für mich?

Ich hab aktuell in die Internals ganz schön viel geschwafelt.
Das war bei der Entwicklung auch recht hilfreich, macht aber vermutlich so jetzt keinen Sinn mehr.

Ich würde gerne - ähnlich wie es bei den Homematic Geräten der Fall ist - in den Internals nur die Zonen, Geräte und Devices auflisten. Als wert sollte dort jeweils der Name des jeweiligen TadoDevices stehen und als Link klickbar sein.
Das Ganze muss ja auch renaming etc. überstehen.
Hast du eine Idee wie man das hinbekommt?

Gruß,
Matthias

CoolTux

Nicht so spontan. Muss ich mir anschauen. In welchen Internals soll das denn rein? Vom tadoDevice Device oder vom Bridge Device?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

strategy

@CoolTux

Vergiss es. Das macht auch gar keinen Sinn, bzw. ist ziemlich überflüssig.
Die Navigation von der Bridge zu den einzelnen Devices wird ja schon durch FHEM selbst sichergestellt. Alls zugehörigen Instanzen vom Typ TadoDevice sind ja unter 'Probably associated with' aufgelistet.

@All

Nachdem ich die eine oder andere Idee von Euch aufgenommen habe und immer mal wieder rumgeschraubt habe, habe ich nun eine kleine Bereinigung der beiden Module vorgenommen. Dabei ist maßgeblich die Bridge betroffen.

  • Ich habe doppelte Einträge (meist als Internal & als Reading) auf einen Eintrag reduziert.
  • Einige Einträge habe ich aus der Bridge in die jeweiligen Devices verschoben (z.B. DateCreated einer Zone)
  • Ich habe versucht direkte Zugriffe auf den Hash zu eliminieren (ist eher eine Frage des guten Programmierstils denn der Funktionalität
  • Die Readings für MobileDevices werden jetzt auch erst angelegt wenn man MobileDevices abruft und nicht bereits beim Abrufen der HomeId

Alle diese Änderungen sollten aber meine vorherigen Aussagen nicht beeinflussen.
Es sollten nach wie vor auch Lücken in den IDs unterstützt werden etc...

bewa58

Moinsen Zusammen,
hab gestern Abend mal schnell die neuen Versionen installiert.

ERROR-Meldung (fehlende Zone) ist weg.
Finde bis jetzt keine Bugs. Funktioniert bei mir einwandfrei!

Folgende Meldungen erscheinen noch im LOG:
2019.05.29 09:20:07 1: PERL WARNING: Use of uninitialized value $found in concatenation (.) or string at ./FHEM/98_Tado.pm line 993.
2019.05.29 09:20:07 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 1148.
2019.05.29 09:20:07 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 1168.
2019.05.29 09:20:07 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Tado.pm line 1181.
2019.05.29 09:20:07 1: PERL WARNING: Argument "" isn't numeric in sprintf at ./FHEM/98_TadoDevice.pm line 186.
2019.05.29 09:20:07 1: dewpoint_notify: humidity device Tado_Warmwasser (H) invalid: 0.0

Letzte Zeile LOG: Tado wertet hier die Zapftemperatur beim Warmwasser nicht aus. Es wird nur die eingestellte
Temperatur angezeigt. Log wird halt alle 60 Sek geschrieben.

Und nochmal: Ganz tolle Arbeit.

strategy

Hallo Bernd,

Zitat von: bewa58 am 29 Mai 2019, 11:20:11

Letzte Zeile LOG: Tado wertet hier die Zapftemperatur beim Warmwasser nicht aus. Es wird nur die eingestellte
Temperatur angezeigt. Log wird halt alle 60 Sek geschrieben.


heißt das, dass hier noch ein Reading fehlt?
Kann es sein, dass es sich um ein spezielles Reading für Warmwasser handelt und bei "normalen Heizungen" nicht vorhanden ist?

Kannst du bitte mal folgendes im Browser ausführen und das Ergebnis hier posten:


https://my.tado.com/api/v2/homes/<HomeID>/zones/<ZoneID>/state?username=<Username>&password=<Password>


wobei du bitte die ZoneID von der Warmwasseraufbereitung benutzt.

Danke,
Matthias

bewa58

ZitatKannst du bitte mal folgendes im Browser ausführen und das Ergebnis hier posten:
{"tadoMode":"HOME","geolocationOverride":false,"geolocationOverrideDisableTime":null,"preparation":null,"setting":{"type":"HOT_WATER","power":"ON","temperature":{"celsius":55.00,"fahrenheit":131.00}},"overlayType":null,"overlay":null,"openWindow":null,"nextScheduleChange":null,"nextTimeBlock":{"start":"2019-05-30T00:15:00.000Z"},"link":{"state":"ONLINE"},"activityDataPoints":{},"sensorDataPoints":{}}


bewa58

@Matthias
Ist es eigentlich möglich die "Raumluft-Komfort" Auswertung innerhalb
der App (Vers 5.6.3) auch für FHEM auszulesen?

Karflyer

Hallo Matthias,

habe das von dir genannte Prozedere mit dem Mobiltelefon durchgespielt.

Bei einem 'Verboselevel' von 2 tat sich nichts. Mit Level drei habe ich die folgenden Meldungen im Log:
get <TadoBridge> mobile_devices:
2019.05.31 18:43:13.719 1: Tado_GetMobileDevices (TadoBridge): create new device 'Tado_Stefans_Smarti'
2019.05.31 18:43:13.720 3: TadoDevice_Define Tado_Stefans_Smarti: called
2019.05.31 18:43:13.720 3: Tado Tado_Stefans_Smarti: I/O device is TadoBridge
2019.05.31 18:43:13.720 3: Device Code is: TadoBridge-468173

get <Tado_MobileDevice> update:
2019.05.31 18:50:25.801 3: TadoDevice_Parse: Entry found (TadoBridge-1), updating readings
2019.05.31 18:50:25.850 3: TadoDevice_Parse: Entry found (TadoBridge-2), updating readings
2019.05.31 18:50:25.851 3: TadoDevice: ht_bz EarlyStart true.
2019.05.31 18:50:26.129 3: TadoDevice_Parse: Entry found (TadoBridge-468173), updating readings
2019.05.31 18:50:26.147 3: TadoDevice_Parse: Entry found (TadoBridge-1), updating readings
2019.05.31 18:50:26.148 3: Invalid attribute value. Attribute earlyStart only supports values 'true' and 'false'
2019.05.31 18:50:26.149 3: TadoDevice_Parse: Entry found (TadoBridge-4), updating readings
2019.05.31 18:50:26.149 3: TadoDevice: ht_wz EarlyStart true.
2019.05.31 18:50:26.412 3: TadoDevice_Parse: Entry found (TadoBridge-3), updating readings
2019.05.31 18:50:26.413 3: TadoDevice: ht_kc EarlyStart true.
2019.05.31 18:50:26.734 3: TadoDevice_Parse: Entry found (TadoBridge-4), updating readings
2019.05.31 18:50:26.755 3: TadoDevice_Parse: Entry found (TadoBridge-2), updating readings
2019.05.31 18:50:26.765 3: TadoDevice_Parse: Entry found (TadoBridge-3), updating readings


Die von dir aufgeführten Logzeilen, die hätten kommen sollen, kamen leider überhaupt nicht. Liegt es vielleicht daran, dass du Appeldevices hast, bei mir es sich aber in beiden Fällen um Androiddevices handelt?

Gruß
Stefan

strategy

#103
Hallo Bernd,

leider finde ich in der Nachricht auch keinerlei Informationen zur aktuellen Temperatur. Es wird lediglich eine Temperatur geliefert und das ist, wie du schon geschrieben hast, die eingestellte:


{
   "tadoMode":"HOME",
   "geolocationOverride":false,
   "geolocationOverrideDisableTime":null,
   "preparation":null,
   "setting":{
      "type":"HOT_WATER",
      "power":"ON",
      "temperature":{
         "celsius":55.00,
         "fahrenheit":131.00
      }
   },
   "overlayType":null,
   "overlay":null,
   "openWindow":null,
   "nextScheduleChange":null,
   "nextTimeBlock":{
      "start":"2019-05-30T00:15:00.000Z"
   },
   "link":{
      "state":"ONLINE"
   },
   "activityDataPoints":{

   },
   "sensorDataPoints":{

   }
}


Bei den Thermometern befindet sich diese Info in den Knoten SensorDataPoints oder ActivityDataPoints. Aber die sind bei Dir ja beide leer...

Wird diese Information denn in der App angezeigt?
Kannst du da mal einen Screenshot machen?

Gruß,
Matthias

PS: Ich hab jemanden gefunden, der hat die TADO API in Java verfügbar gemacht. Dabei hat er u.a. folgenden Kommentar verfasst:
  Hot Water zone reports only demand
Ich vermute also, dass die API lediglich die Soll-Temperatur aber nicht die Ist-Temperatur hergibt.

strategy

Zitat von: bewa58 am 29 Mai 2019, 15:44:16
@Matthias
Ist es eigentlich möglich die "Raumluft-Komfort" Auswertung innerhalb
der App (Vers 5.6.3) auch für FHEM auszulesen?

Puh, das hat scheinbar bisher noch keiner gemacht.
Ich habe jetzt mal die Kommunikation mit zwischen meinem Browser und dem Tado Server mitgeschnitten.

Dabei bin ich zu folgenden Erkenntnissen gekommen:
Die Bilder werden scheinbar als Bilder übertragen, sodass man dort keine Werte extrahieren kann.
Die Texte werden einzeln übertragen:



   "airComfort":[ 
      { 
         "roomId":1,
         "message":"Gut gemacht! Die Luft in diesem Raum ist nahezu perfekt.",
         "visual":"success",
         "link":null
      },
      { 
         "roomId":2,
         "message":"Macht weiter so! Die Luft in diesem Raum ist genau richtig.",
         "visual":"success",
         "link":null
      },
      { 
         "roomId":3,
         "message":"Macht weiter so! Die Luft in diesem Raum ist genau richtig.",
         "visual":"success",
         "link":null
      }
   ]
}


Aber ich stelle mal in Frage, dass Ihr Euch diese Information gewünscht habt.
Ihr habt vermutlich eher auf eine numerische oder "ein Wort" Darstellung gehofft, oder?


Dabei ist mir aber auch noch etwas aufgefallen.
Der Luftqualitätsindex der ganz oben auf der Seite steht stammt nicht von Tado. Hier nutzt Tado den Service des Drittanbieters  Breezometer. Da kommen ein paar Informationen:


{
   "datetime":"2019-06-03T11:00:00",
   "country_name":"Germany",
   "breezometer_aqi":68,
   "breezometer_color":"#90D32D",
   "breezometer_description":"Good air quality",
   "country_aqi":3,
   "country_aqi_prefix":"",
   "country_color":"#99FFFF",
   "country_description":"Satisfactory air quality",
   "data_valid":true,
   "key_valid":true,
   "random_recommendations":{
      "children":"You should supervise your children in the coming hours and monitor changes in air quality",
      "sport":"You can go on a run - just keep your nose open for any changes!",
      "health":"Exposure to air hazards is dangerous for people with health sensitivities, so it is important to monitor air quality at this time",
      "inside":"The air quality is still good - we'll keep you updated if things get worse",
      "outside":"It's still OK out there. Just stay alert for notifications about change in air quality"
   },
   "dominant_pollutant_canonical_name":"o3",
   "dominant_pollutant_description":"Ozone",
   "dominant_pollutant_text":{
      "main":"The dominant pollutant is ozone (O\u2083).",
      "effects":"Ozone can irritate the airways causing coughing, a burning sensation, wheezing and shortness of breath. Children, people with respiratory or lung and heart diseases, elderly and those who exercise outdoors are particularly vulnerable to ozone exposure.",
      "causes":"Ozone is created in a chemical reaction between atmospheric oxygen, nitrogen oxides, organic compounds and sunlight."
   },
   "pollutants":{
      "co":{
         "pollutant_description":"Carbon monoxide",
         "units":"ppb",
         "concentration":252.53
      },
      "no2":{
         "pollutant_description":"Nitrogen dioxide",
         "units":"ppb",
         "concentration":24.14
      },
      "o3":{
         "pollutant_description":"Ozone",
         "units":"ppb",
         "concentration":40.4
      },
      "pm10":{
         "pollutant_description":"Inhalable particulate matter (<10\u00b5m)",
         "units":"ug/m3",
         "concentration":33.47
      },
      "pm25":{
         "pollutant_description":"Fine particulate matter (<2.5\u00b5m)",
         "units":"ug/m3",
         "concentration":16.95
      },
      "so2":{
         "pollutant_description":"Sulfur dioxide",
         "units":"ppb",
         "concentration":1.96
      }
   }
}


Ist irgendeine der Informationen für Euch von Wert?
Insbesondere die Integration von Breezometer bedeutet sicher einigen Aufwand und da würde ich ungerne einfach losrennen und keiner braucht es...

Gruß,
Matthias