VBus in fhem

Begonnen von sweetie-pie, 15 Januar 2013, 12:27:34

Vorheriges Thema - Nächstes Thema

Gunther

Backup kann ich auch nicht einspielen.
Kann ich da über telnet irgendwas machen? Also z. B. die vbus-Dateien rauswerfen?
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Gunther

Ups, nun mit Port 8083 versucht. Leider dasselbe... :-(

Zitat von: Gunther schrieb am Mi, 30 Januar 2013 08:15hmm klappt leider nicht:
Starten kann ich FHEM nicht und weder per Fritzbox noch per Netzwerk kann ich in den FHEM Ordner rein. Löschen desgleichen geht auch nicht, da er angeblich verwendet wird.

Folgendes wirft das Terminal mir aus:

Gunthers-MacBook-Pro:~ user$ telnet 192.168.0.1:7053
Trying 62.157.140.133...
Connected to 192.168.0.1:7053.
Escape character is '^]'.
killall -9 perl
Connection closed by foreign host.
Gunthers-MacBook-Pro:~ user$
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

akw

Hi,

ich hab das Modul für meine Diemasol C mit Hilde der o.g. VBUS-Spezifikation von RESOL und ein wenig rumprobieren gemacht.
Bei mir läuft es seit fast zwei Jahren problemlos.
Es ist noch nicht optimal, z.B. lausche ich timergesteuert alle paar Sekunden auf den Datenstream, bis ich einen Paketanfang gefunden habe und bleibe dann solange verbunden, bis ein volles gültiges Paket gelesen werden konnte. Das könnte man noch optimieren...
Anpassungen für andere Geräte sollten auch nicht so schwierig sein.
Die Windows-Software bindet die verschiedenen Geräte mit gerätespezifischen XML-Dateien ein, die das jeweilige Binärformat der Geräte beschreiben. Diese Dateien in dem FHEM-Modul einzubinden erscheint mir aber als Overkill, deswegen habe ich das für meine Diemasol quick+dirty gemacht.
Man kann die XML Files aus dem Java-Archiv der Windows Software extrahieren, aber ich weiß nicht mehr, wo man die runterladen konnte... Wahrscheinlich ist sie auch nicht mehr aktuell.

Wenn es ein konkretes Problem gibt, helfe ich gerne.

Ciao, Arno
FHEM-SVN auf MacMini OSX 10.7.5

FS20,FHT,HMS,CUL_WS,CUL_HM,KS300,HUE,FB_DECT

FHEMobile: www.fhemobile.de

Gunther

Hallo Arno,

wenn ich die beiden Dateien in mein FHEM (FB7390) schiebe, bekomme ich keinen Zugriff mehr auf FHEM. (an die weiteren Tester: passiert Euch das auch?)

1.) Gibt es eine aktuelle Version bei der das nicht passiert?

2.) Wo hast Du die "Nummer" Deiner Dimasol C her? Ich habe nun verschiedene Spezifikationen und das I-Net nach Dimasol C und der Nummer durchforstet und bin leider nicht fündig geworden, wie ich das auf meine Vitosolic adaptieren kann. Vermutlich sind die beiden mit "Nummer" beginnenden Zeilen anzupassen? (1000 bleibt immer gleich?)

# my %vbus_devices = (
# "1000" => "VBUS Adapter",
# "5177" => "Diemasol C"
# );

my %vbus_devices = (
"1000" => "VBUS Adapter",
"7321" => "Vitosolic 200"
);


3.) den Abschnitt in Deinem Coding habe ich nicht verstanden. Ich vermute das das die 2. Passage ist, wo etwas anlagespezifisch anzupassen ist. Kannst Du uns hier einen Tipp geben, wie wir vorzugehen haben?
ab:
# TODO Je nach Device (5177 fuer Diemasol C) die richtigen Bytes abgreifen
#
my $i = 0;
my $temp_collector = (ord(substr($payload,1,1))*256 + ord(substr($payload,0,1))) / 10.;
my $temp_storage = (ord(substr($payload,9,1))*256 + ord(substr($payload,8,1))) / 10.;
my $temp_freshwater = (ord(substr($payload,7,1))*256 + ord(substr($payload,6,1))) / 10.;
my $temp_heating = (ord(substr($payload,11,1))*256 + ord(substr($payload,10,1))) / 10.;
my $pump_throughput = (ord(substr($payload,23,1))*256 + ord(substr($payload,22,1))) / 10.;
my $vent_storage = (ord(substr($payload,27,1)) & (0x02) !=0) ? 1 : 0;
my $vent_heating = (ord(substr($payload,27,1)) & (0x20) !=0) ? 1 : 0;

