[73_AutoShuttersControl] Extra Readings für Shading im Rolladendevice definieren

Begonnen von AutomatisierEtwas, 19 April 2020, 22:15:57

Vorheriges Thema - Nächstes Thema

xerion

Zitat von: CoolTux am 21 April 2020, 15:18:13
device und ASC Modul gibt es keine Getter.
Relevant für den Brightness Sensor ist ja das Brightness Average.

getBrightnessAverage
über die API als
BrightnessAverage
ab zu rufen.

Eine Vollständige Übersicht habe ich noch nicht.
Ich meinte nicht ein Getter vom Device oder ASC selber sondern vom Brightness sensor der ja im device und/oder im ASC Modul vorhanden sein kann. So wie du es auch für OutTemp umgesetzt hast. Von welchen Sensor wird denn Brightness average per API übertragen?

Gesendet von meinem JSN-L21 mit Tapatalk

Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

CoolTux

Es wird zu erst im shutter geschaut wenn da nichts ist wird der globale im ASC genommen. Kannst also getrost den von mir erwähnten getter nehmen.

Sorry Unsinn geschrieben. Es gibt nur einen Brightness Sensor und der ist im Rollo hinterlegt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

xerion

Zitat von: CoolTux am 21 April 2020, 16:52:46
Es wird zu erst im shutter geschaut wenn da nichts ist wird der globale im ASC genommen. Kannst also getrost den von mir erwähnten getter nehmen.
Perfekt. Verhält sich OutTemp auch schon so oder muss ich das explizit auswählen?

Gesendet von meinem JSN-L21 mit Tapatalk

Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

CoolTux

Zitat von: xerion am 21 April 2020, 16:55:01
Perfekt. Verhält sich OutTemp auch schon so oder muss ich das explizit auswählen?

Gesendet von meinem JSN-L21 mit Tapatalk

Sorry falsch verstanden. Siehe oben. Es gibt ja nur einen Sensor für Brightness im Rollo.

Aber das oben geschriebene gilt für den Tempsensor.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

xerion

Zitat von: CoolTux am 21 April 2020, 17:01:02
Sorry falsch verstanden. Siehe oben. Es gibt ja nur einen Sensor für Brightness im Rollo.

Aber das oben geschriebene gilt für den Tempsensor.
Stimmt jetzt wo du es sagst [emoji16]Sorry für die Verwirrung.

Gesendet von meinem JSN-L21 mit Tapatalk

Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

xerion

So konnte das nun mit den getters und $NAME vereinfachen. Nun muss man einfach den nachfolgenden Code in dem dem gewünschten Device unter attr <ROLLODEVICE> userReadings einfügen. Damit werden dann zusätzlich Readings erzeugt basierend auf den Code aus Beitrag #1.
myBrightness {ascAPIget('BrightnessAverage',$NAME)},
myBrightnessForShadingCloudy {ascAPIget('ShadingStateChangeCloudy',$NAME)},
myBrightnessForShadingSunny {ascAPIget('ShadingStateChangeSunny',$NAME)},
myTemperatureExtern {ascAPIget('OutTemp',$NAME)},
myTemperatureExternForShadingMin {AttrVal("$NAME", "ASC_Shading_Min_OutsideTemperature","")},
mySunAzimuth {ascAPIget('Azimuth')},
mySunAzimuthLeft {ascAPIget('ShadingAzimuthLeft',$NAME)},
mySunAzimuthRight {ascAPIget('ShadingAzimuthRight',$NAME)},
mySunElevation {ascAPIget('Elevation')},
mySunElevationForShadingMin {ascAPIget('ShadingMinElevation',$NAME)},
mySunElevationForShadingMax {ascAPIget('ShadingMaxElevation',$NAME)},
myShadingPASS_GreaterBrightnessSunny {if (ReadingsNum("$NAME","myBrightness",0) > ReadingsNum("$NAME","myBrightnessForShadingSunny",0)) {"True"} else {"False"}},
myShadingPASS_LowerBrightnessCloudy {if (ReadingsNum("$NAME","myBrightness",0) > ReadingsNum("$NAME","myBrightnessForShadingCloudy",0)) {"True"} else {"False"}},
myShadingPASS_GreaterSunAzimuthLeft {if (ReadingsNum("$NAME","mySunAzimuth",0) > ReadingsNum("$NAME","mySunAzimuthLeft",0)) {"True"} else {"False"}},
myShadingPASS_LowerSunAzimuthRight {if (ReadingsNum("$NAME","mySunAzimuth",0) < ReadingsNum("$NAME","mySunAzimuthRight",0)) {"True"} else {"False"}},
myShadingPASS_GreaterSunElevationMin {if (ReadingsNum("$NAME","mySunElevation",0) > ReadingsNum("$NAME","mySunElevationForShadingMin",0)) {"True"} else {"False"}},
myShadingPASS_LowerSunElevationMax {if (ReadingsNum("$NAME","mySunElevation",0) < ReadingsNum("$NAME","mySunElevationForShadingMax",0)) {"True"} else {"False"}},
myShadingPASS_GreaterTemperatureExternMin {if (ReadingsNum("$NAME","myTemperatureExtern",0) > ReadingsNum("$NAME","myTemperatureExternForShadingMin",0)) {"True"} else {"False"}}


