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

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

Vorheriges Thema - Nächstes Thema

AutomatisierEtwas

Hallo zusammen,

wer wie ich versucht die Beschattung im AutoShutterControl (ASC)-Moduls richt einzustellen und ggf. wie ich noch Anfänger bei FHEM ist, kann ggf. folgende extra Reading Definitionen für die richtige Einstellung der Shading-Funktion im jeweiligen Rolladen nutzen, deshalb als CodeShnippsel anbei.

Ziel: Relevante Beschattungsparameter + damit notwendige Bedinungen, die für eine Beschattung erfüllt sein müssen als Readings dem jeweiligen Rolladendevice <Shutter Device> zur Informatio hinzfügen. Es wird dadurch keine zusätzliche Funktion dem Modul / Rolladen hinzugefügt.
Alle Devices in den dreieckigen Klammern (<>) müssen durch eure eigenen systemspezifischen Devices und Readingnamen ersetzt werden.


myBrightness {ReadingsNum("<BrightnessSensorDevice>","<brightness reading>",0)},
myBrightnessForShadingMin {if(AttrVal("<Shutter Device>", "ASC_Shading_StateChange_SunnyCloudy","")=~qr/(.*):(.*)/p){$1}},
myTemperatureExtern {ReadingsNum("<TempSensorDevice>","temperature",0)},
myTemperatureExternForShadingMin {AttrVal("<Shutter Device>", "ASC_Shading_Min_OutsideTemperature","")},
mySunAzimuth {ReadingsNum("<TwilightDevice>","SunAz",0)},
mySunAzimuthLeft {if(AttrVal("<Shutter Device>", "ASC_Shading_InOutAzimuth","")=~qr/(.*):(.*):(.*)/p){$1}},
mySunAzimuthRight {if(AttrVal("<Shutter Device>", "ASC_Shading_InOutAzimuth","")=~qr/(.*):(.*):(.*)/p){$2}},
mySunElevation {ReadingsNum("<TwiligthDevice>","SunAlt",0)},
mySunElevationForShadingMin {if(AttrVal("<Shutter Device>", "ASC_Shading_MinMax_Elevation","")=~qr/(.*):(.*)/p){$1}},
mySunElevationForShadingMax {if(AttrVal("<Shutter Device>", "ASC_Shading_MinMax_Elevation","")=~qr/(.*):(.*)/p){$2}},

myShadingPASS_GreaterBrightnessMin {if (ReadingsNum("<Shutter Device>","myBrightness",0) > ReadingsNum("<Shutter Device>","myBrightnessForShadingMin",0)) {"True"} else {"False"}},
myShadingPASS_GreaterSunAzimuthLeft {if (ReadingsNum("<Shutter Device>","mySunAzimuth",0) > ReadingsNum("<Shutter Device>","mySunAzimuthLeft",0)) {"True"} else {"False"}},
myShadingPASS_LowerSunAzimuthRight {if (ReadingsNum("<Shutter Device>","mySunAzimuth",0) < ReadingsNum("<Shutter Device>","mySunAzimuthRight",0)) {"True"} else {"False"}},
myShadingPASS_GreaterSunElevationMin {if (ReadingsNum("<Shutter Device>","mySunElevation",0) > ReadingsNum("<Shutter Device>","mySunElevationForShadingMin",0)) {"True"} else {"False"}},
myShadingPASS_LowerSunElevationMax {if (ReadingsNum("<Shutter Device>","mySunElevation",0) < ReadingsNum("<Shutter Device>","mySunElevationForShadingMax",0)) {"True"} else {"False"}},
myShadingPASS_GreaterTemperatureExternMin {if (ReadingsNum("<Shutter Device>","myTemperatureExtern",0) > ReadingsNum("<Shutter Device>","myTemperatureExternForShadingMin",0)) {"True"} else {"False"}}