my $val = "T1: ".$temp_collector." T2: ".$temp_storage." T3: ".$temp_freshwater." T4: ".$temp_heating." V1: ".$vent_storage." V2: ".$vent_heating." V3: ".$pump_throughput;


Das wäre Granate!

Viele Grüße
Gunther
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

sweetie-pie

Hallo,

und zunächst mal Danke an Arno für das Modul und an Burn für die Bereitstellung der Doku. Damit habe ich mal die ersten 32 Byte für meine COSMO Multi abgegriffen. Hier der Code dafür:
       my $i = 0;
        my $temp_s1 = (ord(substr($payload,1,1))*256 + ord(substr($payload,0,1))) / 10.;
        my $temp_s2 = (ord(substr($payload,3,1))*256 + ord(substr($payload,2,1))) / 10.;
        my $temp_s3 = (ord(substr($payload,5,1))*256 + ord(substr($payload,4,1))) / 10.;
        my $temp_s4 = (ord(substr($payload,7,1))*256 + ord(substr($payload,6,1))) / 10.;
        my $temp_s5 = (ord(substr($payload,9,1))*256 + ord(substr($payload,8,1))) / 10.;
        my $temp_s6 = (ord(substr($payload,11,1))*256 + ord(substr($payload,10,1))) / 10.;
        my $temp_s7 = (ord(substr($payload,13,1))*256 + ord(substr($payload,12,1))) / 10.;
        my $temp_s8 = (ord(substr($payload,15,1))*256 + ord(substr($payload,14,1))) / 10.;
        my $temp_s9 = (ord(substr($payload,17,1))*256 + ord(substr($payload,16,1))) / 10.;
        my $temp_s10 = (ord(substr($payload,19,1))*256 + ord(substr($payload,18,1))) / 10.;

        Log 3,"$name: Temperature sensor 1    $temp_s1 (Celsius)";
        Log 3,"$name: Temperature sensor 2    $temp_s2 (Celsius)";
        Log 3,"$name: Temperature sensor 3    $temp_s3 (Celsius)";
        Log 3,"$name: Temperature sensor 4    $temp_s4 (Celsius)";
        Log 3,"$name: Temperature sensor 5    $temp_s5 (Celsius)";
        Log 3,"$name: Temperature sensor 6    $temp_s6 (Celsius)";
        Log 3,"$name: Temperature sensor 7    $temp_s7 (Celsius)";
        Log 3,"$name: Temperature sensor 8    $temp_s8 (Celsius)";
        Log 3,"$name: Temperature sensor 9    $temp_s9 (Celsius)";
        Log 3,"$name: Temperature sensor 10   $temp_s10 (Celsius)";


        my $radiation = (ord(substr($payload,21,1))*256 + ord(substr($payload,20,1))) / 10.;
        my $impulse = (ord(substr($payload,23,1))*256 + ord(substr($payload,22,1))) / 10.;
        my $digi_in = (ord(substr($payload,25,1))*256 + ord(substr($payload,24,1)));

        Log 3,"$name: Irradiation CS          $radiation (W/m2)";
        Log 3,"$name: Impulse 1 V40           $impulse";
        Log 3,"$name: Digital Input           $digi_in";


        my $ps_relay1 = ord(substr($payload,26,1));
        my $ps_relay2 = ord(substr($payload,27,1));
        my $ps_relay3 = ord(substr($payload,28,1));
        my $ps_relay4 = ord(substr($payload,29,1));
        my $ps_relay5 = ord(substr($payload,30,1));
        my $ps_relay6 = ord(substr($payload,31,1));
        my $ps_relay7 = ord(substr($payload,32,1));

        Log 3,"$name: Pump speed relay 1      $ps_relay1 (%)";
        Log 3,"$name: Pump speed relay 2      $ps_relay2 (%)";
        Log 3,"$name: Pump speed relay 3      $ps_relay3 (%)";
        Log 3,"$name: Pump speed relay 4      $ps_relay4 (%)";
        Log 3,"$name: Pump speed relay 5      $ps_relay5 (%)";
        Log 3,"$name: Pump speed relay 6      $ps_relay6 (%)";
        Log 3,"$name: Pump speed relay 7      $ps_relay7 (%)";


        my $val = "T1: ".$temp_s1." T2: ".$temp_s2." T3: ".$temp_s3." T7: ".$temp_s7." T8: ".$temp_s8." T9: ".$temp_s9;
        my $val = $val." R1: ".$ps_relay1." R3: ".$ps_relay3." R5: ".$ps_relay5." R6: ".$ps_relay6." R7: ".$ps_relay7;


