NEWS
Homematic Ip Urlaubsmodus
-
Hallo,
ich möchte gerne in meiner Vis den Homematic Urlaubsmodus für meine Homematic Thermostate aktivieren. Es soll einen Button geben, bei dessen Auswahl ein Fenster geöffnet wird, wo ich dann das Urlaubsende eingeben kann. Hat jand sowas, oder ähnliches am Laufen und könnte mir helfen. Am liebsten ohne den Heatingcontrol Adapter.
Ich benutze immer den Eco-Modus für jegliche Abwesenheit die länger als XY ist. Die Temperatur der Eco Mode kannst du manuell festlegen.
Ich benutze dafür diese beiden (blau hinterlegten) Datenpunkte vom HmIP Adapter:

Sobald jemand wieder vor Ort ist geht der Eco mode natürlich automatisch wieder aus, alles über ein Skript gelenkt.
Dafür ist natürlich eine funktionierende Anwesenheis-erkennung aller Bewohner notwendig.EDIT:
Was du ansteuern willst sind diese beiden Datenpunkte:

Dort kannst du Dauer in Minuten setzen, oder in dem anderen Datenpunkt kannst du auch die genaue Zeit setzen, bis wann du abwesend bist. Vermutlich muss der Zeit Datenpunkt aber ein ganz genaues Format haben um zu funktionieren.
Vermutlich so : 2022_03_03 09:52
Mit diesem Widget kannst du das umsetzen:



Gerade getestet, funktioniert leider nicht mit dem Datumsformat, wie es das Widget ausgibt, dann musst einen eigenen Datenpunkt ansteuern und ein Skript es umschreiben lassen! Viel Erfolg

-
Ich benutze immer den Eco-Modus für jegliche Abwesenheit die länger als XY ist. Die Temperatur der Eco Mode kannst du manuell festlegen.
Ich benutze dafür diese beiden (blau hinterlegten) Datenpunkte vom HmIP Adapter:

Sobald jemand wieder vor Ort ist geht der Eco mode natürlich automatisch wieder aus, alles über ein Skript gelenkt.
Dafür ist natürlich eine funktionierende Anwesenheis-erkennung aller Bewohner notwendig.EDIT:
Was du ansteuern willst sind diese beiden Datenpunkte:

Dort kannst du Dauer in Minuten setzen, oder in dem anderen Datenpunkt kannst du auch die genaue Zeit setzen, bis wann du abwesend bist. Vermutlich muss der Zeit Datenpunkt aber ein ganz genaues Format haben um zu funktionieren.
Vermutlich so : 2022_03_03 09:52
Mit diesem Widget kannst du das umsetzen:



Gerade getestet, funktioniert leider nicht mit dem Datumsformat, wie es das Widget ausgibt, dann musst einen eigenen Datenpunkt ansteuern und ein Skript es umschreiben lassen! Viel Erfolg

-
Ich benutze immer den Eco-Modus für jegliche Abwesenheit die länger als XY ist. Die Temperatur der Eco Mode kannst du manuell festlegen.
Ich benutze dafür diese beiden (blau hinterlegten) Datenpunkte vom HmIP Adapter:

Sobald jemand wieder vor Ort ist geht der Eco mode natürlich automatisch wieder aus, alles über ein Skript gelenkt.
Dafür ist natürlich eine funktionierende Anwesenheis-erkennung aller Bewohner notwendig.EDIT:
Was du ansteuern willst sind diese beiden Datenpunkte:

Dort kannst du Dauer in Minuten setzen, oder in dem anderen Datenpunkt kannst du auch die genaue Zeit setzen, bis wann du abwesend bist. Vermutlich muss der Zeit Datenpunkt aber ein ganz genaues Format haben um zu funktionieren.
Vermutlich so : 2022_03_03 09:52
Mit diesem Widget kannst du das umsetzen:



Gerade getestet, funktioniert leider nicht mit dem Datumsformat, wie es das Widget ausgibt, dann musst einen eigenen Datenpunkt ansteuern und ein Skript es umschreiben lassen! Viel Erfolg

@cinimod Habe jetzt mal den Urlaubsmodus per App gestartet und die Datenpunkte beobachtet und dann dieses Skript geschrieben,

