2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

vitoconnect: more readings and other small improvements

git-svn-id: https://svn.fhem.de/fhem/trunk@19074 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
andreas13 2019-03-30 18:10:23 +00:00
parent 8c7b5b3e4a
commit db7042d649

View File

@ -84,12 +84,20 @@
# Betriebsarten "heating" und "active" ergänzt # Betriebsarten "heating" und "active" ergänzt
# 2019-03-02 Readings für heating.boiler.sensors.temperature.commonSupply.value und # 2019-03-02 Readings für heating.boiler.sensors.temperature.commonSupply.value und
# heating.circuits.1.operating.modes.heating.active hinzugefügt # heating.circuits.1.operating.modes.heating.active hinzugefügt
# Typo fixed # Typo fixed ("Brenner_Be-t-riebsstunden")
# 2019-03-29 neue Readings:
# heating.circuits.1.operating.modes.dhwAndHeatingCooling.active 1
# heating.circuits.1.operating.modes.normalStandby.active 0
# heating.circuits.1.operating.programs.fixed.active 0
# heating.compressor.active 0
# heating.dhw.temperature.hysteresis.value 5
# heating.dhw.temperature.temp2.value 60
# Passwort wird bei "define" nur noch gesetzt, wenn noch kein Passwort gespeichert war
# Attribut "model" implementiert
# #
# #
# ToDo: timeout konfigurierbar machen # ToDo: timeout konfigurierbar machen
# "set"s für Schedules zum Steuern der Heizung implementieren # "set"s für Schedules zum Steuern der Heizung implementieren
# Dokumentation (insbesondere Wiki und auch auf Deutsch)
# Nicht bei jedem Lesen neu einloggen (wenn möglich) # Nicht bei jedem Lesen neu einloggen (wenn möglich)
# Fehlerbehandlung verbessern # Fehlerbehandlung verbessern
# Attribute implementieren und dokumentieren # Attribute implementieren und dokumentieren
@ -102,6 +110,9 @@
# vitoconnect_Set effizienter implementieren # vitoconnect_Set effizienter implementieren
# nach einem set Befehl Readings aktualisieren, vorher alten Timer löschen # nach einem set Befehl Readings aktualisieren, vorher alten Timer löschen
# heating.circuits.0.operating.programs.holiday.changeEndDate action: end implementieren? # heating.circuits.0.operating.programs.holiday.changeEndDate action: end implementieren?
# set für:
# heating.dhw.temperature.hysteresis.setHysteresis action: hysteresis und
# heating.dhw.temperature.temp2.setTargetTemperature action: temperature implementieren
# #
@ -130,6 +141,7 @@ my $RequestList = {
"heating.boiler.sensors.temperature.commonSupply.value" => "Kessel_Common_Supply_Temperatur", "heating.boiler.sensors.temperature.commonSupply.value" => "Kessel_Common_Supply_Temperatur",
"heating.boiler.sensors.temperature.main.status" => "Kessel_Status", "heating.boiler.sensors.temperature.main.status" => "Kessel_Status",
"heating.boiler.sensors.temperature.main.value" => "Kesseltemperatur", "heating.boiler.sensors.temperature.main.value" => "Kesseltemperatur",
"heating.burner.active" => "Brenner_aktiv", "heating.burner.active" => "Brenner_aktiv",
"heating.burner.automatic.status" => "Brenner_Status", "heating.burner.automatic.status" => "Brenner_Status",
"heating.burner.automatic.errorCode" => "Brenner_Fehlercode", "heating.burner.automatic.errorCode" => "Brenner_Fehlercode",
@ -151,9 +163,11 @@ my $RequestList = {
"heating.circuits.0.operating.modes.active.value" => "HK1-Betriebsart", "heating.circuits.0.operating.modes.active.value" => "HK1-Betriebsart",
"heating.circuits.0.operating.modes.dhw.active" => "HK1-WW_aktiv", "heating.circuits.0.operating.modes.dhw.active" => "HK1-WW_aktiv",
"heating.circuits.0.operating.modes.dhwAndHeating.active" => "HK1-WW_und_Heizen_aktiv", "heating.circuits.0.operating.modes.dhwAndHeating.active" => "HK1-WW_und_Heizen_aktiv",
"heating.circuits.0.operating.modes.dhwAndHeatingCooling.active" => "HK1-WW_und_Heizen_Kuehlen_aktiv",
"heating.circuits.0.operating.modes.forcedNormal.active" => "HK1-Solltemperatur_erzwungen", "heating.circuits.0.operating.modes.forcedNormal.active" => "HK1-Solltemperatur_erzwungen",
"heating.circuits.0.operating.modes.forcedReduced.active" => "HK1-Reduzierte_Temperatur_erzwungen", "heating.circuits.0.operating.modes.forcedReduced.active" => "HK1-Reduzierte_Temperatur_erzwungen",
"heating.circuits.0.operating.modes.heating.active" => "HK1-heizen_aktiv", "heating.circuits.0.operating.modes.heating.active" => "HK1-heizen_aktiv",
"heating.circuits.0.operating.modes.normalStandby.active" => "HK1-Normal_Standby_aktiv",
"heating.circuits.0.operating.modes.standby.active" => "HK1-Standby_aktiv", "heating.circuits.0.operating.modes.standby.active" => "HK1-Standby_aktiv",
"heating.circuits.0.operating.programs.active.value" => "HK1-Programmstatus", "heating.circuits.0.operating.programs.active.value" => "HK1-Programmstatus",
"heating.circuits.0.operating.programs.comfort.active" => "HK1-Solltemperatur_comfort_aktiv", "heating.circuits.0.operating.programs.comfort.active" => "HK1-Solltemperatur_comfort_aktiv",
@ -162,6 +176,7 @@ my $RequestList = {
"heating.circuits.0.operating.programs.eco.temperature" => "HK1-Solltemperatur_eco", "heating.circuits.0.operating.programs.eco.temperature" => "HK1-Solltemperatur_eco",
"heating.circuits.0.operating.programs.external.active" => "HK1-External_aktiv", "heating.circuits.0.operating.programs.external.active" => "HK1-External_aktiv",
"heating.circuits.0.operating.programs.external.temperature" => "HK1-External_Temperatur", "heating.circuits.0.operating.programs.external.temperature" => "HK1-External_Temperatur",
"heating.circuits.0.operating.programs.fixed.active" => "HK1-Fixed_aktiv",
"heating.circuits.0.operating.programs.holiday.active" => "HK1-Urlaub_aktiv", "heating.circuits.0.operating.programs.holiday.active" => "HK1-Urlaub_aktiv",
"heating.circuits.0.operating.programs.holiday.start" => "HK1-Urlaub_Start", "heating.circuits.0.operating.programs.holiday.start" => "HK1-Urlaub_Start",
"heating.circuits.0.operating.programs.holiday.end" => "HK1-Urlaub_Ende", "heating.circuits.0.operating.programs.holiday.end" => "HK1-Urlaub_Ende",
@ -187,9 +202,11 @@ my $RequestList = {
"heating.circuits.1.operating.modes.active.value" => "HK2-Betriebsart", "heating.circuits.1.operating.modes.active.value" => "HK2-Betriebsart",
"heating.circuits.1.operating.modes.dhw.active" => "HK2-WW_aktiv", "heating.circuits.1.operating.modes.dhw.active" => "HK2-WW_aktiv",
"heating.circuits.1.operating.modes.dhwAndHeating.active" => "HK2-WW_und_Heizen_aktiv", "heating.circuits.1.operating.modes.dhwAndHeating.active" => "HK2-WW_und_Heizen_aktiv",
"heating.circuits.1.operating.modes.dhwAndHeatingCooling.active" => "HK2-WW_und_Heizen_Kuehlen_aktiv",
"heating.circuits.1.operating.modes.forcedNormal.active" => "HK2-Solltemperatur_erzwungen", "heating.circuits.1.operating.modes.forcedNormal.active" => "HK2-Solltemperatur_erzwungen",
"heating.circuits.1.operating.modes.forcedReduced.active" => "HK2-Reduzierte_Temperatur_erzwungen", "heating.circuits.1.operating.modes.forcedReduced.active" => "HK2-Reduzierte_Temperatur_erzwungen",
"heating.circuits.1.operating.modes.heating.active" => "HK2-heizen_aktiv", "heating.circuits.1.operating.modes.heating.active" => "HK2-heizen_aktiv",
"heating.circuits.1.operating.modes.normalStandby.active" => "HK2-Normal_Standby_aktiv",
"heating.circuits.1.operating.modes.standby.active" => "HK2-Standby_aktiv", "heating.circuits.1.operating.modes.standby.active" => "HK2-Standby_aktiv",
"heating.circuits.1.operating.programs.active.value" => "HK2-Programmstatus", "heating.circuits.1.operating.programs.active.value" => "HK2-Programmstatus",
"heating.circuits.1.operating.programs.comfort.active" => "HK2-Solltemperatur_comfort_aktiv", "heating.circuits.1.operating.programs.comfort.active" => "HK2-Solltemperatur_comfort_aktiv",
@ -198,6 +215,7 @@ my $RequestList = {
"heating.circuits.1.operating.programs.eco.temperature" => "HK2-Solltemperatur_eco", "heating.circuits.1.operating.programs.eco.temperature" => "HK2-Solltemperatur_eco",
"heating.circuits.1.operating.programs.external.active" => "HK2-External_aktiv", "heating.circuits.1.operating.programs.external.active" => "HK2-External_aktiv",
"heating.circuits.1.operating.programs.external.temperature" => "HK2-External_Temperatur", "heating.circuits.1.operating.programs.external.temperature" => "HK2-External_Temperatur",
"heating.circuits.1.operating.programs.fixed.active" => "HK2-Fixed_aktiv",
"heating.circuits.1.operating.programs.holiday.active" => "HK2-Urlaub_aktiv", "heating.circuits.1.operating.programs.holiday.active" => "HK2-Urlaub_aktiv",
"heating.circuits.1.operating.programs.holiday.start" => "HK2-Urlaub_Start", "heating.circuits.1.operating.programs.holiday.start" => "HK2-Urlaub_Start",
"heating.circuits.1.operating.programs.holiday.end" => "HK2-Urlaub_Ende", "heating.circuits.1.operating.programs.holiday.end" => "HK2-Urlaub_Ende",
@ -210,7 +228,7 @@ my $RequestList = {
"heating.circuits.1.sensors.temperature.room.value" => "HK2-Raum_Temperatur", "heating.circuits.1.sensors.temperature.room.value" => "HK2-Raum_Temperatur",
"heating.circuits.1.sensors.temperature.supply.status" => "HK2-Vorlauftemperatur_aktiv", "heating.circuits.1.sensors.temperature.supply.status" => "HK2-Vorlauftemperatur_aktiv",
"heating.circuits.1.sensors.temperature.supply.value" => "HK2-Vorlauftemperatur", "heating.circuits.1.sensors.temperature.supply.value" => "HK2-Vorlauftemperatur",
"heating.circuits.2.active" => "HK3-aktiv", "heating.circuits.2.active" => "HK3-aktiv",
"heating.circuits.2.circulation.pump.status" => "HK3-Zirkulationspumpe", "heating.circuits.2.circulation.pump.status" => "HK3-Zirkulationspumpe",
"heating.circuits.2.circulation.schedule.active" => "HK3-Zeitsteuerung_Zirkulation_aktiv", "heating.circuits.2.circulation.schedule.active" => "HK3-Zeitsteuerung_Zirkulation_aktiv",
@ -223,9 +241,11 @@ my $RequestList = {
"heating.circuits.2.operating.modes.active.value" => "HK3-Betriebsart", "heating.circuits.2.operating.modes.active.value" => "HK3-Betriebsart",
"heating.circuits.2.operating.modes.dhw.active" => "HK3-WW_aktiv", "heating.circuits.2.operating.modes.dhw.active" => "HK3-WW_aktiv",
"heating.circuits.2.operating.modes.dhwAndHeating.active" => "HK3-WW_und_Heizen_aktiv", "heating.circuits.2.operating.modes.dhwAndHeating.active" => "HK3-WW_und_Heizen_aktiv",
"heating.circuits.2.operating.modes.dhwAndHeatingCooling.active" => "HK3-WW_und_Heizen_Kuehlen_aktiv",
"heating.circuits.2.operating.modes.forcedNormal.active" => "HK3-Solltemperatur_erzwungen", "heating.circuits.2.operating.modes.forcedNormal.active" => "HK3-Solltemperatur_erzwungen",
"heating.circuits.2.operating.modes.forcedReduced.active" => "HK3-Reduzierte_Temperatur_erzwungen", "heating.circuits.2.operating.modes.forcedReduced.active" => "HK3-Reduzierte_Temperatur_erzwungen",
"heating.circuits.2.operating.modes.heating.active" => "HK3-heizen_aktiv", "heating.circuits.2.operating.modes.heating.active" => "HK3-heizen_aktiv",
"heating.circuits.2.operating.modes.normalStandby.active" => "HK3-Normal_Standby_aktiv",
"heating.circuits.2.operating.modes.standby.active" => "HK3-Standby_aktiv", "heating.circuits.2.operating.modes.standby.active" => "HK3-Standby_aktiv",
"heating.circuits.2.operating.programs.active.value" => "HK3-Programmstatus", "heating.circuits.2.operating.programs.active.value" => "HK3-Programmstatus",
"heating.circuits.2.operating.programs.comfort.active" => "HK3-Solltemperatur_comfort_aktiv", "heating.circuits.2.operating.programs.comfort.active" => "HK3-Solltemperatur_comfort_aktiv",
@ -234,6 +254,7 @@ my $RequestList = {
"heating.circuits.2.operating.programs.eco.temperature" => "HK3-Solltemperatur_eco", "heating.circuits.2.operating.programs.eco.temperature" => "HK3-Solltemperatur_eco",
"heating.circuits.2.operating.programs.external.active" => "HK3-External_aktiv", "heating.circuits.2.operating.programs.external.active" => "HK3-External_aktiv",
"heating.circuits.2.operating.programs.external.temperature" => "HK3-External_Temperatur", "heating.circuits.2.operating.programs.external.temperature" => "HK3-External_Temperatur",
"heating.circuits.2.operating.programs.fixed.active" => "HK3-Fixed_aktiv",
"heating.circuits.2.operating.programs.holiday.active" => "HK3-Urlaub_aktiv", "heating.circuits.2.operating.programs.holiday.active" => "HK3-Urlaub_aktiv",
"heating.circuits.2.operating.programs.holiday.start" => "HK3-Urlaub_Start", "heating.circuits.2.operating.programs.holiday.start" => "HK3-Urlaub_Start",
"heating.circuits.2.operating.programs.holiday.end" => "HK3-Urlaub_Ende", "heating.circuits.2.operating.programs.holiday.end" => "HK3-Urlaub_Ende",
@ -247,6 +268,7 @@ my $RequestList = {
"heating.circuits.2.sensors.temperature.supply.status" => "HK3-Vorlauftemperatur_aktiv", "heating.circuits.2.sensors.temperature.supply.status" => "HK3-Vorlauftemperatur_aktiv",
"heating.circuits.2.sensors.temperature.supply.value" => "HK3-Vorlauftemperatur", "heating.circuits.2.sensors.temperature.supply.value" => "HK3-Vorlauftemperatur",
"heating.compressor.active" => "Kompressor_aktiv",
"heating.configuration.multiFamilyHouse.active" => "Mehrfamilenhaus_aktiv", "heating.configuration.multiFamilyHouse.active" => "Mehrfamilenhaus_aktiv",
"heating.controller.serial.value" => "Controller_Seriennummer", "heating.controller.serial.value" => "Controller_Seriennummer",
"heating.device.time.offset.value" => "Device_Time_Offset", "heating.device.time.offset.value" => "Device_Time_Offset",
@ -266,7 +288,9 @@ my $RequestList = {
"heating.dhw.sensors.temperature.outlet.status" => "WW-Sensoren_Auslauf_Status", "heating.dhw.sensors.temperature.outlet.status" => "WW-Sensoren_Auslauf_Status",
"heating.dhw.sensors.temperature.outlet.value" => "WW-Sensoren_Auslauf_Wert", "heating.dhw.sensors.temperature.outlet.value" => "WW-Sensoren_Auslauf_Wert",
"heating.dhw.temperature.main.value" => "WW-Haupttemperatur", "heating.dhw.temperature.main.value" => "WW-Haupttemperatur",
"heating.dhw.sensors.temperature.hotWaterStorage.status" => "WW-Temperatur_aktiv", "heating.dhw.temperature.hysteresis.value" => "WW-Hysterese",
"heating.dhw.temperature.temp2.value" => "WW-Temperatur_2",
"heating.dhw.sensors.temperature.hotWaterStorage.status" => "WW-Temperatur_aktiv",
"heating.dhw.sensors.temperature.hotWaterStorage.value" => "WW-Isttemperatur", "heating.dhw.sensors.temperature.hotWaterStorage.value" => "WW-Isttemperatur",
"heating.dhw.temperature.value" => "WW-Solltemperatur", "heating.dhw.temperature.value" => "WW-Solltemperatur",
"heating.dhw.schedule.active" => "WW-zeitgesteuert_aktiv", "heating.dhw.schedule.active" => "WW-zeitgesteuert_aktiv",
@ -314,6 +338,12 @@ sub vitoconnect_Initialize($) {
$hash->{AttrFn} = 'vitoconnect_Attr'; $hash->{AttrFn} = 'vitoconnect_Attr';
$hash->{ReadFn} = 'vitoconnect_Read'; $hash->{ReadFn} = 'vitoconnect_Read';
$hash->{AttrList} = "disable:0,1 " $hash->{AttrList} = "disable:0,1 "
."model:Vitodens_200-W_(B2HB),Vitodens_200-W_(B2KB),"
."Vitotronic_200_(HO1),Vitotronic_200_(HO1A),Vitotronic_200_(HO1B),Vitotronic_200_(HO1D),Vitotronic_200_(HO2B),"
."Vitotronic_200_RF_(HO1C),Vitotronic_200_RF_(HO1E),"
."Vitotronic_200_(KO1B),Vitotronic_200_(KO2B),Vitotronic_200_(KW6),Vitotronic_200_(KW6A),Vitotronic_200_(KW6B),Vitotronic_200_(KW1),Vitotronic_200_(KW2),Vitotronic_200_(KW4),Vitotronic_200_(KW5),"
."Vitotronic_300_(KW3),Vitotronic_200_(WO1A),Vitotronic_200_(WO1B),Vitotronic_200_(WO1C),"
."Vitoligno_300-C,Vitoligno_200-S,Vitoligno_300-P_mit_Vitotronic_200_(FO1),Vitoligno_250-S,Vitoligno_300-S "
."vitoconnect_raw_readings:0,1 " ."vitoconnect_raw_readings:0,1 "
."vitoconnect_actions_active:0,1 " ."vitoconnect_actions_active:0,1 "
.$readingFnAttributes; .$readingFnAttributes;
@ -330,8 +360,13 @@ sub vitoconnect_Define($$) {
$hash->{intervall} = $param[4]; $hash->{intervall} = $param[4];
$hash->{counter} = 0; $hash->{counter} = 0;
my $err = vitoconnect_StoreKeyValue($hash, "passwd", $param[3]); my $isiwebpasswd = vitoconnect_ReadKeyValue($hash, "passwd");
return $err if ($err); if ($isiwebpasswd eq ""){
my $err = vitoconnect_StoreKeyValue($hash, "passwd", $param[3]);
return $err if ($err)
} else {
Log3 $name, 3, "$name - Passwort war bereits gespeichert";
}
InternalTimer(gettimeofday()+10, "vitoconnect_GetUpdate", $hash); InternalTimer(gettimeofday()+10, "vitoconnect_GetUpdate", $hash);
return undef; return undef;
@ -1026,7 +1061,7 @@ sub vitoconnect_Attr(@) {
sub vitoconnect_GetUpdate($) { sub vitoconnect_GetUpdate($) {
my ($hash) = @_; my ($hash) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 4, "$name: GetUpdate called ..."; Log3 $name, 4, "$name - GetUpdate called ...";
if ( IsDisabled($name) ) { if ( IsDisabled($name) ) {
Log3 $name, 4, "$name: device disabled"; Log3 $name, 4, "$name: device disabled";
InternalTimer(gettimeofday()+$hash->{intervall}, "vitoconnect_GetUpdate", $hash); InternalTimer(gettimeofday()+$hash->{intervall}, "vitoconnect_GetUpdate", $hash);
@ -1053,6 +1088,7 @@ sub vitoconnect_getCode($) {
callback => \&vitoconnect_getCodeCallback callback => \&vitoconnect_getCodeCallback
}; };
#Log3 $name, 4, "$name: user=$param->{user} passwd=$param->{pwd}";
# Log3 $name, 5, Dumper($hash); # Log3 $name, 5, Dumper($hash);
HttpUtils_NonblockingGet($param); HttpUtils_NonblockingGet($param);
return undef; return undef;
@ -1332,6 +1368,7 @@ sub vitoconnect_action($) {
sslargs => {SSL_verify_mode => 0}, sslargs => {SSL_verify_mode => 0},
timeout => 10, timeout => 10,
method => "POST" }; method => "POST" };
Log3 $name, 4, "$name: user=$param->{user} passwd=$param->{pwd}";
($err, $response_body) = HttpUtils_BlockingGet($param); ($err, $response_body) = HttpUtils_BlockingGet($param);
if ($err eq "") { if ($err eq "") {
$response_body =~ /code=(.*)"/; $response_body =~ /code=(.*)"/;