Danach erzeugt man nachfolgende readinsgGroup:

defmod ASC_Shading_Info readingsGroup <Gerät>,<IsSunny>,<NotCloudy>,<MinAzi>,<MaxAzi>,<MinEle>,<MaxEle>,<MinTemp> (Rollo|Jalousie)_.*..:myShadingPASS_GreaterBrightnessSunny,myShadingPASS_LowerBrightnessCloudy,myShadingPASS_GreaterSunAzimuthLeft,myShadingPASS_LowerSunAzimuthRight,myShadingPASS_GreaterSunElevationMin,myShadingPASS_LowerSunElevationMax,myShadingPASS_GreaterTemperatureExternMin
attr ASC_Shading_Info room ASC
attr ASC_Shading_Info valueIcon {($VALUE eq 'True')?"ampel_gruen":"ampel_rot"}


Dadurch bekommt man eine Ampel-Übersicht. Damit das Shading für das entsprechende ROLLODEVICE dann greifen kann, müssen alle Ampeln grün sein somit sind dann alle Bedingungen erfüllt. Nach Ablauf von  ASC_Shading_WaitingPeriod wird dann Be-  bzw. Entschattet. Somit kann man dann anhand der roten Ampel erkennen welche Bedingung noch nicht erfüllt ist.
Würde das für den Anfang reichen oder fehlt noch was? Falls ihr euer Okay gibt, würde ich es dann im Wiki veröffentlichen.

Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

Beta-User

An sich sieht das ja erst mal gut aus, aber irgendwie will mir die Frage nicht aus dem Kopf, wann das wie aktualisiert wird...

Erst dachte ich, dass da zumindest noch je ein trigger dazu gehört, damit nicht alles bei jedem update von irgendeinem Reading an dem Rollo-Device aktialisiert wird. Aber bei näherer Betrachtung ist das alles suboptimal, eigentlich müßte alles nur bei Bedarf aktualisiert werden oder direkt in der readingsGroup stattfinden. Letzteres wäre m.E. das eigentliche Ziel, das dürfte aber einiges an Value-Formatierung in der rG erfordern...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

xerion

Zitat von: Beta-User am 22 April 2020, 11:25:47
An sich sieht das ja erst mal gut aus, aber irgendwie will mir die Frage nicht aus dem Kopf, wann das wie aktualisiert wird...

Erst dachte ich, dass da zumindest noch je ein trigger dazu gehört, damit nicht alles bei jedem update von irgendeinem Reading an dem Rollo-Device aktialisiert wird. Aber bei näherer Betrachtung ist das alles suboptimal, eigentlich müßte alles nur bei Bedarf aktualisiert werden oder direkt in der readingsGroup stattfinden. Letzteres wäre m.E. das eigentliche Ziel, das dürfte aber einiges an Value-Formatierung in der rG erfordern...
Also momentan habe ich einen event-on-change-reading im Rollo device gesetzt und dementsprechend passt es bei mir. Ich habe noch nicht ganz verstanden worin aus deiner Sicht der Nachteil an dieser Umsetzung ist kannst du das bitte etwas näher erläutern?

Gesendet von meinem JSN-L21 mit Tapatalk

Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

Beta-User

Wenn es "nur" "on-change"-Events gibt, sind es evtl. zu wenige Aktualisierungen, da ja auf externe Daten zugegriffen wird. Weiter ist es generell nicht optimal, userReadings ohne trigger zu definieren (meine Meinung), denn wenn sich z.B. mein ZWave-Aktor bewegt, werden immer mehrere Readings angefaßt; nun weiß ich nicht, ob das "bulk"-Änderungen sind (_ein_ Trigger), oder single-Readings-updates (_viele Trigger_), tendenziell würde ich eben vermeiden wollen, dass "zu viele" Trigger da sind. Ist einfach ein "schlechtes Beispiel", das man so dann auch nicht ins Wiki packen sollte.

Die ReadingsGroup dagegen "überwacht" "ihre Readings" dagegen selbstständig, und vermutlich auch nur dann, wenn sie in FHEMWEB angezeigt wird (die userReadings laufen immer und unabhängig davon, ob sie benötigt werden).

Nun klarer?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

xerion

Dann habe ich aber noch mal eine Verständnisfrage zu deinem Vorschlag. Wenn ich nun einen Trigger auf pct/dim setze dann würden die Readings doch nur bei einer Fahrt des Rollos aktualisiert oder verstehe ich das falsch?
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

Beta-User

Korrekt. Aber das wäre ggf. zu selten... Man müsste evtl.einen händischen trigger via setreading oä. definieren.
Hatte ja schon geschrieben, dass das nicht so einfach zu lösen ist...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

xerion

Un wenn man den Brightnesssensor triggert dann hätte man tagsüber zwar etwas mehr events aber Abends keine mehr?
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

Beta-User

Jein: der Brightness-Sensor triggert gar nicht innerhalb der userReadings eines anderen (!) Devices (hier: des Rollladens).

Deswegen nochmal: Wir sollten das möglichst innerhalb der readingsGroup-Definition abgefackelt bekommen, alles andere ist suboptimal...
Kann zwar auch sein, dass die getter da erst dann ausgeführt werden, wenn man die Seite refresht, aber das ist m.E. das kleinere Übel.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

xerion

Dann muss ich mich noch etwas weiter einlesen bei den readingsGroup. Bei mir funktioniert es momentan erstmal und meine Infos die ich haben wollte bekomme ich, aber ich versuch mal das zu optimieren.
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

Klaus Heynen

@xerion
bei mir funktioniert die Ampel nicht, die Logikwerte werden unter "userreadings" richtig angezeigt, das shading funktioniert auch; aber kein Gerätename und keine Ampeln nur die Überschriften.
"
ASC_Shading_Info
Gerät IsSunny NotCloudy MinAzi MaxAzi MinEle MaxEle MinTemp
"

defmod ASC_Shading_Info readingsGroup <Gerät>,<IsSunny>,<NotCloudy>,<MinAzi>,<MaxAzi>,<MinEle>,<MaxEle>,<MinTemp> (Rollo|Jalousie)_.*..:myShadingPASS_GreaterBrightnessSunny,myShadingPASS_LowerBrightnessCloudy,myShadingPASS_GreaterSunAzimuthLeft,myShadingPASS_LowerSunAzimuthRight,myShadingPASS_GreaterSunElevationMin,myShadingPASS_LowerSunElevationMax,myShadingPASS_GreaterTemperatureExternMin
attr ASC_Shading_Info room ASC
attr ASC_Shading_Info valueIcon {($VALUE eq 'True')?"ampel_gruen":"ampel_rot"}


Nach langem tricksen mit der Syntax läuft es jetzt:

defmod ASC_Shading_Info readingsGroup <Gerät>,<IsSunny>,<NotCloudy>,<MinAzi>,<MaxAzi>,<MinEle>,<MaxEle>,<MinTemp>
(.*Rollo.*):!?myShadingPASS_GreaterBrightnessSunny,myShadingPASS_LowerBrightnessCloudy,myShadingPASS_GreaterSunAzimuthLeft,myShadingPASS_LowerSunAzimuthRight,myShadingPASS_GreaterSunElevationMin,myShadingPASS_LowerSunElevationMax,myShadingPASS_GreaterTemperatureExternMin