Hallo Zusammen,
ich habe eine Viessmann Gastherme in FHEM eingebunden. Mit dem Befehl
set Vitodens200W Timer_Haus_1MO 08:00,22:00,--,--,--,--,--,--,
kann ich die Heizzeiten hier z.B. am Montag einstellen.
Wie bekomme ich das jetzt in TabletUI umgesetzt? Also wie kann ich die Eingabefelder in Tablet UI darstellen? Mir würden die ersten zwei Felder ausreichen.. also Heizen-Ein um 08:00 und Heizen-Aus um 22:00.
Hier die List der Viessmann-Definition
Internals:
DEF /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 /opt/fhem/89_VCONTROL300_VScotHO1.cfg 180 300
DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@4800,8,E,2
FUUID 5e9c9f50-f33f-a976-fe15-0733b6601772e855
INTERVAL 180
NAME Vitodens200W
NR 55
PROTOCOL 300
STATE 22 °C Heizen_und_Warmwasser
TYPE VCONTROL300
UPDATESTATUS INACTIVE
OLDREADINGS:
READINGS:
2020-04-28 20:33:11 Aktuelle Betriebsart Heizen_und_Warmwasser
2020-04-28 20:33:12 Aussentemperatur 16.6
2020-04-28 20:33:12 Betriebsart Heizen_und_Warmwasser
2020-04-28 20:33:12 Betriebsart_Party off
2020-04-28 20:33:12 Betriebsart_Spar off
2020-04-28 20:33:12 Brennerlaufzeit 13798.33
2020-04-28 20:33:12 Brennerlaufzeit_Today 0.01
2020-04-28 00:00:23 Brennerlaufzeit_TodayStart 13798.32
2020-04-28 00:00:23 Brennerlaufzeit_Yesterday 0.02
2020-04-28 20:33:11 Brennerleistung 0
2020-04-28 20:33:11 Brennerstarts 32378
2020-04-28 20:33:11 Brennerstarts_Today 1.00
2020-04-28 00:00:22 Brennerstarts_TodayStart 32377.00
2020-04-28 00:00:22 Brennerstarts_Yesterday 1.00
2020-04-28 20:33:11 Brennerstatus off
2020-04-28 20:33:11 Heizkennlinie_Neigung 1.1
2020-04-28 20:33:12 Heizkennlinie_Niveau 1
2020-04-28 20:33:12 Kesseltemperatur_Ist 54.5
2020-04-28 20:33:11 Kesseltemperatur_Soll 37.9
2020-04-28 20:33:11 Partybetrieb_Status off
2020-04-28 20:33:11 Raumtemperatur_Party_Soll 26
2020-04-28 20:33:11 Raumtemperatur_Red_Soll 3
2020-04-28 20:33:11 Raumtemperatur_Soll 22
2020-04-28 20:33:12 Stoerung off
2020-04-28 20:33:12 Systemzeit Di,28.04.2020 20:32:18
2020-04-28 20:30:14 Timer_Haus_1MO 07:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Haus_2DI 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Haus_3MI 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Haus_4DO 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Haus_5FR 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Haus_6SA 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Haus_7SO 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:14 Timer_Wasser_1MO 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:14 Timer_Wasser_2DI 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Wasser_3MI 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Wasser_4DO 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:14 Timer_Wasser_5FR 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Wasser_6SA 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:30:13 Timer_Wasser_7SO 06:00,22:00,--,--,--,--,--,--,
2020-04-28 20:33:12 Umwaelzpumpe_Heizkreis2 on
2020-04-28 20:33:12 Umwaelzpumpe_Intern on
2020-04-28 20:33:12 UpdateStatus Inactive
2020-04-28 20:33:12 UpdateTime 2020-04-28_20:33:12
2020-04-28 20:33:11 Urlaubs-Beginn Do,01.01.1970 00:00:00
2020-04-28 20:33:12 Urlaubs-Ende Do,01.01.1970 00:00:00
2020-04-28 20:33:11 Vorlauftemperatur_Soll 30.5
2020-04-28 20:33:12 Warmwassertemperatur_Ist 53.7
2020-04-28 20:33:11 Warmwassertemperatur_Soll 41
helper:
Attributes:
icon sani_boiler_temp
room 10_Spitzboden
stateFormat Raumtemperatur_Soll °C Betriebsart
vitotronicType 200_HOxx
ich kann Dir leider nicht helfen, hänge mich hier aber mal dran... 8)
Ich hatte mal eine FUnktion in myUtils geschrieben, die von Weekprofile auf Vito überträgt. Damit ist es theoretisch möglich das Weekprofile Widget von Tablet UI zu benutzen
Nun... diese habe ich schon lange nicht mehr benutzt, und ich weiss nicht, ob es immer noch funktionieren würde. Also... ohne Gewähr.
sub
WpToVito($$$)
{
my ($vito,$wp,$profile) = @_;
my $json = fhem ("get $wp profile_data $profile");
my $result = decode_json( $json );
my $day;
my $wert;
my %output;
my %weekday = ( 'Mon' => '_2_MO',
'Tue' => '_3_DI',
'Wed' => '_4_MI',
'Thu' => '_5_DO',
'Fri' => '_6_FR',
'Sat' => '_0_SA',
'Sun' => '_1_SO');
while ( ($day,$wert) = each(%$result) ) {
my @timetable = @{@{$wert}{"time"}};
my @temptable = @{@{$wert}{"temp"}};
my $l = scalar @timetable;
my $nbtimes=0;
$output{$day} = "TIMER";
if ($wp eq "wp_WW") { $output{$day} .= "_WW"; };
$output{$day} .= $weekday{$day}." ";
foreach my $i (0..$l-1) {
if ($temptable[$i] eq "on") {
if ($i == 0) {
$output{$day} .= "00:00,$timetable[0]";
$nbtimes = 1;
}
elsif ($nbtimes < 4) {
if ($nbtimes > 0) { $output{$day} .= ","; };
$output{$day} .= "$timetable[$i-1],$timetable[$i]";
$nbtimes += 1;
};
};
};
foreach my $j ($nbtimes+1..4) {
if ($nbtimes > 0) { $output{$day} .= ","; };
$output{$day} .= "--,--";
$nbtimes += 1;
};
};
my $bef = "set ".$vito." ".$output{'Mon'};
fhem( "$bef" );
Log 1,"WpToVito $wp $profile: $bef\n";
$bef = "set ".$vito." ".$output{'Tue'};
fhem( "$bef" );
Log 1,"WpToVito $wp $profile: $bef\n";
$bef = "set ".$vito." ".$output{'Wed'};
fhem( "$bef" );
Log 1,"WpToVito $wp $profile: $bef\n";
$bef = "set ".$vito." ".$output{'Thu'};
fhem( "$bef" );
Log 1,"WpToVito $wp $profile: $bef\n";
$bef = "set ".$vito." ".$output{'Fri'};
fhem( "$bef" );
Log 1,"WpToVito $wp $profile: $bef\n";
$bef = "set ".$vito." ".$output{'Sat'};
fhem( "$bef" );
Log 1,"WpToVito $wp $profile: $bef\n";
$bef = "set ".$vito." ".$output{'Sun'};
fhem( "$bef" );
Log 1,"WpToVito $wp $profile: $bef\n";
}
Idee: Einen Dummy anlegen und diese per Tablet UI speichern und dann ein DOIF aufbauen, das bei Statusänderung "den" SET-Befehl zusammengesetzt aus den Variablen schickt.
In Tablet UI dann die Felder mit Datetimepicker abbilden und die entsprechenen Readings im Dummy speichern.
Dann einen Speichern-Button zum Auslösen des Events (DOIF startet) einbauen.