Zur Information:
Der Sonnensensor <BrightnessSensorDevice> muss mindestens 2 Messwerte liefern, bevor das ASC-Modul in die Beschattungsposition fährt! Beim (zeitlich gesehen) ersten Messwert wird der Zustand in-reserved eingenommen und erst beim zweiten Messwert dann der Zustand in shading eingenommen. Die Anzahl der Messwerte ich abhängig vom "moving average window", der mit dem dritten Parameter des Attributs ASC_Shading_StateChange_SunnyCloudy konfiguriert wird.

xerion

Hallo und danke für deinen Code Schnipsel.
Habe den versucht bei mir einzubauen. Musste die readings vom Twilight Device und die regex von "ASC_Shading_InOutAzimuth","")=~qr/(.*):(.*):(.*)/p){$1}}, anpassen. Du hattest auf drei Werte geschaut aber bei Azimuth gibt es auch nur zwei Werte. Danach funktionierte alles.
Habe mir basierend auf diese Readings dann einen readinsgroup gesetzt und kann nun anhand eines Ampelsystem sehen ob die Werte erfüllt sind.





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

Poste doch bitte einmal den Code für Dein Ampelsystem, oder besser noch schreibe es als Beispiel ins Wiki. Ich denke das ist auch für andere Interessant.
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

Beta-User

Frage: Was ist eine extra Reading Definition?
Gemeint sind userReadings, nehme ich an?

