Mysensors Dimmer Funktion für Dimmgeschwindigkeit

Begonnen von MrTom, 12 August 2017, 21:57:53

Vorheriges Thema - Nächstes Thema

MrTom

Hallo zusammen

ich habe mir in meine Haussteuerung nun auch noch einen Mysensors Dimmer geleistet...  :)

Nun würde ich gerne das Dimmern über eine gewisse Zeit einstellen. Ich kenne das von WifiLight-Devices, bei denen man schön das Rampup mitgeben kann.

Ich hab mich mal "laienhaft" an einen Perlskript herangewagt, der soweit funktioniert:
##############################################
# LED dimmer
#
sub LEDdimdown(@)
{
    my ($ledName, $time, $target) = @_;
    my $r1 = ReadingsVal($ledName,"percentage",100);
    my $delay = int($time*10);

    if ($target < $r1) {
        my $delay = int($time*1000000/($r1-$target));
        for(my $i=$r1; $i>=$target; $i--) {
            fhem "set $ledName precentage $i;";
            usleep($delay);
        };
    }; 
    return undef; 
}

sub LEDdimup(@)
{
    my ($ledName, $time, $target) = @_;
    my $r1 = ReadingsVal($ledName,"percentage",100);
    my $delay = int($time*10);

    if ($target > $r1) {
        my $delay = int($time*1000000/($r1-$target));
        for(my $i=$r1; $i<=$target; $i++) {
            fhem "set $ledName precentage $i;";
            usleep($delay);
        };
    }; 
    return undef; 
}


Jedoch besteht hier das Problem, nehm ich mal an, dass die eingebaute usleep-Funktion die gesamte FHEM-Installation "anhält". So scheint es zumindest. D.h. wenn ich 30 Sekunden als $time-Wert übergebe, geht im FHEM 30 Sekunden nix.

Gibts da einen elegantere Lösung?

Gruss
MrTom
RPi2: FHEM 5.8 mit Jeelink (ATTiny) und AliRF (PIR's)
KNX/EIB: alix3d3 als IP-GW, div. Sensoren und Aktoren (Licht, Jalousien und Markisen)
Mysensors: Temp/Hum/Lux-Sensoren, PIR's, Türkontakte,
verschiedene RGB-Aktoren, Vantage 2, Fritzbox, Vu+ Duo

dev0

sleep/usleep blockiert. Du könntest das timerbasiert lösen, aber auch das würde ich nicht auf FHEM Seite machen, sondern in der Controller Firmware.

Beta-User

Stimme dev0 voll zu.

Sofern Du den Standard MySensors-Sketch nutzt: Du kannst zum einen das delay im code selbst länger einstellen (aktuell: 10ms pro Prozent). Das wäre dann aber wieder fest einprogrammiert.

Wenn Du das von FHEM-Seite einstellen können willst, könntest Du noch ein S_CUSTOM-Child präsentieren und darüber dann (z.B. V_VAR1) die Dimmzeit pro Prozent ändern, erfordert aber natürlich einiges an Code-Anpassung.

Sofern Du dazu Hilfe benötigst, bitte den Thread ins passende Unterforum verschieben.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files