Irgendwie scheint aber das pharsen der Payload noch nicht ganz richtig zu funktionieren. Da ich leider auch nicht der Perlfreak bin, bin ich mir auch nicht sicher was Arno beim "Anfang/Ende finden" genau macht. Jedenfalls scheint es, als ob manchmal die Payload etwas zu klein ist...

Die folgende Ausgabe ist richtig gepharsed und identisch mit den Werten im Resol-Service Center:

2013.01.31 12:10:25 3: MyVBUSDevice: Try 0 Find beginning
2013.01.31 12:10:25 3: MyVBUSDevice: Try 0 Find end aa000021782000050000000000000041aa10002178100001113406006801010f65013822043b38223822054609015001012371013822042f00000000007f01000000007e00000000007f00000000007f00000000007f01003001004d00000000007f00000000007f00000000007f00000000007f01033b1304295d07011f017aaa150021781000010838020a
2013.01.31 12:10:25 3: MyVBUSDevice: Src: 2178 Dst: 0000 Proto: 20 CMD: 0005 FC: 0 CRC: 0
2013.01.31 12:10:25 3: MyVBUSDevice: Try 1 Find beginning
2013.01.31 12:10:28 3: MyVBUSDevice: Try 1 Find end aa10002178100001113406006801010f65013822043b38223822054609015001012371013822042f00000000007f01000000007e00000000007f00000000007f00000000007f01003001004d00000000007f00000000007f00000000007f00000000007f01033b1304295d07011f017aaa150021781000010838020a0000007306006801010f10000000016e010b0000007300000000007f02080000007500000000007f0000007f0878aa000021782000050000000000000041aa10002178100001113406006801010f65013822043b38223822054609015201012172013822042e00000000007f01000000007e00000000007f00000000007f00000000007f01003001004d00000000007f00000000007f00000000007f00000000007f01033c1304285d07011f017aaa150021781000010838020a0000007306006801010f10000000016e010b0000007300000000007f02080000007500000000007f0064007f0814aa000021782000050000000000000041aa10002178100001113407006801010e65013822043b38223822054609015401011f74013822042c00000000007f01000000007e00000000007f00000000007f00000000007f01003001004d00000000007f00000000010b0000007300000000007f02080000007500000000007f0000007f0878aa000021782000050000000000000041aa10002178100001113405006701011165013822043b38223822054609016801010b00013822051f00000000007f01000000007e00000000007f00000000007f00000000007f01003001004d00000000007f00000000007f00000000007f00000000007f01033c1304285d07011f017aaa150021781000010838020a
2013.01.31 12:10:30 3: MyVBUSDevice: Src: 2178 Dst: 1000 Proto: 10 CMD: 0001 FC: 17 CRC: 52
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 1    13.4 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 2    36 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 3    35.7 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 4    888.8 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 5    888.8 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 6    888.8 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 7    39.3 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 8    33.6 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 9    36.9 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Temperature sensor 10   888.8 (Celsius)
2013.01.31 12:10:30 3: MyVBUSDevice: Irradiation CS          0 (W/m2)
2013.01.31 12:10:30 3: MyVBUSDevice: Impulse 1 V40           0
2013.01.31 12:10:30 3: MyVBUSDevice: Digital Input           1
2013.01.31 12:10:30 3: MyVBUSDevice: Pump speed relay 1      0 (%)
2013.01.31 12:10:30 3: MyVBUSDevice: Pump speed relay 2      0 (%)
2013.01.31 12:10:30 3: MyVBUSDevice: Pump speed relay 3      0 (%)
2013.01.31 12:10:30 3: MyVBUSDevice: Pump speed relay 4      0 (%)
2013.01.31 12:10:30 3: MyVBUSDevice: Pump speed relay 5      0 (%)
2013.01.31 12:10:30 3: MyVBUSDevice: Pump speed relay 6      0 (%)
2013.01.31 12:10:30 3: MyVBUSDevice: Pump speed relay 7      0 (%)
2013.01.31 12:10:30 3: MyVBUSDevice: VBUS "" T1: 13.4 T2: 36 T3: 35.7 T7: 39.3 T8: 33.6 T9: 36.9 R1: 0 R3: 0 R5: 0 R6: 0 R7: 0