Dann wäre m.E. ergänzend folgendes sinnvoll:
1. je einen trigger dazu (z.B. allg. pct/dim);
2a. $name statt fester Werte, wo möglich;
2b. Eventuell kann man auch den Twilight-Device-Namen usw. indirekt über eine Attributauswertung - ausgehend von $name - hinbekommen? (Ggf. muß man für den default dann nochmal eine Funktion einfügen, die dann auf das allg. ASC-Device verweist, wenn es eine Logik "lokal nicht vorhanden? => nimm den Wert aus dem ASC-Gerät" gibt.

So ganz klar ist mir noch nicht, ob man nicht mit dem readingsGroup-Vorschlag (mit der getter-Funktion) von Cooltux neulich nicht eine "bessere Basis" hätte, wenn dann irgendwann auch die setter kommen?
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: CoolTux am 21 April 2020, 11:50:14
Poste doch bitte einmal den Code für Dein Ampelsystem, oder besser noch schreibe es als Beispiel ins Wiki. Ich denke das ist auch für andere Interessant.
Du wirst lachen genau das hatte ich vor wollte nur die Reaktion abwarten. Wenn das hilfreich ist baue ich das ins Wiki ein.

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, 12:14:02
Du wirst lachen genau das hatte ich vor wollte nur die Reaktion abwarten. Wenn das hilfreich ist baue ich das ins Wiki ein.

Gesendet von meinem JSN-L21 mit Tapatalk

Super vielen lieben Dank. Ich denke schon das es sehr hilfreich ist. Nimmst Du zum auslesen der Werte aber bitte die ASC API.. Ist denke ich besser wie die Regex Methode von "AutomatisierEtwas"
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: Beta-User am 21 April 2020, 12:11:24
Frage: Was ist eine extra Reading Definition?
Gemeint sind userReadings, nehme ich an?

Dann wäre m.E. ergänzend folgendes sinnvoll:
1. je einen trigger dazu (z.B. allg. pct/dim);
2a. $name statt fester Werte, wo möglich;
2b. Eventuell kann man auch den Twilight-Device-Namen usw. indirekt über eine Attributauswertung - ausgehend von $name - hinbekommen? (Ggf. muß man für den default dann nochmal eine Funktion einfügen, die dann auf das allg. ASC-Device verweist, wenn es eine Logik "lokal nicht vorhanden? => nimm den Wert aus dem ASC-Gerät" gibt.

So ganz klar ist mir noch nicht, ob man nicht mit dem readingsGroup-Vorschlag (mit der getter-Funktion) von Cooltux neulich nicht eine "bessere Basis" hätte, wenn dann irgendwann auch die setter kommen?
Ja der User hatte es als Userreading kreiert ich musste anfangs auch überlegen.
[emoji848]
Ich bin leider kein Programmierer und versuche mir sehr pragmatisch zu helfen. Wenn du mir das erklären kannst wie man sich die Daten von dem Twilight Device usw. automatisch holen kann, dann kann ich ja Mal was versuchen und kann meinen Horizont erweitern.

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

Zitat von: CoolTux am 21 April 2020, 12:18:15
Super vielen lieben Dank. Ich denke schon das es sehr hilfreich ist. Nimmst Du zum auslesen der Werte aber bitte die ASC API.. Ist denke ich besser wie die Regex Methode von "AutomatisierEtwas"
Wenn du mir das als nicht Programmierer erklären kannst wie man das per ASC API macht versuche ich das gerne.

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

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

CoolTux

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

Beta-User

(zu spät...)

Zitat von: xerion am 21 April 2020, 12:19:33
Wenn du mir das als nicht Programmierer erklären kannst wie man das per ASC API macht versuche ich das gerne.
Das hier dürfte als Beisliel ggf helfen: https://forum.fhem.de/index.php/topic,110263.msg1044471.html#msg1044471

Zitat von: xerion am 21 April 2020, 12:18:28
Wenn du mir das erklären kannst wie man sich die Daten von dem Twilight Device usw. automatisch holen kann, dann kann ich ja Mal was versuchen und kann meinen Horizont erweitern.
Hmm, vermutlich wird das zu viel Aufwand, lohnt vermutlich eher weniger, man kann diese Angabe ja via search+replace recht einfach ersetzen (sofern erforderlich). Für die readingsGroup müßte "TYPE=AutoShuttersControl" reichen, dass man das eine Device erwischt (weiß aber noch nicht genau, wie am besten einbauen).
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: CoolTux am 21 April 2020, 12:39:38
tada

https://forum.fhem.de/index.php/topic,110263.msg1044471.html#msg1044471

Perfekt. Danke. Ich werde das mal versuchen als Grundlage zu nehmen um die userReadings zu ersetzen worauf meine readingsGroup mit Ampelsystem zurückreift. Wenn ich was vorzeigbares haben melde ich mich wieder und wenn es okay ergänze ich das dann im Wiki und würde die alten entfernen das es doch immer zur Verwirrung führt, da diese so nicht mehr funktionieren.
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

Vielen Dank für die Mühe.

Ich werde die Tage die Setter vorbereiten dann kann man auch die Werte ändern.
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: xerion am 21 April 2020, 12:49:07
Perfekt. Danke. Ich werde das mal versuchen als Grundlage zu nehmen um die userReadings zu ersetzen worauf meine readingsGroup mit Ampelsystem zurückreift. Wenn ich was vorzeigbares haben melde ich mich wieder und wenn es okay ergänze ich das dann im Wiki und würde die alten entfernen das es doch immer zur Verwirrung führt, da diese so nicht mehr funktionieren.

Hast du eine aktuelle Liste von dem ungesetzten Getters, denn in der commandref stehen scheinbar nicht alle drin, in deinem Beispiel vom dem Link sind ja schon die Werte Links/Rechts und Min/Max von Azimut bzw Elevation einzeln abrufbar.
Hast du zufällig auch schon ein Getter für den Brightness Sensor, vom device und vom ASC Modul?
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, 13:55:05
Hast du eine aktuelle Liste von dem ungesetzten Getters, denn in der commandref stehen scheinbar nicht alle drin, in deinem Beispiel vom dem Link sind ja schon die Werte Links/Rechts und Min/Max von Azimut bzw Elevation einzeln abrufbar.
Hast du zufällig auch schon ein Getter für den Brightness Sensor, vom device und vom ASC Modul?

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.
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