FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Rewe2000 am 19 Februar 2025, 16:25:29

Titel: [ASC] Perlcode in Attribut ASC_Shading_Pos wird teilweise ignoriert
Beitrag von: Rewe2000 am 19 Februar 2025, 16:25:29
Hallo,

ich hänge aktuell noch an einem Punkt in ASC, wo ich noch eure Hilfe benötige.

Ich ändere die Behanghöhe und die Lamellenposition meiner Raffstore mit einer Perlfunktion unter dem Attribut ASC_Shading_Pos, das funktioniert eigentlich soweit ohne Probleme.
Nun fährt aber mein Raffstore, sporadisch die Lamellen während der Beschattung falsch und ich wollte diese auf den korrekten Wert wieder korrigieren. Meine Korrektur kommt auch im Rollodevice an, aber der Raffstore bewegt sich nicht, ich vermute weil sich der Wert von ASC_Shading_Pos ja durch das korrekte setzen nicht mehr vom letzten Wert ändert.

Kurz noch der Ablauf:

Kann ich da im Rollodevice irgendetwas anstoßen, damit der letzte Fahrbefehl nochmals gesendet wird?
Ein Fahrbefehl von außerhalb wird sofort als manuelle Fahrt erkannt und die Beschattungsautomatik wird von ASC sofort beendet.

Aktuell gebe ich im Rollodevice über das Attribut "ASC_Shading_Pos" die Werte für Behang und Lamellenposition für die Beschattung wie folgt über Perl vor:
{
my $Log = AttrNum("OG_RA01_BueroReinhard_3","Logausgabe",5);
my $pctPos = 100;
my $pctSlatPos = 100;
my $SunAltitude = ReadingsNum("Astro","SunAlt",0);
my $Behang_ist = ReadingsNum("OG_RA01_BueroReinhard_3","pct",0);
my $Behang_soll = ascAPIget("ShadingPos","OG_RA01_BueroReinhard_3");
my $Lamellen_ist = ReadingsNum("OG_RA01_BueroReinhard_3","pctSlats",0);
my $Lamellen_soll = ascAPIget("ShadingPositionAssignment","OG_RA01_BueroReinhard_3");
my $Beschattung = ReadingsVal("OG_RA01_BueroReinhard_3","ASC_ShuttersLastDrive","???");
if (ReadingsNum("OG_VG_Sportzimmer","measured-temp",21) <= AttrNum("OG_RA01_BueroReinhard_3","ASC_Shading_start_IndoorTemperature",21)) {
    $pctPos = 100;            ## 100
    $pctSlatPos = 100;        ## 100
    if ($Log >= 5) {
        Log 1, "Device OG_RA01_BueroReinhard_3 - Innentemperatur zu kalt für Beschattung"
    }   
} else {
    if ($SunAltitude > 0 and $SunAltitude < 20) {
        $pctPos = 2;        ## 2
        $pctSlatPos = 25    ## 25
    }
    if ($SunAltitude >= 25 and $SunAltitude < 30) {
        $pctPos = 23;        ## 23
        $pctSlatPos = 23    ## 23
    }
    if ($SunAltitude >= 30 and $SunAltitude < 40) {
        $pctPos = 30;        ## 30
        $pctSlatPos = 29    ## 29
    }
    if ($SunAltitude >= 40 and $SunAltitude < 50) {
        $pctPos = 35;        ## 35
        $pctSlatPos = 32    ## 32
    }
    if ($SunAltitude >= 50 and $SunAltitude < 60) {
        $pctPos = 40;        ## 40
        $pctSlatPos = 35    ## 35
    }
    if ($SunAltitude >= 60 and $SunAltitude < 65) {
        $pctPos = 45;        ## 45
        $pctSlatPos = 37    ## 37
    }
    if ($SunAltitude >= 65) {
        $pctPos = 50;        ## 50
        $pctSlatPos = 40    ## 40
    }
    if ($Log >= 5) {
        Log 2, "Device OG_RA01_BueroReinhard_3 - Altitude = $SunAltitude °, Behang = $pctPos %, Lamellen = $pctSlatPos % nachgeführt"
    }   
}
if ($Beschattung eq "shading in") {
    if ($Behang_ist != $Behang_soll) {
        $pctPos = $Behang_soll;
        if ($Log >= 3) {
            Log 1, "Behang-Istwert für Beschattung nachjustiert von $Behang_ist % auf $Behang_soll %"
        }
    }
    if($Lamellen_ist != $Lamellen_soll) {
        $pctSlatPos = $Lamellen_soll;
        if ($Log >= 3) {
            Log 1, "Lamellen-Istwert für Beschattung nachjustiert von $Lamellen_ist % auf $Lamellen_soll %"
        }
    }
}
if ($Log >= 5) {
    Log 1, "Duchlauf Device OG_RA01_BueroReinhard_3 Attribut ASC_Shading_Pos erfolgt"
}
$pctPos.":".$pctSlatPos
}

Das Problem könnte auch noch mit dem Attribut "event-on-change-reading" zusammenhängen, diese ist bei mir aktuell auf ".*" gesezt, dieses benötige ich aber zwingend, zu Unterscheidung der manuellen Fahrten.
Solltet ihr mehr Infos oder noch nähere Erklärungen benötigen, so liefere ich diese gerne nach.

Habt ihr da einen Tipp für mich, wie ich mein Problem lösen kann?
Gruß Reinhard
Titel: Aw: [ASC] Perlcode in Attribut ASC_Shading_Pos wird teilweise ignoriert
Beitrag von: Rewe2000 am 14 März 2025, 11:08:39
Hallo,

ich habe nun an meinem Jalousienaktor (HmIP-BBL-2) die Endlagen komplett neu eingestellt und die Fahrzeiten neu parametriert und die Lamellenverstellzeit neu ermittelt.
Nach diesen Änderungen ist der Fehler nicht mehr aufgetreten. Der Jalousienaktor muss sehr sorgfältig an die jeweilige Jalousie angepasst werden, damit dieser den Raffstore auch präzise steuert und es hier nicht zu Abweichungen kommt.

Gruß Reinhard