Hallo zusammen,
weil ich glaube, dass es im großen ASC-Thread untergegangen ist, nochmal als eigenen Thread.
Ich bräuchte mal einen Denkanstoß.
ASC ist eingerichtet und versieht, inklusive Abschattung, seit über einem Jahr seinen Dienst. Soweit, so gut.
Jetzt habe ich aber in zwei Zimmern die Situation, dass ich dort auch außerhalb der normalen Abschattung verdunkeln muss, nämlich wenn die reine Sonneneinstrahlung so groß ist, dass ich ansonsten auf Fernseher und Monitor nichts mehr sehen kann. Das kann ich natürlich manuell machen (oder automatisch sobald PC oder Fernseher eingeschaltet wurden).
Mir geht es aber um das Ende dieser manuellen Verdunkelung. Es macht für mich wenig Sinn, wenn das Rollo wieder hochfährt, weil der PC ausgeschaltet wurde, und nach Ende der Wartezeit für die manuelle Fahrt wieder in die automatisierte Abschattung geht.
Kann ich das verdunkelte Rollo direkt wieder an ASC übergeben, welches dann prüft ob nicht abgeschattet werden muss und dem Fall dann die komplette Steuerung übernimmt?
Bin offen für Ideen.
Da ich übrigens für die Verdunklung mehrere Faktoren prüfen muss (Sonnenstand, Helligkeit, ...), wird das Roll per DOIF (statt ASC_ExternalTrigger) verdunkelt, falls das irgendwie relevant ist.
Das müsstest Du dann wenn auch über das DOIF lösen.
Zum Abfragen von Zuständen von ASC kannst Du entsprechend die API verwenden.
{ ascAPIget('IfInShading','RolloWohnzimmer_F3') }
liefert Dir eine 1=wahr oder eine 0=unwahr zurück. Damit weißt Du ob das Rollo generell in der Beschattung ist. Nicht durch den Rollostand sondern alleine ob dafür alle Kriterien erfüllt sind. So kannst Du dann entscheiden ob das Rollo wieder hoch gefahren kann oder noch unten in der Beschattungsposition verbleiben soll.
Ok, soweit verstanden.
Wenn nun aber IfInShading ein true zurückliefert, wie kann ich dann ASC erklären, dass es das Fenster wieder in die Automatik nehmen soll?
Ansonsten müsste ich ja selber regelmäßig überprüfen, ob IfInShading noch gegeben ist oder das Rollo wieder hoch kann.
Zitat von: kjmEjfu am 06 April 2020, 10:44:59
Ok, soweit verstanden.
Wenn nun aber IfInShading ein true zurückliefert, wie kann ich dann ASC erklären, dass es das Fenster wieder in die Automatik nehmen soll?
Ansonsten müsste ich ja selber regelmäßig überprüfen, ob IfInShading noch gegeben ist oder das Rollo wieder hoch kann.
Sobald Du das Rollo über das DOIF in die ASC_ShadingPos gefahren hast und die BlockingAfterManual Zeit vorbei ist wird das Rollo wieder hoch fahren wenn shading out ist.
und ansonsten, wenn BlockingAfterManual vorbei aber die Bedingungen für Abschattung noch aktiv sind, einfach im shading in bleiben?
Das wäre ja praktisch.
Dann würde ich für die "manuelle" Verdunkelung einfach ASC_ShadingPos +5 nehmen und habe es sauber getrennt.
Cooooooooool
Zitat von: kjmEjfu am 06 April 2020, 12:24:11
und ansonsten, wenn BlockingAfterManual vorbei aber die Bedingungen für Abschattung noch aktiv sind, einfach im shading in bleiben?
Das wäre ja praktisch.
Dann würde ich für die "manuelle" Verdunkelung einfach ASC_ShadingPos +5 nehmen und habe es sauber getrennt.
Cooooooooool
Genau. Dann einfach in der ShadingPos bleiben oder besser dann halt erst rein fahren.
Wobei ich gerade feststelle, dass man trotzdem noch einiges im DOIF nachbauen muss. Gerade um zu schauen, ob Abschattung gerade überhaupt sinnvoll ist (Sonnenwinkel und -stand).
Cooler wäre, ich könnte sowas basteln:
DOIF
(
[Computer1:state] eq "present"
and [HM_Sonne_Aussen_HWR:control] > 45000
)
(set ASC manuellesAbschatten HM_Rollo_OG_Zimmer_Sued on)
DOELSE
(
(set ASC manuellesAbschatten HM_Rollo_OG_Zimmer_Sued off)
)
und ASC würde dann, sobald (und solange) ASC_Shading_InOutAzimuth und ASC_Shading_MinMax_Elevation erfüllt sind, das entsprechende Rollo in der Abschattung halten.
ASC_Shading_Min_OutsideTemperature und ASC_Shading_StateChange_SunnyCloudy werden ignoriert, da ein manuelles Auslösen der Abschattung wahrscheinlich unabhängig von Temperatur und Brightness erfolgen.
Wird manuellesAbschatten wieder deaktiviert, bleibt die Abschattung aktiv, wenn die normalen Bedigungen erfüllt sind.
Baut man nämlich die ganzen Abfragen in das DOIF rein, dann wird das schon wieder kompliziert, weil man z.B. ASC_Shading_InOutAzimuth zerlegen muss usw.
Zitat von: kjmEjfu am 06 April 2020, 19:32:25
Wobei ich gerade feststelle, dass man trotzdem noch einiges im DOIF nachbauen muss. Gerade um zu schauen, ob Abschattung gerade überhaupt sinnvoll ist (Sonnenwinkel und -stand).
Cooler wäre, ich könnte sowas basteln:
DOIF
(
[Computer1:state] eq "present"
and [HM_Sonne_Aussen_HWR:control] > 45000
)
(set ASC manuellesAbschatten HM_Rollo_OG_Zimmer_Sued on)
DOELSE
(
(set ASC manuellesAbschatten HM_Rollo_OG_Zimmer_Sued off)
)
und ASC würde dann, sobald (und solange) ASC_Shading_InOutAzimuth und ASC_Shading_MinMax_Elevation erfüllt sind, das entsprechende Rollo in der Abschattung halten.
ASC_Shading_Min_OutsideTemperature und ASC_Shading_StateChange_SunnyCloudy werden ignoriert, da ein manuelles Auslösen der Abschattung wahrscheinlich unabhängig von Temperatur und Brightness erfolgen.
Wird manuellesAbschatten wieder deaktiviert, bleibt die Abschattung aktiv, wenn die normalen Bedigungen erfüllt sind.
Baut man nämlich die ganzen Abfragen in das DOIF rein, dann wird das schon wieder kompliziert, weil man z.B. ASC_Shading_InOutAzimuth zerlegen muss usw.
Meinst Du das jetzt bezogen auf Deine Anforderung oder generell ob ASC Beschattung für das Rollo erkannt hat?
Zitat von: CoolTux am 06 April 2020, 19:37:20
Meinst Du das jetzt bezogen auf Deine Anforderung oder generell ob ASC Beschattung für das Rollo erkannt hat?
Bin mir nicht sicher, ob ich deine Frage richtig verstehe.
Aber ich könnte mir vorstellen, dass es mehrere Fälle gibt, in denen man gerne die Vorgaben für die Beschattung "überschreiben" möchte.
In dem Fall wäre es praktisch, wenn man einen Setter aufrufen könnte, der dann zwar berücksichtigt, dass die Beschattung grundsätzlich in sinnvollem Rahmen erfolgt (also Sonnenwinkel und -höhe müssten natürlich geprüft werden), aber Temperatur und Helligkeit ignoriert werden (oder temporäre Werte optional übergeben werden können).
Und meinen Fall mit im Fernseher/Monitor reflektierende Sonne ist sicherlich gar nicht so speziell. Tritt gerade bei der jetzt (und im Winter) eher tiefstehenden Sonne stärker auf als im Sommer. So dass man da praktisch mit dem "manuell"-Modus temporär was anpassen kann (weil z.B. die Temperatur dafür unwichtig ist).
Klar kann man auch stattdessen einfach per notify/DOIF die Attribute anpassen, aber dann hat man wieder das rote Fragezeichen.
Hallo Marko,
Hallo kjmEjfu,
falls Du Dich an meine Problematik mit der Markise und allgemein an meine Probleme beim Einrichten der Beschattungsfunktion erinnern kannst (womit ich ganz sicher nicht allein bin), würde ich mich hier gern mit einhängen und meine Wünsche äußern wollen. Klar ein "NEIN" ist natürlich auch eine mögliche Antwort, aber vielleicht kann ich ja auch zur Entwicklung etwas beitragen und kann etwas mithelfen. Sicherlich geht es nicht nur mir so, dass man gern auch mal aktiv werden möchte anstatt Dank Dir und mit Dir zusammen 200 Seiten lange Beiträge zu bauen und vor allem dass eine Frage nicht nach wenigen Stunden / Tagen 10 Seiten weiter zu finden ist und von niemandem mehr wiedergefunden wird.
1. Eine "Setter" für die manuelle Beschattungspoisition
Ähnlich wie { ascAPIget('IfInShading','RolloWohnzimmer_F3') } wäre eine Idee dass man z.B. mit { ascAPIset('InShading','DEVICE','TOTZEIT') } die Shading Bedingungen überschreibt und in die ShadingPosition fährt. Erst NACH Ablauf der TOTZEIT beachtet das ASC erst wieder die eingestellten Werte und fährt dann erst wieder im Automatismus. Der Vorteil wäre, dass das für Bastler wäre, die selbst noch Eingriff in ein sonst nettes System haben wollen und Anfänger nicht wieder mit neuen Einstellungen / Attributen voll gekleistert werden.
2. Ein "getter" für die Shading Bedingungen. Beispiel (https://forum.fhem.de/index.php/topic,105390.msg1039517.html#msg1039517)
Ich finde das Originalposting nicht mehr (da ist das Problem mit vielen Seiten), in dem jemand sein ASC erweitert hat, dass die Bedingungen schön untereinander aufgereiht wurden.
Ähnlich dem o.g. Beispiel auf einen blick einen Befehl zu haben mit dem man z.b. mit { ascAPIget('checkSHADINGvars','RolloWohnzimmer_F3') } alle für die Beschattung notwendigen Variablen auf einen Blick untereinander ausgegeben bekommt. Ich bin ziemlich sicher, damit lassen sich 95 % der (Anfänger) Fehler vermeiden. Wenn ich sehe, dass das Modul Brightness >2000 erwartet er aber -1 bekommt, stimmt was mit meinen Readings oder sonst was nicht und ich kann erstmal selbst gucken.
Das Gleiche kann ich tun, wenn das Device aus der Beschattung gefahren ist wo ich mir nicht erklären kann, warum.
3. Ich hatte noch einen dritten ... aber jopp ich werd alt ... fällt mir (momentan) nicht mehr ein ... kommt aber bestimmt :)
Ansonsten bleiben ich dabei. Insg. ein mega geiles und hilfreiches Modul, mit einigen wenigen Kinderkrankheiten / Wünschen die noch offen sind. Und da liegt es an allen, dabei ein wenig mit zu helfen ;)
Danke für Deine Arbeit daran....
Viele Grüße
Andreas
Hallo Andreas,
Zitat von: flummy1978 am 12 April 2020, 21:41:23
Hallo Marko,
Hallo kjmEjfu,
falls Du Dich an meine Problematik mit der Markise und allgemein an meine Probleme beim Einrichten der Beschattungsfunktion erinnern kannst (womit ich ganz sicher nicht allein bin), würde ich mich hier gern mit einhängen und meine Wünsche äußern wollen. Klar ein "NEIN" ist natürlich auch eine mögliche Antwort, aber vielleicht kann ich ja auch zur Entwicklung etwas beitragen und kann etwas mithelfen. Sicherlich geht es nicht nur mir so, dass man gern auch mal aktiv werden möchte anstatt Dank Dir und mit Dir zusammen 200 Seiten lange Beiträge zu bauen und vor allem dass eine Frage nicht nach wenigen Stunden / Tagen 10 Seiten weiter zu finden ist und von niemandem mehr wiedergefunden wird.
1. Eine "Setter" für die manuelle Beschattungspoisition
Ähnlich wie { ascAPIget('IfInShading','RolloWohnzimmer_F3') } wäre eine Idee dass man z.B. mit { ascAPIset('InShading','DEVICE','TOTZEIT') } die Shading Bedingungen überschreibt und in die ShadingPosition fährt. Erst NACH Ablauf der TOTZEIT beachtet das ASC erst wieder die eingestellten Werte und fährt dann erst wieder im Automatismus. Der Vorteil wäre, dass das für Bastler wäre, die selbst noch Eingriff in ein sonst nettes System haben wollen und Anfänger nicht wieder mit neuen Einstellungen / Attributen voll gekleistert werden.
Das muss ich mir mal anschauen. Prinzipiell wäre es möglich.
Zitat von: flummy1978 am 12 April 2020, 21:41:23
2. Ein "getter" für die Shading Bedingungen. Beispiel (https://forum.fhem.de/index.php/topic,105390.msg1039517.html#msg1039517)
Ich finde das Originalposting nicht mehr (da ist das Problem mit vielen Seiten), in dem jemand sein ASC erweitert hat, dass die Bedingungen schön untereinander aufgereiht wurden.
Ähnlich dem o.g. Beispiel auf einen blick einen Befehl zu haben mit dem man z.b. mit { ascAPIget('checkSHADINGvars','RolloWohnzimmer_F3') } alle für die Beschattung notwendigen Variablen auf einen Blick untereinander ausgegeben bekommt. Ich bin ziemlich sicher, damit lassen sich 95 % der (Anfänger) Fehler vermeiden. Wenn ich sehe, dass das Modul Brightness >2000 erwartet er aber -1 bekommt, stimmt was mit meinen Readings oder sonst was nicht und ich kann erstmal selbst gucken.
Das Gleiche kann ich tun, wenn das Device aus der Beschattung gefahren ist wo ich mir nicht erklären kann, warum.
Eigentlich ist das bereits gegeben wenn man debug auf 1 setzt, dann sieht man sehr schön welche Beschattungsbedingungen da gegeben sind und welche erfüllt.
Aktuell muss ich aufpassen das das Modul nicht überfrachtet und am Ende sich alles Gegenseitig bllockiert. Das mit dem Setter hate ich früher auch mal erwogen. Ich schaue es mir mal an.
Ansonsten kann ich immer wieder nur sagen wer gerne Code beisteuern möchte kann dies sehr gerne tun. Bitte wenn kleine Patche. Nicht mehr wie 50 Zeilen auf einmal.
Grüße
Hallo,
hat sich da was getan?
Ich komme mit meinen entsprechenden Versuchen nicht weiter.
Wie macht ihr das nun?
lg, Gerhard
Was genau willst du denn machen?
Meine Frau fährt gerne mal die Rollos hoch und runter, während sie in der Beschattung waren.
Da wäre es gut, wenn dann irgendwann mal wieder die Automatik übernehmen würde.
Ausserdem würde ich gerne bei Beschattung auf Pos z.B. 92 fahren, wenn jemand Zuhause ist.
Wenn niemand Zuhause ist oder alle das Haus verlassen, soll auf z.B. 190 gefahren werden.
Das ginge prinzipiell, aber wenn jemand nach Hause kommt, dann soll natürlich gleich auf wieder 92 gefahren werden.
Sonst ist es zu lange finster, wenn man das Haus betritt.
lg, Gerhard
Zitat von: gestein am 02 Juli 2020, 14:39:14
Ausserdem würde ich gerne bei Beschattung auf Pos z.B. 92 fahren, wenn jemand Zuhause ist.
Wenn niemand Zuhause ist oder alle das Haus verlassen, soll auf z.B. 190 gefahren werden.
Das ginge prinzipiell, aber wenn jemand nach Hause kommt, dann soll natürlich gleich auf wieder 92 gefahren werden.
das müsste doch schon gehen:
ASC_Shading_Pos - Position des Rollladens für die Beschattung (Default: ist abhängig vom AttributASC 80/20) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
wenn du also den Status (jemand zuhause/keiner da) schon in FHEM hinterlegt hast, kannst du ihn an der Stelle auslesen und entsprechend 92 oder 190 zurückliefern.
@gstein:
Du kannst in ASC_Shading_Pos auch Perl-Code verwenden.
Ich verwende z.B.
{ (ReadingsVal('TEMPSENSOR','state',0) >= 27 ? 5 : 20) }
um in Abhängigkeit der Außentemperatur die Rollläden in verschieden Positionen für die Beschattung zu fahren.
Du kannst dort ja z.B. ein bei einem Residents-Device den Status abfragen und in Abhängigkeit davon deine Positionen anfahren.
Gruß
eurofinder
Zitat von: gestein am 02 Juli 2020, 14:39:14
Meine Frau fährt gerne mal die Rollos hoch und runter, während sie in der Beschattung waren.
Da wäre es gut, wenn dann irgendwann mal wieder die Automatik übernehmen würde.
Ausserdem würde ich gerne bei Beschattung auf Pos z.B. 92 fahren, wenn jemand Zuhause ist.
Wenn niemand Zuhause ist oder alle das Haus verlassen, soll auf z.B. 190 gefahren werden.
Das ginge prinzipiell, aber wenn jemand nach Hause kommt, dann soll natürlich gleich auf wieder 92 gefahren werden.
Sonst ist es zu lange finster, wenn man das Haus betritt.
lg, Gerhard
Das mit der unterschiedlichen Beschattung ist in der Tat schon Möglich und soweit ich das nachverfolgen kann wird auch direkt nach dem nach Hause kommen in die neue Position gefahren. Wenn nicht noch mal melden bitte.
Auch das erste sollte eigentlich funktionieren. Dazu kann man ascAPIset verwenden.
{ ascAPIset('ShadingManualDriveStatus','ROLLONAME',0) }
setzt die Sperre nach einer manullen Fahrt für die Beschattung aus.
Ja, das Runterfahren mache ich auch so.
Aber Rauffahren klappt damit nur verspätet.
Man müsste halt immer warten, bis ASC wieder die Parameter überprüft.
Und das dauert mitunter.
Jedenfalls dauert es zu lange um von meiner Frau akzeptiert zu werden.
Denn dann kommt sie nach Hause und steht vollkommen im Finstern.
Perfekt wäre es, wenn man die Rollos fahren könnte, ohne die Beschattungsautomatik zu deaktivieren.
Oder halt manuell fahren und dann die Automatik wieder einschalten.
Lg, Gerhard
Zitat von: gestein am 02 Juli 2020, 18:30:28
Perfekt wäre es, wenn man die Rollos fahren könnte, ohne die Beschattungsautomatik zu deaktivieren.
Oder halt manuell fahren und dann die Automatik wieder einschalten.
mach doch.
Sobald sie nach Hause kommt, fährst du auf die 92 und rufst gleichzeitig
{ ascAPIset('ShadingManualDriveStatus','ROLLONAME',0) }
auf.
Ins ASC_Shading_Pos packst du den Perl-Befehl, der unterschiedliche Werte in Abhängigkeit davon ausgibt, ob jemand da ist oder nicht.
Das muss ich gleich probieren, wenn ich wieder Zuhause bin.
Ich muss gestehen, dass ich bei den Settern etwas den Überblick verloren habe.
Aber das wäre genial und würde meine Probleme lösen.
Danke!
Lg, Gerhard
Zitat von: gestein am 02 Juli 2020, 22:02:44
Das muss ich gleich probieren, wenn ich wieder Zuhause bin.
Ich muss gestehen, dass ich bei den Settern etwas den Überblick verloren habe.
Aber das wäre genial und würde meine Probleme lösen.
Danke!
Lg, Gerhard
Warte damit bis morgen und mach vorher ein Update. Gab noch ein Problem beim setzen mit Wert 0. Geht jetzt auch wieder.