Aber leider geht es nicht. Wäre auch zu einfach gewesen. Hast du vielleicht noch eine Idee, bzw. kannst du mir dabei helfen es zu realisieren?
Ok, beim Datum müssen die Bindestriche nach unten. Aber wie realisiere ich das?
-
@cinimod Habe jetzt mal den Urlaubsmodus per App gestartet und die Datenpunkte beobachtet und dann dieses Skript geschrieben,

Aber leider geht es nicht. Wäre auch zu einfach gewesen. Hast du vielleicht noch eine Idee, bzw. kannst du mir dabei helfen es zu realisieren?
Ok, beim Datum müssen die Bindestriche nach unten. Aber wie realisiere ich das?
ist es denn notwendig das es auf urlaub steht ? ist doch egal weshalb du nicht da bist.
Ich kann diesen Datenpunkt bei mir nicht manuell verstellen, nehme an das dass bei dir ebenso ist.Hast du denn einen Datenpunkt angelegt wo du VIS Zeit zwischenspeichern kannst ?
-
ist es denn notwendig das es auf urlaub steht ? ist doch egal weshalb du nicht da bist.
Ich kann diesen Datenpunkt bei mir nicht manuell verstellen, nehme an das dass bei dir ebenso ist.Hast du denn einen Datenpunkt angelegt wo du VIS Zeit zwischenspeichern kannst ?
@cinimod Ja, hab ich. Aber irgendwie funktioniert das einfach nicht. Muss nicht zwingend der Urlaubsmodus sein, aber ich dachte es wäre passend.
Wie bereits geschrieben möchte einfach in der Vis die Temperatur aller Heizungthermostate beim Verlassen der Wohnung runter regeln. Und dann bevor ich die Wohnung wieder betrete wieder hoch. Hatte auch kurz dran gedacht es über die Anwesenheit zu lösen, aber es bringt ja nichts wenn die Heizung erst warm wird, wenn ich wieder zuhause bin. -
Ok, verstehe.
Ich habe gerade an dem Skript getüftelt...
die bei mir eingetragene "testzeit" ist natürlich dein selbst erstellter Datenpunkt der vom VIS angesteuert wird, und statt dem debug block am ende musst du den "setAbsenceEndTime" Datenpunkt ansteuern.
bzw.: kannst du zum testen natürlich auch erstmal im Log schauen ob der debug block es richtig raus feuert.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</variable> <variable id="M`%RRN(Bi(wYudM:AWkS">bindestrich</variable> <variable id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</variable> </variables> <block type="on_ext" id="Xz`y3FB40-D7=n+EAo`?" x="-1413" y="-488"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Y)*17-@F^v]E*;akBk3d"> <field name="oid">0_userdata.0.testen.testzeit</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="t{ZVvF|VIk#+05;n0NM9"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> <value name="VALUE"> <block type="get_value" id="X`hj/2LifKmX@:@AsK`7"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.testen.testzeit</field> </block> </value> <next> <block type="variables_set" id="OOq24`CV+7bN7?GDe[CG"> <field name="VAR" id="M`%RRN(Bi(wYudM:AWkS">bindestrich</field> <value name="VALUE"> <block type="text_indexOf" id="b2NRdMkib9mJh7xH02}a"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="*cTFn.jw4j+9.sO-d)85"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="FIND"> <shadow type="text" id="yg`V/H6*(9E^6#z/cOYU"> <field name="TEXT">-</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="rtOabqI89vlI#elGg87l"> <field name="VAR" id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</field> <value name="VALUE"> <block type="text_indexOf" id="2mi^uWV))TMCx`)ih`B`"> <field name="END">LAST</field> <value name="VALUE"> <block type="variables_get" id="cH_r$/Dav`p/A*`R#%zM"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="FIND"> <shadow type="text" id="=e!{a.mDd}w*L!FTS`tm"> <field name="TEXT">-</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="QpR]-]d;VK4Y.St{Ph#X"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> <value name="VALUE"> <block type="text_join" id="7DrE}+K2,WJCs7k,u=Rz"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="F2Ib+;]nynclNV=wi`L{"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="630E[nWV_L.44EQ3q]2*"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="]z+D%*;e!Y](|ib_?^Ij"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="{h)jrX1=4l;{9i;wcBPJ"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="K@2xOa,Mvh3X.UxS*7@]"> <field name="VAR" id="M`%RRN(Bi(wYudM:AWkS">bindestrich</field> </block> </value> <value name="B"> <shadow type="math_number" id="1?qZnq%INa0Pl!1hn`D3"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="=|VcaJ5G.NbnTQH8d9.g"> <field name="TEXT">_</field> </block> </value> <value name="ADD2"> <block type="text_getSubstring" id="o1^;=lX#DEm!^(#S/=m+"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id=":k!6n=T;1v^-e}dm_V8f"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="wip[uu:-9WbOOvZFOg*C"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="uq-08/rnVzGnrls`wOxD"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="EXsWde^7t3UU~hl+(t^s"> <field name="VAR" id="M`%RRN(Bi(wYudM:AWkS">bindestrich</field> </block> </value> <value name="B"> <shadow type="math_number" id="9Wr~x]^^QZ@b-b7,fsof"> <field name="NUM">1</field> </shadow> </value> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="b7E;TN{ewk{]QnABnT2a"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Q2LvhT[Y~y4b5nkcMIB*"> <field name="VAR" id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</field> </block> </value> <value name="B"> <shadow type="math_number" id=")JbIGxxxDO$*nk$Gh#eO"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="text" id="HJ}n~9h:EA3*Lzf;SpMV"> <field name="TEXT">_</field> </block> </value> <value name="ADD4"> <block type="text_getSubstring" id="Uk4JyKR:t;T9a*:~SnX^"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="variables_get" id="PuS.D}Fs/ydO=c7xiF7a"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="KG9n!fZ]~7bv4XvUuTbe"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="@W2o[p9(uOgp4E3YL2R."> <field name="NUM">1</field> </shadow> <block type="variables_get" id="{OET_R4*lpcI(:DD@ke`"> <field name="VAR" id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</field> </block> </value> <value name="B"> <shadow type="math_number" id=",Ig3P}encW(L3PrMA$eG"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="tsjjGM0Z~D,0=1|KA2.q"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id=".N{NiOc,OxMcsgvN_yi|"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id=")]7H(fM[+hMoqF6DiS**"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>Du musst natürlich noch deine Eco Mode Temperatur in der App festlegen wenn du das noch nicht gemacht hast.
-
Ok, verstehe.
Ich habe gerade an dem Skript getüftelt...
die bei mir eingetragene "testzeit" ist natürlich dein selbst erstellter Datenpunkt der vom VIS angesteuert wird, und statt dem debug block am ende musst du den "setAbsenceEndTime" Datenpunkt ansteuern.
bzw.: kannst du zum testen natürlich auch erstmal im Log schauen ob der debug block es richtig raus feuert.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</variable> <variable id="M`%RRN(Bi(wYudM:AWkS">bindestrich</variable> <variable id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</variable> </variables> <block type="on_ext" id="Xz`y3FB40-D7=n+EAo`?" x="-1413" y="-488"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Y)*17-@F^v]E*;akBk3d"> <field name="oid">0_userdata.0.testen.testzeit</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="t{ZVvF|VIk#+05;n0NM9"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> <value name="VALUE"> <block type="get_value" id="X`hj/2LifKmX@:@AsK`7"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.testen.testzeit</field> </block> </value> <next> <block type="variables_set" id="OOq24`CV+7bN7?GDe[CG"> <field name="VAR" id="M`%RRN(Bi(wYudM:AWkS">bindestrich</field> <value name="VALUE"> <block type="text_indexOf" id="b2NRdMkib9mJh7xH02}a"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="*cTFn.jw4j+9.sO-d)85"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="FIND"> <shadow type="text" id="yg`V/H6*(9E^6#z/cOYU"> <field name="TEXT">-</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="rtOabqI89vlI#elGg87l"> <field name="VAR" id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</field> <value name="VALUE"> <block type="text_indexOf" id="2mi^uWV))TMCx`)ih`B`"> <field name="END">LAST</field> <value name="VALUE"> <block type="variables_get" id="cH_r$/Dav`p/A*`R#%zM"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="FIND"> <shadow type="text" id="=e!{a.mDd}w*L!FTS`tm"> <field name="TEXT">-</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="QpR]-]d;VK4Y.St{Ph#X"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> <value name="VALUE"> <block type="text_join" id="7DrE}+K2,WJCs7k,u=Rz"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="F2Ib+;]nynclNV=wi`L{"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="630E[nWV_L.44EQ3q]2*"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="]z+D%*;e!Y](|ib_?^Ij"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="{h)jrX1=4l;{9i;wcBPJ"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="K@2xOa,Mvh3X.UxS*7@]"> <field name="VAR" id="M`%RRN(Bi(wYudM:AWkS">bindestrich</field> </block> </value> <value name="B"> <shadow type="math_number" id="1?qZnq%INa0Pl!1hn`D3"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="=|VcaJ5G.NbnTQH8d9.g"> <field name="TEXT">_</field> </block> </value> <value name="ADD2"> <block type="text_getSubstring" id="o1^;=lX#DEm!^(#S/=m+"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id=":k!6n=T;1v^-e}dm_V8f"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="wip[uu:-9WbOOvZFOg*C"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="uq-08/rnVzGnrls`wOxD"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="EXsWde^7t3UU~hl+(t^s"> <field name="VAR" id="M`%RRN(Bi(wYudM:AWkS">bindestrich</field> </block> </value> <value name="B"> <shadow type="math_number" id="9Wr~x]^^QZ@b-b7,fsof"> <field name="NUM">1</field> </shadow> </value> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="b7E;TN{ewk{]QnABnT2a"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Q2LvhT[Y~y4b5nkcMIB*"> <field name="VAR" id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</field> </block> </value> <value name="B"> <shadow type="math_number" id=")JbIGxxxDO$*nk$Gh#eO"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="text" id="HJ}n~9h:EA3*Lzf;SpMV"> <field name="TEXT">_</field> </block> </value> <value name="ADD4"> <block type="text_getSubstring" id="Uk4JyKR:t;T9a*:~SnX^"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="variables_get" id="PuS.D}Fs/ydO=c7xiF7a"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="KG9n!fZ]~7bv4XvUuTbe"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="@W2o[p9(uOgp4E3YL2R."> <field name="NUM">1</field> </shadow> <block type="variables_get" id="{OET_R4*lpcI(:DD@ke`"> <field name="VAR" id="7LqHF%~X?!{O|NC}%xgN">bindestrich2</field> </block> </value> <value name="B"> <shadow type="math_number" id=",Ig3P}encW(L3PrMA$eG"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="tsjjGM0Z~D,0=1|KA2.q"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id=".N{NiOc,OxMcsgvN_yi|"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id=")]7H(fM[+hMoqF6DiS**"> <field name="VAR" id=":GsdGM[Fi:SjKllRl$Jy">urlaub-ende</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>Du musst natürlich noch deine Eco Mode Temperatur in der App festlegen wenn du das noch nicht gemacht hast.
-
Noch als keinen Hinweis: Dein selbst erstellter Datenpunkt sollte type "string" sein.
-
@cinimod Funktioniert super. Genau so , wie ich es wollte.

Das einzige was jetzt noch cool wäre, wäre wenn man den Inhalt des Widget ändern könnte.

-
@cinimod Genau dass, und vielleicht es möglich das Widget noch etwas anders zu gestalten. Andere Farbe und so?
Was mich noch stört, ist das sich beim auswählen auf meinem Tablet jedes Mal die Tastatur öffnet. Wenn man das noch irgendwo deaktivieren könnte, wäre es perfekt -
@cinimod Genau dass, und vielleicht es möglich das Widget noch etwas anders zu gestalten. Andere Farbe und so?
Was mich noch stört, ist das sich beim auswählen auf meinem Tablet jedes Mal die Tastatur öffnet. Wenn man das noch irgendwo deaktivieren könnte, wäre es perfektIch habe das Skript noch etwas angepasst.
Wenn die Abwesenheit abgelaufen ist, bzw. der Eco Mode beendet wurde verschwindet die Schrift auf der Schaltfläche im VIS.
Leider lässt sich das Widget selbst nicht besonders toll anpassen. Daran kann ich leider nichts ändern, du könntest du könntest im Reiter "View" das "Thema" ändern, aber damit verstellst du natürlich das Thema der ganzen View.
Wenn du aber sonst aber kein Widget hast in der View, was auf die Änderung reagiert, kannst du dir da zumindest ein Thema aussuchen und die Schaltfläche optisch zu verändern.
Hier noch meine Anpassungen:

Für den fall das dir das so nicht gefällt würde ich dir trotzdem dazu raten den Part mit dem Timeout zu übernehmen, da bei jedem bewegen eines der Regler sofort der Wert rausgefeuert wird an den HMIP Datenpunkt, so erst wenn er 3 Sekunden still steht.
Mit dem öffnen der Tastatur hab ich leider keine Lösung für dich.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden