Hauptmenü

Filter auf alle Lampen

Begonnen von ftsinuglarity, 10 Dezember 2017, 23:02:28

Vorheriges Thema - Nächstes Thema

ftsinuglarity

Gibt es eine Möglichkeit, Lampen so zu definieren, das sie IMMER durch eine Routine zur Bestimmung der Tag/Nacht Zeit laufen und somit schalten oder oder eben nicht ?

Ein Beispiel:
define mix_struct structure mixt_struct_type Geraet Lampe

Lampe soll, wenn ich das struct aufrufe, immer gecheckt werden, ob es dunkel genug ist um angeschaltet zu werden. (Letzteres ist schon gelöst und durch diese Routine solls durch)
Ebenso alle anderen Lampen, die in irgendeiner Form aufgerufen werden.

Kurz: Egal wie ich aufrufe, Lampen werden rausgefiltert und automatisch gecheckt. So der Plan.

CoolTux

Trigger das hell dunkel was auch immer Device und wenn es dunkel ist sag deiner structure das sie anschalten soll und wenn es hell wird eben aus.

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

ftsinuglarity

#2
Danke Tux. Entweder missversteh ich was du meinst, ansonsten ist das Ziel ein gemischte Struktur zu haben und die Lampen darin abhängig von der Tageszeit zu schalten oder auszulassen.

Praktisch gehts zB um meinen Schreibtisch. Wenn ich den "Main-Button" Schreibtisch drücke, geht der PC an, das Netzwerk in der Wohnung wird angeschaltet (Router,Modem,Server) .. und wenns dunkel ist eine Reihe von Lampen.
Das habe ich bisher über getrennte structs gelöst. Also eins für die Geräte (PC und Netzwerk), und eines fürs Licht.

Jetzt bin ich am aufräumen und strukturieren und frage mich, wie ich es gelöst bekomme, beides in einem struct zu haben, und dennoch Tageslichtabhängig zu schalten.

Kann man sowas wie nen allgemeinen Filter anlegen, der alles siebt was LAMPE im Namen hat, egal wie aufgerufen?

ftsinuglarity

Mir würde noch einfallen, jedes Lampendevice an sich durch den check laufen zu lassen. Dann ist's egal ob über ein struct aufgerufen, oder direkt angesprochen oder was auch immer.

Ist aber nicht grad ne elegante Lösung.

CoolTux

Guten Morgen,

Das wird so wie Du es Dir vor stellst nicht gehen. Du musst schon getrennt die Strukturen aufrufen um gezielt eine Struktur mit Bedingung zu schalten.

In Deinem Beispiel
structurePC wo Monitor, Drucker und der PC drin sind, und halt die Structure LichtArbeitszimmer. Beide müssen im Notify welches auf Deinen Taster reagiert einzeln aufgerufen werden, damit Du beim Aufruf von der Lichtstruktur dann die Bedingungsabfrage einbauen kannst.
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

ftsinuglarity

#5
Danke für die nähere Erläuterung Tux.

Mit getrennten structs für Licht und Geräte habe ich es bisher aufgebaut, hätte aber lieber ein struct "Desktop" gehabt, der alles, also auch das Licht beinhaltet.

Ich fasse die Möglichkeiten die ich habe zusammen (nur um nix zu übersehen oder aneinander vorbeizureden .. ist so ne Sache mit der Sprache :D )

1. getrennte Struckturen Geräte / Licht
2. jedes Lampendevice einzeln über notify in den Tageszeitcheck laufen lassen. 
    - Vorteil: unabhängig von der Art getriggert zu werden.
    -  Nachteil: overhead / kein Überschreiben mehr möglich (zB. Lampe wird auch am Tag angeschaltet, wenn es mal nötig ist)
.. was vergessen ?

Noch etwas, womit ich mich nicht ausgiebiger beschäftigt habe: Es gibt doch die Möglichkeit devices zu filtern mit regex. Ich weiß nur noch nicht wie weit das geht.
Meine Vorstellung war, einen generellen Filter Lampen auf regex .*lampe.* laufen zu lassen. Der müsste allerdings soweit oben angesiedelt sein, das er prinzipiell immer durchlaufen wird. Das ist es, was nicht geht wenn ich dich richtig verstehe Tux?

CoolTux

Zitat von: ftsinuglarity am 11 Dezember 2017, 20:53:38
1. getrennte Struckturen Geräte / Licht

JA


Zitat von: ftsinuglarity am 11 Dezember 2017, 20:53:38
2. jedes Lampendevice einzeln über notify in den Tageszeitcheck laufen lassen.  Vorteil: unabhängig von der Art getriggert zu werden. | Nachteil: overhead
.. was vergessen ?

NEIN

Du siehst da irgendwas aus der falschen Richtung. Du scheckst nicht jedes Lampendevice durch den Tageszeitcheck sondern du prüfst wie die Tageszeit ist und schaltest dann das Licht oder eben nicht. Aber nicht jede Lampe einzeln, sondern schon als Struckture wenn Du magst.

Du drückst auf ein Taster in Deinem Arbeitszimmer Und die structure Geräte wird geschalten. Ausserdem wird geschaut wie die Tageszeit ist, und je nachdem ob Hell oder Dunkel wird die Strukture Licht geschalten oder nicht.



Persönlich finde ich aber ist das nur die halbe Miete. Was machst Du wenn Du im Arbeitszimmer am Nachmittag alles an machst, licht geht nicht an weil noch hell, un du bis abends bleibst. Es wird dann dunkel. Willst echt noch mal aufstehen und noch mal den Taster drücken  ;)
Ist wenig smart
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

ftsinuglarity

#7
ZitatDu siehst da irgendwas aus der falschen Richtung.
Hm, ich glaube ich hab mich tatsächlich nicht richtig ausdrücken können, oder ich stehe gerade auf dem Schlauch.

Gemacht habe ich es bisher so:
1) Dummy Schreibtisch definieren:
define dWZ_SCHREIBTISCH dummy
...


2) Notify für Dummy:
define ndWZ_SCHREIBTISCH notify dWZ_SCHREIBTISCH        {     if (($EVENT eq "on" ) || ($EVENT eq "toggle" and ReadingsVal("Schreibtisch","STATUS","") eq "off") ) {\
                                fhem(setHomeStatus(""));;\
                                fhem("\
                                        set Schreibtisch on;; \
                                        set st_Netzwerk on;;\
                                ");;\
                                if ( Value("dNight_Time") eq "1" ) {\
                                    fhem("set stWZ_Licht_Desktop on")\
                                }\
                            }\
                            elsif (($EVENT eq "off" ) || ($EVENT eq "toggle" and  ReadingsVal("Schreibtisch","STATUS","") eq "on") ) {\
                                fhem(" set stWZ_Desktop_OFF off");;\
                            }\
                    }\

...


Wobei:
set Schreibtisch on -> PC
set st_Netwerk on -> Router, Server, Modem etc
dNight_Time -> Dummy, der durch eine separate Routine auf 1 gesetzt wird bei Dunkelheit und so direkt abgefragt werden kann
set stWZ_Licht_Desktop on -> Licht am Schreibtisch
setHomeStatus("")    -> Dummy für Home-Status (Home/Away/Urlaub/Sleep) -> wird auf HOME gesetzt

Im else Zweig schalte ich nur die Lampen aus, denn der Rechner fährt sich automatisch runter. Wenn der Rechner nicht mehr erreichbar ist, setzt eine andere Routine ein, die dann den restl. Schreibtisch ausschaltet. Hat Gründe warum ich das separat mache, funktioniert tadellos. In der Regel schalte ich den Schreibtisch gar nicht aus, ich steh einfach auf und gehe, der Rest schaltet sich automatisch aus. SmartHome hey ? :D