Die Ausgabe hier ist nicht richtig:

2013.01.31 12:11:30 3: MyVBUSDevice: Try 0 Find beginning
2013.01.31 12:11:30 3: MyVBUSDevice: Try 0 Find end aa150021781000010838020a
2013.01.31 12:11:30 3: MyVBUSDevice: Src: 2178 Dst: 1500 Proto: 10 CMD: 0001 FC: 8 CRC: 56
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 1    256.2 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 2    0 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 3    13.5 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 4    35.9 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 5    14.4 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 6    0 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 7    281.7 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 8    0 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 9    0 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Temperature sensor 10   0 (Celsius)
2013.01.31 12:11:30 3: MyVBUSDevice: Irradiation CS          205 (W/m2)
2013.01.31 12:11:30 3: MyVBUSDevice: Impulse 1 V40           0
2013.01.31 12:11:30 3: MyVBUSDevice: Digital Input           0
2013.01.31 12:11:30 3: MyVBUSDevice: Pump speed relay 1      0 (%)
2013.01.31 12:11:30 3: MyVBUSDevice: Pump speed relay 2      0 (%)
2013.01.31 12:11:30 3: MyVBUSDevice: Pump speed relay 3      0 (%)
2013.01.31 12:11:30 3: MyVBUSDevice: Pump speed relay 4      0 (%)
2013.01.31 12:11:30 3: MyVBUSDevice: Pump speed relay 5      0 (%)
2013.01.31 12:11:30 3: MyVBUSDevice: Pump speed relay 6      255 (%)
2013.01.31 12:11:30 3: MyVBUSDevice: Pump speed relay 7      0 (%)
2013.01.31 12:11:30 3: MyVBUSDevice: VBUS "" T1: 256.2 T2: 0 T3: 13.5 T7: 281.7 T8: 0 T9: 0 R1: 0 R3: 0 R5: 0 R6: 255 R7: 0


OT: Die Service-Center Software gibt es übrigens hier: http://www.vbus.net/download/ServiceCenterFullSetup_2.5b8.zip Wer diese auch unter Linux nutzen möchte, sollte sich mal das Repack-Skript von Daniel Wippermann anschauen. Geht bei mir wunderbar x64.

Gruß
 Holger

sweetie-pie

Okay, nun schient es zu laufen.
Auf meinem Bus sind anscheinend noch andere Pakete unterwegs, warum auch immer.
Damit nur die richtigen ausgewertet werden, habe ich jetzt einfach nochmal nach dem Ziel "vbus-Adapter" gefiltert.

