FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: drdownload am 11 Januar 2016, 21:34:12

Titel: Homeeasy Dimmer um ein Dimlevel reading erweitern
Beitrag von: drdownload am 11 Januar 2016, 21:34:12
Ich überlege gerade wie ich meine Home-Easy Dimmer in Kombination damit Smartvisu um ein eigenes reading und set für das dimlevel erweitern kann.

Da die Dimmer sich auf dem letzten gesetzten Level einschalten (und bei on zB nicht auf dem Höchsten) würde ich gerne ein Reading für das Dimlevel (+DimlevelLast um bei off/on wieder das gleiche Dimlevel zurückzubekommen)

Ob ein OnOffState reading praktisch wäre bin ich noch unschlüssig.

Ich könnte es natürlcih über einen dummy machen und die über notify zusammenhängen, aber netter wäre es bei meinen vielen Dimmer natürlich direkt am Dimmer.

Mit userreadings kenne ich mich nicht so wirklich aus, bin mir deswegen nicht sicher ob man damit ans Ziel kommt.

Bei den vielen Möglichkeiten in FHEM übersehe ich wahrscheinlich etwas.
Titel: Antw:Homeeasy Dimmer um ein Dimlevel reading erweitern
Beitrag von: drdownload am 13 Januar 2016, 20:30:04
Ohne es jetzt länger getestet zu haben, habe ich jetzt ein Notify gebaut, dass sich um diese Funktionalität kümmert. (ich bin eine Null in Perl, wenn jemand Verbesserungsvorschläge hat)

schreibtischlampe.licht.wohnzimmer:.* {if ($EVENT eq "off") {
fhem ("setreading $NAME switchState $EVENT");fhem ("setreading $NAME level 0");
}elsif ($EVENT eq "on"){
my $levelLastValue = ReadingsVal("$NAME","levelLast",0);
fhem ("setreading $NAME switchState $EVENT");fhem ("setreading $NAME level $levelLastValue");
}elsif ($EVENT =~ /level/){
my $levelValue = $EVENT;
$levelValue =~ s/[^0-9]//g;
fhem ("setreading $NAME level $levelValue");
fhem ("setreading $NAME levelLast $levelValue");}}
Titel: Antw:Homeeasy Dimmer um ein Dimlevel reading erweitern
Beitrag von: Puschel74 am 13 Januar 2016, 20:40:57
Zitatwenn jemand Verbesserungsvorschläge hat
Code-Tags verwenden  :P

Aber immerhin das DEF und nicht direkt aus der fhem.cfg  :)

Top was du dir erarbeitet hast.

schreibtischlampe.licht.wohnzimmer:.* {
  if ($EVENT eq "off") {
    fhem ("setreading $NAME switchState $EVENT");
    fhem ("setreading $NAME level 0");
  }
  elsif ($EVENT eq "on"){
    my $levelLastValue = ReadingsVal("$NAME","levelLast",0);
    fhem ("setreading $NAME switchState $EVENT");
    fhem ("setreading $NAME level $levelLastValue");
  }
  elsif ($EVENT =~ /level/){
    my $levelValue = $EVENT;
    $levelValue =~ s/[^0-9]//g;
    fhem ("setreading $NAME level $levelValue");
    fhem ("setreading $NAME levelLast $levelValue");
  }
}

Sorry aber so gefallen mir persönlich die Codes besser  :-[
Nein, die Funktionalität ändert sich dadurch nicht - ich finds nur übersichtlicher.
Manche schreiben das auch in eine Zeile.
Ja, die ( und ) nach fhem kann man evtl. auch weglassen - ich lass die auch immer drinnen und Klammer zuviel.
So wie in Mathe - lieber ein Klammerpaar zuviel als zuwenig  :D

Edith: Kurze Frage
switchState setzt du aber du fragst es nicht ab - oder ich habs übersehen - warum?

Edith1: Meinen Beitrag bitte NICHT als Kritik sehen.
Titel: Antw:Homeeasy Dimmer um ein Dimlevel reading erweitern
Beitrag von: drdownload am 13 Januar 2016, 21:12:47
Danke, bin ganz stolz ;) wie gesagt Perl habe ich bis jetzt wie der Teufel das Weihwasser vermieden, aber ohne ist es unlustig in FHEM ;)

Das switchState reading war eigentlich für smartvisu gedacht um unabhängig von state eine on-off Info zu haben, aber der Teil funktioniert nicht so wie ich es mir gedacht hätte, dafür funktioniert es auch ohne direkt mit State (wenngleich ich nicht ganz verstehe wieso ;) )

Nächster Plan ist dann auf Basis meines  FHT8v direkt angesteuert vom PID20 Modul Heizungssetups funktionalität wie bei den HM mit Comfort-Temperaturen etc. nachzubauen + eine bessere Boost-Funktion für frierende Frauen.