Das ist ungefähr so wie du meintest, oder ?

Hier hätte ich, was das angedachte Ziel war, gern einfach "set st_Schreibtisch on" (inkl. Lampen)  (eigentlich nur zur Codevereinfachung und Übersicht)
Ok, das geht nicht so wie ich mir das dachte.

Habe ich irgendwas übersehen, was ich besser machen kann, oder den richtigen Ansatz doch noch nicht richtig verstanden ?


ZitatPersönlich finde ich aber ist das nur die halbe Miete. Was machst Du wenn Du im Arbeitszimmer am Nachmittag alles an machst, licht geht nicht an weil noch hell, un du bis abends bleibst. Es wird dann dunkel. Willst echt noch mal aufstehen und noch mal den Taster drücken 
Ist wenig smart
Hast Recht, das ist next Step. Hab ich bisher noch nicht gemacht, weil ich nicht möchte, daß das Licht angeht, wenn ich nicht da bin. Muß ich also an bestimmte Faktoren knüpfen, am besten an eine Anwesenheitserkennung. Da habe ich allerdings noch nichts zuverlässiges gefunden. Geolocation funktioniert so la la, will ich auf dauer auch nicht über fremdanbieter lösen und dadurch ein ständiges Bewegungsprofil hinterlegen. Es gibt noch weitere Überlegungen, aber alle treffen nicht immer zu. Fehlt mir noch n schlauer Ansatz.

Nur der HOME-Status Dummy reicht nicht, um die Lampen anzuschalten wenn es Dunkel wird. Was ist wenn ich außer Haus bin und vergesse den AWAY Status zu setzen ?
(Betrifft ja dann nicht nur die Schreibtischlampen die sich eh ausschalten, sondern alle im Haus .. ich suche immer noch nach einer übergreifenden Lösung für die Lampenschaltung)


Macht nen Riesenspaß mir Pro und Contra zu überlegen, die richtige Schaltung zu finden damit alles soweit wie möglich automatisch passiert. Interessant, welche Abhängigkeiten entstehen ... und wieviel schaltbaren Krams man so in er Wohnung hat inzwischen :D
Schön das ich hier Konstrukte auf Machbarkeit hinterfragen kann, vielen Dank!

CoolTux

Guten Morgen,

Zu nächst erstmal eine kleine Empfehlung. Dein Code sieht aus wie direkt aus der fhem.cfg Datei kompiert. Aktueller Beispielcode oder auch Code aus Antworten hier aus dem Forum werden entweder für die DEF geschrieben oder als RAW Definition für FHEMWEB. Generell empfehle ich immer über FHEMWEB zu arbeiten und nie niemals die cfg zu bearbeiten.

Nun zum Code. Das sieht auf den ersten schnellen Blick doch gut aus. Bevor der Schaltbefehl für die Lampe kommt prüfst Du ob der Dummy NightTime 1 ist. So sollte das eigentlich gehen.

Was die Anwesenheit an geht, so kann man drüber nachdenken es über eine Fritzbox zu machen sofern vorhanden, oder so wie ich das mache mit einen G-Tag Bluetooth. Jeder Bewohner hat so einen kleinen Dongle am Schlüsselbund.


Lichtschaltung ist generell ein sehr komplexes Thema. Daher habe ich meine Lichsteuerung in eine eigene 99_myUtils Datei dafür ausgelagert. Die Subroutine für Licht wird hierbei jedesmal aufgerufen wenn sich der Wert eines Twilight Readings (Azimut) ändert.
Um die Komplexität der Anwesenheit zu steuern verwende ich die Residents Modulfamilie. Besser kann man Anwesenheit nicht dar stellen. Die G-Tag werden mit dem presence Modul erkannt und schalten dann einen virtuellen Bewohner auf an oder abwesend, diese Schalten lösst ein Notify aus wo alle relevanten Schaltungen für den Bewohner drin stehen. Sind alle Bewohner abwesend, wird automatisch das Device Wohnung (Residents) abwesend geschalten. In seinem Notify steht dann das alles ausgeschalten werden soll, die Alarmanlage scharf geschalten werden soll, geschaut werden soll wo Fenster noch auf sind und wenn Unwetter oder Regen drohen bekommt der letzte Bewohner der gegangen ist eine Nachricht das Fenster noch zu schließen sind.


Kurz noch mal zum Thema Licht. Nur damit Du mal eine Vorstellung bekommst wie komplex das werden kann hier meine 99_myUtils_LightControl

##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;



sub myUtils_LightControl_Initialize($$) {

  my ($hash) = @_;

}

###### Wohnungslicht ################
sub autoLightControl() {

## Hilfsvariablen
my $adv = adv();
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
my $lux = ReadingsVal('twilightStahnsdorf','lux',1000);

#### Helligkeitswert vom Pflanzensensor mit abfragen
fhem("get PflanzeFensterRechts statusRequest") if($hour > 04 and $hour < 23);
fhem("sleep 60; get PflanzeFensterLinks statusRequest") if($hour > 04 and $hour < 23);


########################
## Abends Licht an

    if( ((ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) < 55 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) > 24 and ReadingsVal( "twilightStahnsdorf", "state", "100" ) > 6
          and ReadingsVal( "twilightStahnsdorf", "state", "100" ) < 11 ) or (ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) > 24 and ReadingsVal( "twilightStahnsdorf", "state", "100" ) > 5
          and ReadingsVal( "twilightStahnsdorf", "state", "100" ) < 11))
        and (Value("dummyLgTV") eq "on" or ReadingsVal("Eltern","state","absent") eq "home") and $lux < 200 ) {

        if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" ) {
                if( $adv and Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) {     ## Abfrage Adventszeit aus 99_myUtils_Helper
                    fhem "set lightScenenLicht_Media scene Twilight_7_WohnzimmerFlurWeihnacht";
                    fhem "set room=Weihnacht:FILTER=state=off on";
                } else {
                    fhem "set lightScenenLicht_Media scene Twilight_7_WohnzimmerFlur";
                    fhem "set room=Weihnacht:FILTER=state=off on" if( Value("dummyLichtWinter") eq "active" );
                }
        } else {
                if( $adv and Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) {     ## Abfrage Adventszeit aus 99_myUtils_Helper
                    fhem "set lightScenenLicht_Media scene Twilight_7_WohnzimmerWeihnacht";
                    fhem "set room=Weihnacht:FILTER=state=off on";
                } else {
                    fhem "set lightScenenLicht_Media scene Twilight_7_Wohnzimmer";
                    fhem "set room=Weihnacht:FILTER=state=off on" if( Value("dummyLichtWinter") eq "active" );
                }
        }
           
            CommandSet(undef,"LichtDimmerStevenDeckenLampe_Sw:FILTER=pct=0 pct 50") if( Value("rr_Steven") eq "home" and $lux < 200 and Value('autoLichtsteuerungSteven') eq 'on' );
    }

    elsif( ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) < 66 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) > 24 and ReadingsVal( "twilightStahnsdorf", "state", "100" ) > 6
     and ReadingsVal( "twilightStahnsdorf", "state", "100" ) < 10 and $lux < 300 ) {
    fhem "set LED_StreifenFlurDecke bri 254; set LED_StreifenFlurDecke hue 44444 : sat 90" if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" );
    }

    elsif( ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) < 66 and ReadingsVal( "twilightStahnsdorf", "state", "100" ) == 6
     and ReadingsVal( "twilightStahnsdorf", "nextEvent", "ss_weather" ) eq "ss_weather" and $lux < 300) {
    fhem "set LED_StreifenFlurDecke bri 254; set LED_StreifenFlurDecke hue 44444 : sat 90" if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" );
    }
   
    ### Wenn die Eltern nicht zu Hause sind aber die Kinder
    elsif( ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) < 20 and ReadingsVal( "twilightStahnsdorf", "state", "100" ) > 9
     and ReadingsVal("Eltern","state","home") ne "home" and ReadingsVal("Kinder","state","absent") eq "home" and $lux < 200 ) {
    fhem "set LED_StreifenFlurDecke bri 254; set LED_StreifenFlurDecke hue 44444 : sat 90" if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" and $hour < 20 );
        fhem "set LED_StreifenFlurDecke bri 100; set LED_StreifenFlurDecke hue 47104 : sat 254" if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" and $hour > 19 );
        fhem "set room=Weihnacht:FILTER=state=off on" if( $adv or Value("dummyLichtWinter") eq "active" );     ## Abfrage Adventszeit aus 99_myUtils_Helper
        CommandSet(undef,"LichtDimmerStevenDeckenLampe_Sw:FILTER=pct=0 pct 50") if( Value("rr_Steven") eq "home" and $lux < 200 and Value('autoLichtsteuerungSteven') eq 'on' );
    }

    elsif( $hour > 20 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) < 40 and $lux < 200 and (Value("dummyLgTV") eq "on" or
     ReadingsVal("Eltern","state","absent") eq "home") ) {
    if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" ) {
            if( $adv and Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) {     ## Abfrage Adventszeit aus 99_myUtils_Helper
                fhem "set lightScenenLicht_Media scene Twilight_10_WohnzimmerFlurWeihnacht; set structureCandleFlur:FILTER=state=off on";
                fhem "set room=Weihnacht:FILTER=state=off on";
            } else {
                fhem "set lightScenenLicht_Media scene Twilight_10_WohnzimmerFlur; set structureCandleFlur:FILTER=state=off on";
                fhem "set room=Weihnacht:FILTER=state=off on" if( Value("dummyLichtWinter") eq "active" );
            }
    } else {
            if( $adv and Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) {     ## Abfrage Adventszeit aus 99_myUtils_Helper
                fhem "set lightScenenLicht_Media scene Twilight_10_WohnzimmerWeihnacht";
                fhem "set room=Weihnacht:FILTER=state=off on";
            } else {
                fhem "set lightScenenLicht_Media scene Twilight_10_Wohnzimmer";
                fhem "set room=Weihnacht:FILTER=state=off on" if( Value("dummyLichtWinter") eq "active" );
            }
    }
    }

    elsif( $hour > 19 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) < 60 and $lux < 200 and (Value("dummyLgTV") eq "on" or
     ReadingsVal("Eltern","state","absent") eq "home") ) {
    if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" ) {
            if( $adv and Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) {     ## Abfrage Adventszeit aus 99_myUtils_Helper
                fhem "set lightScenenLicht_Media scene Twilight_8_WohnzimmerFlurWeihnacht";
                fhem "set room=Weihnacht:FILTER=state=off on";
            } else {
                fhem "set lightScenenLicht_Media scene Twilight_8_WohnzimmerFlur";
                fhem "set room=Weihnacht:FILTER=state=off on" if( Value("dummyLichtWinter") eq "active" );
            }
    } else {
            if( $adv and Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) {     ## Abfrage Adventszeit aus 99_myUtils_Helper
                fhem "set lightScenenLicht_Media scene Twilight_8_WohnzimmerWeihnacht";
                fhem "set room=Weihnacht:FILTER=state=off on";
            } else {
                fhem "set lightScenenLicht_Media scene Twilight_8_Wohnzimmer";
                fhem "set room=Weihnacht:FILTER=state=off on" if( Value("dummyLichtWinter") eq "active" );
            }
    }
    }


########################
## Abends Licht aus

    elsif( ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) < 66 and ReadingsVal( "twilightStahnsdorf", "state", "100" ) > 5
     and Value("dummyLgTV") eq "off" and Value('structureLichtIsabelsZimmer') eq 'on' and ReadingsVal("Eltern","state","home") ne "home" ) {
    fhem "set structureLichtWohnzimmer [FILTER=STATE!=off] off" if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" );
    }


########################
## Morgens Licht aus

    elsif( ReadingsVal( "twilightStahnsdorf", "state", "100" ) == 4 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) > 55 and $lux > 200 and $lux < 500 ) {
    fhem "set (structureLichtWohnzimmer|NetzschalterKinZimIsabelHintenLinks):FILTER=STATE=on off; set group=Licht.Weihnachten:FILTER=state=on off";
        fhem "set group=Licht.Weihnachtsbaum:FILTER=state=on off" if( Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) ;
    }

    elsif( (ReadingsVal( "twilightStahnsdorf", "state", "100" ) == 5 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) > 54 and $lux > 200 and $lux < 300) or ($lux > 300 and $lux < 500) ) {
    fhem "set (structureLichtWohnzimmer|NetzschalterKinZimIsabelHintenLinks):FILTER=STATE=on off; set group=Licht.Weihnachten:FILTER=state=on off";
        fhem "set group=Licht.Weihnachtsbaum:FILTER=state=on off" if( Value("dummyWeihnachtsbaumAutoOFF") eq "active" ) ;
       
        CommandSet(undef,"set LED_StreifenFlurDecke:FILTER=onoff=1 off") if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" and $lux > 500);
        CommandSet(undef,"LichtDimmerStevenDeckenLampe_Sw:FILTER=pct!=0 off") if( Value("rr_Steven") eq "home" and $lux > 250 and Value('autoLichtsteuerungSteven') eq 'on' );
    }

    elsif( (ReadingsVal( "twilightStahnsdorf", "state", "100" ) == 6 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) > 65 and $lux > 300 and $lux < 400) or ($lux > 300 and $lux < 700) ) {
        fhem "set (structureLichtWohnzimmer|structureLichtBadezimmer|NetzschalterKinZimIsabelHintenLinks):FILTER=STATE=on off; set group=Licht.Weihnachten:FILTER=state=on off";
        fhem "set group=Licht.Weihnachtsbaum:FILTER=state=on off" if( Value("dummyWeihnachtsbaumAutoOFF") eq "active" );
       
        if( (ReadingsVal( "twilightStahnsdorf", "elevation", "15" ) < 15 and ReadingsVal( "twilightStahnsdorf", "twilight_weather", "100" ) > 80 and $lux > 300 and $lux < 400) or ($lux > 400 and $lux < 700) ) {
            fhem "set LED_StreifenFlurDecke:FILTER=onoff=1 off" if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" );
        }
       
        elsif ( (ReadingsVal( "twilightStahnsdorf", "elevation", "15" ) > 15 and $lux > 300 and $lux < 400) or ($lux > 400 and $lux < 700) ) {
            fhem "set LED_StreifenFlurDecke:FILTER=onoff=1 off" if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" );
        }
       
        CommandSet(undef,"set LED_StreifenFlurDecke:FILTER=onoff=1 off") if( Value( "LED_StreifenSelectTwilightDummy" ) eq "on" and $lux > 500);
        CommandSet(undef,"LichtDimmerStevenDeckenLampe_Sw:FILTER=pct!=0 off") if( Value("rr_Steven") eq "home" and $lux > 250 and Value('autoLichtsteuerungSteven') eq 'on' );
    }
}



################################
##### Kaminfeuer ###############
sub startFireEffect(@) {

  my @bulbs=@_;
  foreach (@bulbs) {
    my $bulb=$_;
    my $hue = int((rand()*3460)+5460);
    my $sat = int(rand(64)+170);
    my $bri = int(rand(60)+16);
    my $delay = (rand()+0.1);
    my $transitiontime = int($delay * 10);
    fhem("set $bulb hue $hue: sat $sat : bri $bri : transitiontime $transitiontime : noUpdate");
    InternalTimer(gettimeofday()+$delay, 'startFireEffect', $bulb, 0);
   
  }
}

sub stopFireEffect(@) {

  my @bulbs=@_;
  foreach (@bulbs) {
    my $bulb=$_;
    RemoveInternalTimer($bulb);
    fhem("set $bulb off");
   
  }
}
1;
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

marvin78

Ich möchte nochmal lichtscene in den Ring werfen.

CoolTux

Guten Morgen Marvin,

Meinst Du lightscene? In welchem Zusammenhang möchtest Du das einwerfen. Nicht das wir ftsinuglarity da noch mehr Fragen aufwerfen.



Grüße
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

marvin78

#11
Autocorrect. Ich denke das lightscene als Grundlage  in dem Fall besser geeignet ist als structure.  Es nimmt an vielen Stellen Komplexität. Ein Modul wie homemode oder YAAHM könnte für den Anfänger auch einiges an Steuerungsaufgaben erleichtern.

Ach und mehr Fragen sind nix schlechtes. Wenn sie substanziell sind.

ftsinuglarity

ZitatZu nächst erstmal eine kleine Empfehlung. Dein Code sieht aus wie direkt aus der fhem.cfg Datei kompiert. Aktueller Beispielcode oder auch Code aus Antworten hier aus dem Forum werden entweder für die DEF geschrieben oder als RAW Definition für FHEMWEB. Generell empfehle ich immer über FHEMWEB zu arbeiten und nie niemals die cfg zu bearbeiten.

Die Diskussion hatte ich schon einmal separat geführt. Empflindliches Thema anscheinend :D ... Ich bin kein Anfänger und komme mit einem Mix aus UI und direkt editieren super zurecht. Die Vorteile des direkten editierens mag ich nicht missen.
Zur Darstellung des Codes sehe ich mal zu, das ich ihn aus der UI kopiere .. DEF /list usw.

ZitatWas die Anwesenheit an geht, so kann man drüber nachdenken es über eine Fritzbox zu machen sofern vorhanden, oder so wie ich das mache mit einen G-Tag Bluetooth. Jeder Bewohner hat so einen kleinen Dongle am Schlüsselbund.

G-Tag ... Ok, danke für den Tip, gute Idee. Erspart mir auch nen Gäste-Modus wenn meine Freundin da ist, bzw. das kann ich dann automatisieren.
Ist dann allerdings etwas, das mir direkt auf die Eier strahlt wenn es am Schlüsselbund ist :D ..  Ich hatte an etwas ähnliches gedacht per Smartphone. Dort habe ich allerdings nicht immer Bluetooth an, kommt also nicht in Frage.


Danke für dein Utils ... da brauche ich erst mal n weilchen um mir das anzuschauen.

ftsinuglarity

ZitatNicht das wir ftsinuglarity da noch mehr Fragen aufwerfen.
Ich finds toll wenn ihr mich auf Dinge stoßt, auf die ich noch nicht gekommen bin. Also keine Scheu.

ZitatAch und mehr Fragen sind nix schlechtes. Wenn sie substanziell sind.
Jup, seh ich genauso

CoolTux

Zitat von: marvin78 am 12 Dezember 2017, 07:49:30
Autocorrect. Ich denke das lightscene als Grundlage  in dem Fall besser geeignet ist als structure.  Es nimmt an vielen Stellen Komplexität. Ein Modul wie homemode oder YAAHM könnte für den Anfänger auch einiges an Steuerungsaufgaben erleichtern.

Ach und mehr Fragen sind nix schlechtes. Wenn sie substanziell sind.

Als Ersatz für Struktur würde ICH es jetzt nicht direkt sehen. In meiner Vorstellung würde mir da die sofortige Darstellung fehlen was nun genau wo an ist. Aber ich denke das ist Geschmackssache.
Persönlich nehme ich lightszene für Ambiente Licht. Sieht man in meiner myUtils. Bis 20 Uhr etwas heller (will ja mein Wurstbrot noch sehen können) und danach mehr gemütliches sanftes Licht.



Grüße
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