Dazu habe ich die Gültigkeitsabfragen quick&dirty nochmal um ||$dst_addr != "1000" ergänzt:

       for (my $i=0;$i<3 && ($protoVersion!="10"||$dst_addr != "1000");$i++) {
                # Find beginning

        my $devtype = $vbus_devices{$src_addr};  # TODO OR "Unknown: ".$src_addr
        if ($protoVersion != "10"||$dst_addr != "1000") {
                return;
        }


Gruß
 Holger

akw

Zitat von: sweetie-pie schrieb am Do, 31 Januar 2013 14:18Dazu habe ich die Gültigkeitsabfragen quick&dirty nochmal um ||$dst_addr != "1000" ergänzt:

Klingt gut, 1000 als Ziel-Adresse müssen Pakete sein, die an den VBUS-Adapter gehen.

Ciao, Arno
FHEM-SVN auf MacMini OSX 10.7.5

FS20,FHT,HMS,CUL_WS,CUL_HM,KS300,HUE,FB_DECT

FHEMobile: www.fhemobile.de

Gunther

Bevor ich zu den inhaltlichen Fragen komme, habe ich eine Frage an Euch bzgl. der Installation:

Auf welcher Hardware habt Ihr 20_VBUS.pm installiert? Und wie?

Bei mir klappt das auf Fritzbox 7390 leider nicht. Was mache ich:
20_VBUS.pm und vbus.gplot in den Ordner /fhem/FHEM schieben.
Fritzbox neu starten.

Danach ist schon Ende. Ich bekomme keinen Zugriff mehr auf FHEM bis ich die Dateien wieder lösche und neu durchstarte.

Über Tipps freue ich mich sehr.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

sweetie-pie

Zitat von: Gunther schrieb am Sa, 02 Februar 2013 14:36Auf welcher Hardware habt Ihr 20_VBUS.pm installiert? Und wie?

Linux zeus 2.6.32-45-generic #101-Ubuntu SMP Mon Dec 3 15:41:13 UTC 2012 i686 GNU/Linux

Auf einem Atom-Board...

Gruß
 Holger

Gunther

Danke.

Ich bin ja mal gespannt ob es schon jemand hier hinbekommen hat das Modul auf der Fritzbox zum Laufen zu bekommen. Vielleicht ist die zu schwach auf der Brust... ???
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

sweetie-pie

Hallo,

ich habe die Grundlage von Arno mal genommen und etwas angepasst.
Das ist zwar noch nicht fertig, aber es läuft zunächst mal.

Was habe ich geändert?
- Das Gerät ist jetzt eine COSMO-Multi
- Userreadings implementiert
- Temperaturen können auch negativ werden
- Non-Blocking mit Blocking.pm von Rudi

Mag es jemanden nützlich sein, später kommt vielleicht mal mehr...

Gruß
 Holger


Gunther

Zitat von: sweetie-pie schrieb am Mo, 11 Februar 2013 12:49Hallo,

ich habe die Grundlage von Arno mal genommen und etwas angepasst.
Das ist zwar noch nicht fertig, aber es läuft zunächst mal.

Was habe ich geändert?
- Das Gerät ist jetzt eine COSMO-Multi
- Userreadings implementiert
- Temperaturen können auch negativ werden
- Non-Blocking mit Blocking.pm von Rudi

Mag es jemanden nützlich sein, später kommt vielleicht mal mehr...

Gruß
 Holger


Danke für Deine Arbeit, auch wenn ich inhaltlich mit den beiden folgenden Punkten nichts anfangen kann:
- Userreadings implementiert
- Non-Blocking mit Blocking.pm von Rudi

Kannst Du das bitte kurz erläutern?
Vermutlich wird das meine Problematik mit der Fritzbox nicht lösen, richtig?
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

sweetie-pie


sweetie-pie

Zitat von: Gunther schrieb am Mo, 11 Februar 2013 13:15Danke für Deine Arbeit, auch wenn ich inhaltlich mit den beiden folgenden Punkten nichts anfangen kann:
- Userreadings implementiert
- Non-Blocking mit Blocking.pm von Rudi

Kannst Du das bitte kurz erläutern?
Userreadings: Damit kannst Du die Ausgabe der Werte (was, wie, Format usw.) selber stimmen.

Non-Blocking, aus dem Wiki: Multiprocessing
Beim Multiprocessing wird der fhem-Prozess geforkt, wenn ein Reading vom Geraet eingelesen werden soll.
Der Vaterprozess wird sofort fortgesetzt und erledigt weitere Aufgaben.
Der Kindprozess holt die Readings vom Geraet, liefert sie an den Vaterprozess und verendet.

Das soll das "Hängen" beim Polling verhindern...

Zitat von: Gunther schrieb am Mo, 11 Februar 2013 13:15Vermutlich wird das meine Problematik mit der Fritzbox nicht lösen, richtig?
Nein, da musst du selber debuggen. Ohne jegliche Programmiererfahrung oder Linuxkenntnisse wird es schwer...

Gunther

Danke für die Erläuterungen!

Zitat von: sweetie-pie schrieb am Mo, 11 Februar 2013 13:41Nein, da musst du selber debuggen. Ohne jegliche Programmiererfahrung oder Linuxkenntnisse wird es schwer...

Außer ein wenig ABAP Debugging bin ich da gänzlich ohne Vorahnung. Habe neulich mal ein wenig nach guten Anfängertutorials in Perl gesucht. Vermutlich scheitert das wie immer an der Zeit...
Vielleicht findet sich hier ja noch ein FB-Nutzer, der auch sein VBUS-LAN-Adapter einbinden möchte und mal drüberschaut.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden