Seite 1 von 1

Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 1. Nov 2020 17:50
von Piko
Hallo ihr Verrückten ;)

Ich hab mir ein Aquarium zugelget und würde gerne das licht Langsam hoch sowie runter Dimmen.

Bin mir aber noch nicht Schüssig wie ich das am besten anstelle. Sowie aktuell 2 Lichtfarben, Warmweiss und Kaltweiss.
Ich hab als Ausgangsposition ein Shelly RGBW2 (hatte ich gerade zu hand). Genial wäre natürlich wenn ich erst langsam das Warmweiss hochstufen könnte und ab (sagen wir einfach mal) 20% dass kaltweiss nachträglich langsam weiter hoch dimmen könnte.

Ich hab schon ein wenig gesucht im forum, aber das richtige nicht so recht gefunden.

konkret zur regel:
Sie soll "Channel 1" ab 09 Uhr alle 6 Minuten um 10% steigen lassen.
Channel "2" soll dann ab 20% prozent langsam (vielleicht mit 7-8 Schritten) dazu kommen. Bis am ende beide auf 100% sind.

Das gleiche am Abend in umgekehrter form natürlich auch.

Bisher hab ich nur die idee über einen TimeCron zu arbeiten, aber ich glaube ihr habt da ne bessere idee.
EDIT:

Meine bisheruige Rule zum abdunkeln sieht so aus:

Code: Alles auswählen

rule "Licht Aus"
when
    Time cron "0 0 21 1/1 * ? *" or 
    Time cron "0 0 20 1/1 * ? *" or 
    Time cron "0 06 20 1/1 * ? *" or 
    Time cron "0 12 20 1/1 * ? *" or 
    Time cron "0 24 20 1/1 * ? *" or 
    Time cron "0 30 20 1/1 * ? *" or 
    Time cron "0 36 20 1/1 * ? *" or 
    Time cron "0 42 20 1/1 * ? *" or 
    Time cron "0 48 20 1/1 * ? *" or
    Time cron "0 54 20 1/1 * ? *" or  
then

    if(Beleuchtung_Warm.state ==100){
        Beleuchtung_Warm.sendCommand(90)
    }
    if (Beleuchtung_Warm.state == 90){
        Beleuchtung_Warm.sendCommand(80)
    }
    if (Beleuchtung_Warm.state == 80){
        Beleuchtung_Warm.sendCommand(70)
    }
    if (Beleuchtung_Warm.state == 70){
        Beleuchtung_Warm.sendCommand(60)
    }
    if (Beleuchtung_Warm.state == 60){
        Beleuchtung_Warm.sendCommand(50)
    }
    if (Beleuchtung_Warm.state == 50){
        Beleuchtung_Warm.sendCommand(40)
    }
    if (Beleuchtung_Warm.state == 40){
        Beleuchtung_Warm.sendCommand(30)
    }
    if (Beleuchtung_Warm.state == 30){
        Beleuchtung_Warm.sendCommand(20)
    }
    if (Beleuchtung_Warm.state == 20){
        Beleuchtung_Warm.sendCommand(10)
    }
    if (Beleuchtung_Warm.state == 10){
        Beleuchtung_Warm.sendCommand(0)
    }

end
PS: Test läuft erstmal mit Warmweiss.
Danke und Schönen Abend Euch!
Bleibt Gesund!

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 1. Nov 2020 18:11
von violine21
Hallo,
ich habe hier etwas ähnliches für eine Vogelvoliere. Um 19:00 Uhr wird das Licht im 5-Sekunden-Takt um 1% herunter gedimmt.
Der "Sonnenaufgang" liesse sich ganz einfach in die Rule mit integrieren.

Code: Alles auswählen

var Timer tSunset = null

rule "Beleuchtung Simulation Sonnenuntergang"
when
    Time cron "0 0 19 * * ?"// um 19:00:00 Uhr
then
    tSunset?.cancel
    tSunset = createTimer(now.plusMillis(10),[|
        if((SDimmer_D1_RelayBrightness.state as Number) > 0) {
            SDimmer_D1_RelayBrightness.sendCommand((SDimmer_D1_RelayBrightness.state as Number) - 1)
            tSunset.reschedule(now.plusSeconds(5))
        }
    ])
end
SDimmer_D1 ist ein Shelly-Dimmer, dessen Items:

Code: Alles auswählen

Dimmer               SDimmer_D1_RelayBrightness      "Helligkeit"             {channel="shelly:shellydimmer:f3a210:relay#brightness"}
Switch               SDimmer_D1_RelayOutput          "Output"                 {channel="shelly:shellydimmer:f3a210:relay#brightness"}
Switch               SDimmer_D1_RelayInput1          "Eingang 1"              {channel="shelly:shellydimmer:f3a210:relay#input1"}
Switch               SDimmer_D1_RelayInput2          "Eingang 2"              {channel="shelly:shellydimmer:f3a210:relay#input2"}
Number:Time          SDimmer_D1_RelayAutoOn          "Auto ein timer"         {channel="shelly:shellydimmer:f3a210:relay#autoOn"}
Number:Time          SDimmer_D1_RelayAutoOff         "Auto aus timer"         {channel="shelly:shellydimmer:f3a210:relay#autoOff"}
Number               SDimmer_D1_DeviceWifiSignal     "WiFi[MAP(shelly_rssi.map):%s]"           {channel="shelly:shellydimmer:f3a210:device#wifiSignal"}
Number:Time          SDimmer_D1_DeviceUptime         "Laufzeit"               {channel="shelly:shellydimmer:f3a210:device#uptime"}
Number:Temperature   SDimmer_D1_DeviceInternalTemp   "Device internal temp"   {channel="shelly:shellydimmer:f3a210:device#internalTemp"}
Number:Power         SDimmer_D1_MeterCurrentWatts    "Meter current watts"    {channel="shelly:shellydimmer:f3a210:meter#currentWatts"}
Number:Energy        SDimmer_D1_MeterTotalKWH        "Meter total kwh"        {channel="shelly:shellydimmer:f3a210:meter#totalKWH"}
Number:Energy        SDimmer_D1_MeterLastPower1      "Meter last power1"      {channel="shelly:shellydimmer:f3a210:meter#lastPower1"}
Number:Energy        SDimmer_D1_MeterLastPower2      "Meter last power2"      {channel="shelly:shellydimmer:f3a210:meter#lastPower2"}
Number:Energy        SDimmer_D1_MeterLastPower3      "Meter last power3"      {channel="shelly:shellydimmer:f3a210:meter#lastPower3"}
DateTime             SDimmer_D1_MeterLastUpdate      "Meter last update"      {channel="shelly:shellydimmer:f3a210:meter#lastUpdate"}
Probier mal, ob das Deinen Vorstellungen entspricht. Die Feinheiten bauen wir dann noch ein.

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 2. Nov 2020 20:02
von Piko
Nabend violine21,

danke für den Vorschlag. Das sieht schon sehr gut aus. Umgebaut bekomm ich das denke ich selbst. ich brauchte nur einen ansastz.

Ich bin/war aber auch in dem glauben, das wenn ich eine solche Rule aufbaue, ich diese Rule eine Stunde am laufen habe und es so vielleicht zu problemen mit anderen Rules kommen kann.

Aber wenn das bei dir soweit ohne probleme läuft, passe ich das so für mich an.


Danke und schönen Abend

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 2. Nov 2020 22:57
von violine21
Piko hat geschrieben: 2. Nov 2020 20:02 ich brauchte nur einen ansastz.
Zwei Möglichkeiten:
1. Eine zweite Rule für den Sonnenaufgang. Dann immer um 1 erhöhen, Vergleich dann auf den Maximalwert.
2. Den Sonnenaufgang in diese Rule integrieren.
Im when-Bereich erweiterst Du um den Zeitpunkt, an dem die "Sonne aufgehen" soll.
Dafür musst Du dann per if-Bedingung noch einmal auf den Zeitpunkt filtern, damit die Rule weiss, was gemeint ist:

Code: Alles auswählen

if(now.getHourOfDay = 9 )     //Sonnenaufgang
if(now.getHourOfDay = 19 )    //Sonnenuntergang
Du kannst den selben Timer nutzen, da er ja nicht gleichzeitig startet.
Dann musst Du das noch einbauen:
Channel "2" soll dann ab 20% prozent langsam (vielleicht mit 7-8 Schritten) dazu kommen. Bis am ende beide auf 100% sind.
Das geht dann auch mit Vergleichsoperationen.

Ich empfehle wegen der Übersichtlichkeit zwei Rules. Dann entfällt auch der Zeitvergleich.
Und ja, es läuft zur Freude meiner Sittiche stabil. Ich habe allerdings als Startbedingung einen Lichtsensor im Aussenbereich.

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 4. Nov 2020 18:57
von Piko
Ich werd gleich mal ein wenig basteln.
Ich denke das wird schon werden, wenn ich die rule fertig habe poste ich sie, dann könnt ihr sie zerpflücken und verbesserungen vorschlagen :-D

Die idee mit dem Lichtsensor im Aussenbereich ist grundsätzlich Nett (hab ich z.b. für meine Aussenbeleuchtung bereits eingebrunden) allerdings denke ich wollen meine Fische etwas recht gleichbleibendes und ich würd sie auch gerne noch sehen wenn ich Heim kommen ;)

Ich denke ich werd als Trigger einen Time Cron verwenden und dann Steppweise hochsetzen.

Sollte ich auf Probleme stoßen gebe ich Laut :)
Schönen Abend

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 4. Nov 2020 19:40
von violine21
Piko hat geschrieben: 4. Nov 2020 18:57 Die idee mit dem Lichtsensor im Aussenbereich ist grundsätzlich Nett (hab ich z.b. für meine Aussenbeleuchtung bereits eingebrunden) allerdings denke ich wollen meine Fische etwas recht gleichbleibendes und ich würd sie auch gerne noch sehen wenn ich Heim kommen ;)
Ich glaube, da hast Du mich missverstanden ;)
Ich verlängere mit dem Licht den Tag in meiner Vogelvoliere. An Hand der Lichtverhältnisse im Aussenbereich beginnt die Zusatzbeleuchtung
im Winter entsprechend früher. Das stufenweise herunterdimmen findet eigentlich immer zur selben Zeit statt.
Bei Fischen wird die Beleuchtung in der Regel den ganzen Tag benötigt.

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 6. Nov 2020 19:37
von Piko
OKAY ich bin blöd!


ich hab mir da gerade was zusammen gebastelt, aber irgendwie läuft das so nicht.


habe ich nur eine der beiden Rules in der Datei, geht es. mit beiden nicht.


Übersehe ich was ?

Code: Alles auswählen

var Timer tSunset = null
var Timer tSunrise = null

rule "Beleuchtung Simulation Sonnenuntergang"
when
    Time cron "00 24 19 * * ?"// um 19:00:00 Uhr
then
    tSunrise?.cancel
    tSunrise = createTimer(now.plusMillis(10),[|
        if((Aquarium_Kaltweiss.state as Number) >= 0) {
            if((Aquarium_Warmweiss.state as Number) < 100){
                Aquarium_Warmweiss.sendCommand((Aquarium_Warmweiss.state as Number) +1)
            }
            if((Aquarium_Warmweiss.state as Number) >= 20){
                Aquarium_Kaltweiss.sendCommand((Aquarium_Kaltweiss.state as Number)+2)
            }
            tSunrise.reschedule(now.plusSeconds(1))
        }
    ])
end


rule "Beleuchtung Simulation Sonnenuntergang"
when
    Time cron "00 35 19 * * ?"// um 19:00:00 Uhr
then
    tSunset?.cancel
    tSunset = createTimer(now.plusMillis(10),[|
        if((Aquarium_Warmweiss.state as Number) > 0) {
            if((Aquarium_Kaltweiss.state as Number) < 90){
                Aquarium_Warmweiss.sendCommand((Aquarium_Warmweiss.state as Number) - 1)}
            if((Aquarium_Kaltweiss.state as Number) > 0){
                Aquarium_Kaltweiss.sendCommand((Aquarium_Kaltweiss.state as Number) - 2)
            }
            tSunset.reschedule(now.plusSeconds(1))
        }
    ])
end
ja ich weiss, ist nicht schön ^^

PS: die 1 Sekunde ist nur zum testen.

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 6. Nov 2020 20:59
von violine21
Piko hat geschrieben: 6. Nov 2020 19:37 habe ich nur eine der beiden Rules in der Datei, geht es. mit beiden nicht.
Beide Rules haben den gleichen Namen:

Code: Alles auswählen

rule "Beleuchtung Simulation Sonnenuntergang"
Funktioniert der Cron-Trigger?

Code: Alles auswählen

Time cron "00 24 19 * * ?"// um 19:00:00 Uhr
19:00 Uhr müsste so aussehen:

Code: Alles auswählen

Time cron "0 0 19 * * ?"

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 8. Nov 2020 20:17
von Piko
Ja sowas kommt davon wenn man mal schnell was machen will und die Frau im Hintergrund schon am Nerven ist :-D

Habs dann gestern Neu gemacht und es läuft.

die Rule sieht im moment so aus:

Code: Alles auswählen

var Timer tSunrise = null
var Timer tSunset1 = null
var Timer tSunset2 = null

rule "Beleuchtung Simulation Sonnenuntergang Warmweiss"
when
    Time cron "00 25 20  * * ?"// um 19:00:00 Uhr
then
    tSunset1?.cancel
    tSunset1 = createTimer(now.plusMillis(10),[|
        if((Aquarium_Warmweiss.state as Number) > 0) {
                Aquarium_Warmweiss.sendCommand((Aquarium_Warmweiss.state as Number) - 1)
            tSunset1.reschedule(now.plusSeconds(20))
        }
    ])
end
rule "Beleuchtung Simulation Sonnenuntergang Kaltweiss"
when
    Time cron "00 50 19  * * ?"// um 19:00:00 Uhr
then
    tSunset2?.cancel
    tSunset2 = createTimer(now.plusMillis(10),[|
        if((Aquarium_Kaltweiss.state as Number) > 0) {
                Aquarium_Kaltweiss.sendCommand((Aquarium_Kaltweiss.state as Number) - 1)
            tSunset2.reschedule(now.plusSeconds(20))
        }
    ])
end

rule "Beleuchtung Simulation Sonnenaufgang"
when
    Time cron "00 45 08 * * ?"// um 19:00:00 Uhr
then
    tSunrise?.cancel
    tSunrise = createTimer(now.plusMillis(10),[|
        if((Aquarium_Kaltweiss.state as Number) >= 0) {
            if((Aquarium_Warmweiss.state as Number) < 100){
                Aquarium_Warmweiss.sendCommand((Aquarium_Warmweiss.state as Number) +1)
            }
            if((Aquarium_Warmweiss.state as Number) >= 20 && (Aquarium_Kaltweiss.state as Number) < 98){
                Aquarium_Kaltweiss.sendCommand((Aquarium_Kaltweiss.state as Number)+2)
            }
            tSunrise.reschedule(now.plusSeconds(20))
        }
    ])
end


Kann man sicherlich Optimieren. Will aber jetzt erstamal in nächsten Stepp das RGB-Led Band mit dazunehmen.

Morgens von Rot ins Gelb-Grün und zum Abend dann über Rot zu Blau.

Aber da schau ich dann wenn ich mal zeit habe.

Re: Aqurariumbeleuchtung - Schonende Schlatung

Verfasst: 10. Nov 2020 21:50
von Piko
Ich häng mal die nächste frage an das Thema an...

Wie setzte ich eine zufällige bewölung um ?

also ich hätte es gerne so das zufällig über den Tag verteilt das licht schwächer wird, aber natürlich nie ganz aus geht.
Hat dazu jemand ne idee ?