Hallo,
ich brauche mal eine DOIF Schulung, bin noch recht unbedarft und lebe von Wiki's und anderen Beispielen. Bisher bin ich noch nicht gut genug von 0 eigene scripts zu schreiben.
Ich habe hier ein DOIF welches die Lichtsteuerung für mein Kodi ist. Das sieht momentan so aus:
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "playing" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene SchauModus)
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "paused" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene PausenModus)
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "stopped" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene LichtHell)
Es schaltet mir das Licht zuverlässig wenn es Dunkel ist. Funktioniert also bis auf eine Sache prima:
- Wenn ich während Play den Wert eines, mit der LightScene definierten Dimmers ändere springt dieser gleich danach wieder auf den Wert der Scene.
Kann ich das mittels des DOIF beeinflussen oder ist das eine andere Baustelle?
Nun ist mein Ziel, dass ich diesen Dimmer WzSofaLicht während Play individuell ändere (z.B weil meine Frau lesen oder häkeln will während ein Film geschaut wird und mehr Licht braucht). Wenn nun auf Pause geschaltet wird soll dieser geänderte Wert in ein reading last_state geschrieben werden und bei darauf folgendem Play gelesen werden. Also nicht die Scene setzen. Die Scene wird nur gesetzt wenn das Reading nicht vorhanden ist. Es wird also bei Stop gelöscht.
Und so habe ich es nun geändert aber ich weiß jetzt schon das da was falsch ist:
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "playing" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie") and [WzSofaLicht:last_state] ne "8") [b]# Hier hatte ich die Idee das Reading last_state zu lesen und wenn nicht equal zu 8 (Wert des Dimmers bei Play) soll last_state gesetzt werden welches aus der Pause davor geschrieben wurde.[/b]
(set WzSofaLicht [WzSofaLicht:last_state])
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "playing" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie") and [WzSofaLicht:last_state] eq "8") [b]# Hier die Sache umgekehrt und dann soll die Scene gesetzt werden. Aber hier sollte doch eigentlich geprüft werden ob das Reading überhaupt existiert. Wie mache ich das?[/b]
(set WzHeimkinoLicht scene SchauModus)
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "paused" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(setreading WzSofaLicht last_state [WzSofaLicht], set WzHeimkinoLicht scene PausenModus) [b]# Hier soll bei Pause das reading last_state geschrieben werden und dann soll die Scene PausenModus gesetzt werden. Ist das so richtig? Dafür muss ich noch lösen wie der individuelle Dimmerwert bei Play auch erhalten bleibt.[/b]
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "stopped" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(deletereading WzSofaLicht last_state [WzSofaLicht], set WzHeimkinoLicht scene LichtHell) [b]# Hier wird das Reading last_state gelöscht und die Scene LichtHell gesetzt.[/b]
Die Kommentare sind im Code. Wie kann ich mein Ziel zuverlässig erreichen?
Ich bin für jede Hilfe dankbar :)
Grüße
Dirk
Für den vollständigen Code habe ich jetzt keine Konzentration, aber:
Zitat von: Dersch am 31 März 2016, 12:16:53Wenn nun auf Pause geschaltet wird soll dieser geänderte Wert in ein reading last_state geschrieben werden und bei darauf folgendem Play gelesen werden. Also nicht die Scene setzen. Die Scene wird nur gesetzt wenn das Reading nicht vorhanden ist. Es wird also bei Stop gelöscht.
Was, wenn du bei Stop nicht löschst, sondern den Szene-Standard-Wert setzt, dann brauchst du bei Play nicht erst prüfen, sondern kannst einfach immer den gespeicherten Wert setzen.
Wäre ein Weg für Dich das ganze durch abfragen eines Dummys zu lösen? If Dummy == Frau häckelt then änder das Licht nicht.
Ich mache sowas bei meiner Lichtautomatik. Ist der Dummy auf on schaltet das Licht automatisch, ist er auf off schaltet gar nichts.
Das mit dem Dummy wäre natürlich auch ein Weg aber ist es nicht schöner das ins DOIF einzubauen? Interessiert mich schon ob das so geht.
Machst Du ja, Du fragst ja im DOIF den Dummy ab. Wenn ich Dich richtig verstanden habe würdest Du bei Deiner Idee halt ein Reading abfragen.
Ach so meinst du das. Aber wie wird dann der individuelle wert gespeichert? Hast du ein Beispiel für mich?
Wieso den Wert speichern? Ich hatte Dich so verstanden das Du nicht willst das der Wert geändert wird. Also quasi keine Schaltung erfolgt. Hab Dich da wohl missverstanden.
Naja also normalerweise soll ja die Lichtsteuerung greifen. Aber wenn während Play der Wert des Dimmers geändert wurde, dann soll nach Pause dieser Wert wieder hergestellt werden und nicht der Wert der Scene. Nach Stopp soll das aber wieder auf Ausgangszustand gestellt sein. Das ist es was ich möchte :)
Ah ok. Sorry aber so spät kann ich nicht mehr so komplex denken. Aber mal ein kleiner Tip wie ich sowas mache. Mal ab davon das es sicherlich eine DOIF Lösung gibt.
Bei solch komplexen Szenarien und Schaltungen erstelle ich mir eine 99_myUtils welche ich über ein Notify aufrufe. Ins Notify kommen nur die Device rein die getriggert werden sollen und in die Sub werden dann die Abfragen und Bedingungen gemacht.
Finde ich persönlich Übersichtlicher muß ich gestehen.
Kleines Beispiel.
Notify:
Internals:
DEF BadezimmerVorheizenDummy:(on|off)|TempFeuchtSensorBadezimmer:temperature:.* {
if( ($NAME eq "BadezimmerVorheizenDummy" || $NAME eq "TempFeuchtSensorBadezimmer") && Value( "BadezimmerVorheizenDummy" ) eq "on" ) {
BadezimmerVorheizen($NAME,$EVENT);
}
elsif( $NAME eq "BadezimmerVorheizenDummy" && Value( "BadezimmerVorheizenDummy" ) eq "off" ) {
BadezimmerVorheizenEnde();
}
}
NAME notifyHeatingControl
NR 371
NTFY_ORDER 50-notifyHeatingControl
REGEXP BadezimmerVorheizenDummy:(on|off)|TempFeuchtSensorBadezimmer:temperature:.*
STATE 2016-03-31 23:03:57
TYPE notify
Readings:
2016-03-29 15:01:02 state active
Attributes:
Und hier die 99_myUtils dazu
##############################################
# $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_HeatingControl_Initialize($$) {
my ($hash) = @_;
}
###########################################
### Badezimmer Vorheizen
sub BadezimmerVorheizenEnde() {
oldVolume("Nexus7Wohnzimmer","safe");
oldVolume("Nexus7Isabel","safe");
oldVolume("DesireHD_Flur","safe");
my $solltemp = ReadingsVal( "BadezimmerVorheizenDummy", "desired-temp", "21.0" );
my $isttemp = ReadingsVal( "TempFeuchtSensorBadezimmer", "temperature", "Fegefeuer" );
if( ReadingsVal( "setTemperaturTemplateDummy", "state", "HeatingOFF" ) eq "HeatingOFF" ) {
fhem "set HeizungsThermostatBadezimmer_Clima controlManu off";
} else {
fhem "set HeizungsThermostatBadezimmer_Clima controlMode auto";
}
fhem "set Nexus7Wohnzimmer volume 6; sleep 1; set Nexus7Wohnzimmer ttsMsg Das Badezimmer wurde auf $isttemp Grad vorgeheizt und kann nun mollig warm verwendet werden.";
fhem "set DesireHD_Flur volume 6; sleep 1; set DesireHD_Flur ttsMsg Das Badezimmer wurde auf $isttemp Grad vorgeheizt und kann nun mollig warm verwendet werden." if( ReadingsVal( "AnniKraussStr", "residentsAsleep", 1 ) == 0 );
fhem "set Nexus7Isabel volume 6; sleep 1; set Nexus7Isabel ttsMsg Das Badezimmer wurde auf $isttemp Grad vorgeheizt und kann nun mollig warm verwendet werden." if( Value( "rr_Isabel" ) eq "home" || Value( "rr_Isabel" ) eq "awoken" );
fhem "set HeizungsThermostatBadezimmer_Clima burstXmit";
oldVolume( "Nexus7Wohnzimmer", "restore"); oldVolume( "DesireHD_Flur", "restore"); oldVolume( "Nexus7Isabel", "restore");
}
sub BadezimmerVorheizen($$) {
my ($name,$event) = @_;
oldVolume("Nexus7Wohnzimmer","safe");
oldVolume("Nexus7Isabel","safe");
oldVolume("DesireHD_Flur","safe");
my $solltemp = ReadingsVal( "BadezimmerVorheizenDummy", "desired-temp", "21.0" );
my $isttemp = ReadingsVal( "TempFeuchtSensorBadezimmer", "temperature", "Fegefeuer" );
if( $name eq "BadezimmerVorheizenDummy" ) {
if( ReadingsVal( "setTemperaturTemplateDummy", "state", "HeatingOFF" ) ne "Summer" ) {
if( ReadingsVal( "TempFeuchtSensorBadezimmer", "temperature", "19.0" ) < "$solltemp" && Value( "structureFensterTuerBadezimmer" ) eq "geschlossen" && ReadingsVal( "setTemperaturTemplateDummy", "state", "HeatingOFF" ) ne "Summer" ) {
fhem "set HeizungsThermostatBadezimmer_Clima controlManu $solltemp; set HeizungsThermostatBadezimmer_Clima burstXmit";
fhem "set Nexus7Wohnzimmer volume 6; sleep 1; set Nexus7Wohnzimmer ttsMsg Das Badezimmer wird jetzt auf $solltemp Grad vorgeheizt.";
fhem "set DesireHD_Flur volume 6; sleep 1; set DesireHD_Flur ttsMsg Das Badezimmer wird jetzt auf $solltemp Grad vorgeheizt." if( ReadingsVal( "AnniKraussStr", "residentsAsleep", 1 ) == 0 );
fhem "set Nexus7Isabel volume 8; sleep 1; set Nexus7Isabel ttsMsg Das Badezimmer wird nun auf $solltemp Grad vorgeheizt." if( Value( "rr_Isabel" ) eq "home" || Value( "rr_Isabel" ) eq "awoken" );
}
elsif( Value( "structureFensterTuerBadezimmer" ) eq "offen" ) {
my @monitored=devspec2array("(.*KontaktBadZ.*):FILTER=STATE!=closed");
my $cnt_devs=@monitored;
my $i = 0;
my $msgtext = "";
foreach(@monitored) {
$msgtext .= AttrVal($_,"alias",$_);
if ($i < $cnt_devs - 2) {
$msgtext .= ", ";
}
if ($i == $cnt_devs - 2) {
$msgtext .= " und ";
}
$i++;
}
fhem "set Nexus7Wohnzimmer volume 6; sleep 1; set Nexus7Wohnzimmer ttsMsg ".$msgtext." ist noch offen. Bitte zu erst schließen und dann das vorheizen erneut probieren." if( $cnt_devs > 0 );
fhem "set DesireHD_Flur volume 6; sleep 1; set DesireHD_Flur ttsMsg ".$msgtext." ist noch offen. Bitte zu erst schließen und dann das vorheizen erneut probieren." if( $cnt_devs > 0 && ReadingsVal( "AnniKraussStr", "residentsAsleep", 1 ) == 0 );
#fhem "setreading BadezimmerVorheizenDummy canceled 1";
fhem "set BadezimmerVorheizenDummy off";
} else {
fhem "set Nexus7Wohnzimmer volume 6; sleep 1; set Nexus7Wohnzimmer ttsMsg Die Temperatur im Badezimmer beträgt $isttemp Grad und es ist somit warm genug.";
fhem "set DesireHD_Flur volume 6; sleep 1; set DesireHD_Flur ttsMsg Die Temperatur im Badezimmer beträgt $isttemp Grad und es ist somit warm genug." if( ReadingsVal( "AnniKraussStr", "residentsAsleep", 1 ) == 0 );
#fhem "setreading BadezimmerVorheizenDummy canceled 1";
fhem "set BadezimmerVorheizenDummy off";
}
} else {
fhem "set Nexus7Wohnzimmer volume 6; sleep 1; set Nexus7Wohnzimmer ttsMsg Es ist Sommer und die Heizung somit ausgeschalten.";
fhem "set DesireHD_Flur volume 6; sleep 1; set DesireHD_Flur ttsMsg Es ist Sommer und die Heizung somit ausgeschalten." if( ReadingsVal( "AnniKraussStr", "residentsAsleep", 1 ) == 0 );
#fhem "setreading BadezimmerVorheizenDummy canceled 1";
fhem "set BadezimmerVorheizenDummy off";
}
}
if( $name eq "TempFeuchtSensorBadezimmer" && ReadingsVal( "TempFeuchtSensorBadezimmer", "temperature", "25.0" ) >= "$solltemp" ) {
fhem "set BadezimmerVorheizenDummy off";
}
oldVolume( "Nexus7Wohnzimmer", "restore"); oldVolume( "DesireHD_Flur", "restore"); oldVolume( "Nexus7Isabel", "restore");
}
1;
oh das sieht mir sehr kompliziert aus. mit 99myutils hatte ich nun noch nie Berührung.
Da brauche ich nun wohl Zeit zum reinlesen. Danke für dein Beispiel, damit kann ich nun mal etwas lernen wenn ich es denn verstehe :)
Das sieht eigentlich nur so aus. Im Grunde ist es ähnlich wie Dein DOIF Konstrukt.
Es werden Devices getriggert und danach Abfragen gestartet. Sind bestimmte Bedingungen erfüllt wird geschälten.
Hier wird einfach das Badezimmer auf eine vorher ausgewählte Wunschtemperatur vorgeheizt, damit wir unseren Junior Abends waschen können.
In meinem Beispiel wird ein Dummy auf on und off getriggert und das Reading temperature vom Heizungsthermostaten im Bad.
Wird der Dummy auf on gesetzt wird überprüft ob überhaupt Heizzeit ist, also Sommer oder Winter, ist Winter wird geschaut ob die die eingestellte Wunschtemperatur höher ist wie die momentan gemessene. Dann wird geschaut ob die Struktur für Badezimmer Fenster und Tür den Status geschlossen hat. Ist das alles erfüllt wird die Heizung höher gedreht und eine Durchsage in der Wohnung erfolgt.
Grüße
Ok damit setze ich mich mal auseinander.
Kannst du mir evtl noch dabei helfen wie ich die Abfrage des bestehenden DOIF so verändere, dass der Lichtwert nicht immer wieder auf die Scene gesetzt wird? Also das Problem ist, dass ich bei Play den Dimmer verändere, dieser dann aber gleich wieder auf den Wert der Scene gesetzt wird. Kann das DOIF so verändert werden, dass die Scenen nur einmal beim eintreten der Definition gesetzt werden und nicht dauernd abgefragt wird?
Also ausgehend von Deinem Urspruns DOIF setzt Du bei play doch eine gesamte Scene und änderst nicht nur den Wert eines Devices.
Aber wenn ich das richtig verstehe, möchtest Du wenn Play aktiv ist und deine Playscene somit gesetzt ist den Wert eines Devices ändern.
Machst du nun Pause setzt also deine Pausen Scene wird ja der Wert des einen Devices wieder über schrieben, das soll aber nicht geschehen, korrekt? Bzw wenn das geschieht soll sofort der Wert wieder zurück gesetzt werden. Habe ich das verstanden?
Also ich habe 2 Anliegen. 1x Wunsch und 1x Problem :)
Das Problem:
Wenn der Wert eines Devices (hier Dimmer) geändert wird, welches über eine Scene auf einen bestimmten Wert gesetzt ist. Dann springt der Wert automatisch wieder auf den Wert der Scene. Das Log zeigt, dass eine andauerende Abfrage der Scenenwerte erfolgt. Wie kann ich das unterbinden? Es reicht doch die Werte der Scene einmalig nach dem Trigger (hier Play, Pause, Stop) einzustellen.
So sieht es im Log aus:
2016.03.31 21:57:58 3: WzKaminLED RGBW LD382A dim 0 3
2016.03.31 21:57:58 3: WzKaminLED set HSV 26, 71, 0 with ramp: 3, flags:
2016.03.31 21:57:58 3: CUL_HM set WzKoeter off
2016.03.31 21:57:58 1: PERL WARNING: Argument "set_8" isn't numeric in division (/) at (eval 16091) line 1.
2016.03.31 21:57:58 3: CUL_HM set WzSofaLicht 8
2016.03.31 21:57:59 3: WzKaminLED RGBW LD382A set off 3
2016.03.31 21:57:59 3: WzKaminLED RGBW LD382A dim 0 3
2016.03.31 21:57:59 3: WzKaminLED set HSV 26, 71, 0 with ramp: 3, flags:
2016.03.31 21:57:59 3: CUL_HM set WzKoeter off
2016.03.31 21:57:59 1: PERL WARNING: Argument "set_8" isn't numeric in division (/) at (eval 16095) line 1.
2016.03.31 21:57:59 3: CUL_HM set WzSofaLicht 8
2016.03.31 21:57:59 3: WzKaminLED RGBW LD382A set off 3
2016.03.31 21:57:59 3: WzKaminLED RGBW LD382A dim 0 3
2016.03.31 21:57:59 3: WzKaminLED set HSV 26, 71, 0 with ramp: 3, flags:
2016.03.31 21:57:59 3: CUL_HM set WzKoeter off
2016.03.31 21:57:59 1: PERL WARNING: Argument "set_8" isn't numeric in division (/) at (eval 16099) line 1.
2016.03.31 21:57:59 3: CUL_HM set WzSofaLicht 8
2016.03.31 21:57:59 3: WzKaminLED RGBW LD382A set off 3
2016.03.31 21:57:59 3: WzKaminLED RGBW LD382A dim 0 3
2016.03.31 21:57:59 3: WzKaminLED set HSV 26, 71, 0 with ramp: 3, flags:
2016.03.31 21:57:59 3: CUL_HM set WzKoeter off
2016.03.31 21:57:59 1: PERL WARNING: Argument "set_8" isn't numeric in division (/) at (eval 16103) line 1.
2016.03.31 21:57:59 3: CUL_HM set WzSofaLicht 8
2016.03.31 21:58:45 3: WzKaminLED RGBW LD382A set off 3
2016.03.31 21:58:45 3: WzKaminLED RGBW LD382A dim 0 3
2016.03.31 21:58:45 3: WzKaminLED set HSV 26, 71, 0 with ramp: 3, flags:
2016.03.31 21:58:45 3: CUL_HM set WzKoeter off
2016.03.31 21:58:45 1: PERL WARNING: Argument "set_8" isn't numeric in division (/) at (eval 16123) line 1.
2016.03.31 21:58:45 3: CUL_HM set WzSofaLicht 8
2016.03.31 21:58:45 3: WzKaminLED RGBW LD382A set off 3
2016.03.31 21:58:45 3: WzKaminLED RGBW LD382A dim 0 3
2016.03.31 21:58:45 3: WzKaminLED set HSV 26, 71, 0 with ramp: 3, flags:
2016.03.31 21:58:45 3: CUL_HM set WzKoeter off
2016.03.31 21:58:45 1: PERL WARNING: Argument "set_8" isn't numeric in division (/) at (eval 16127) line 1.
2016.03.31 21:58:45 3: CUL_HM set WzSofaLicht 8
2016.03.31 21:58:45 3: WzKaminLED RGBW LD382A set off 3
2016.03.31 21:58:45 3: WzKaminLED RGBW LD382A dim 0 3
2016.03.31 21:58:45 3: WzKaminLED set HSV 26, 71, 0 with ramp: 3, flags:
2016.03.31 21:58:45 3: CUL_HM set WzKoeter off
Das zeigt es ist mir grade unmöglich individuelle Werte abseits der Scenen Einstellung zu treffen. Das DOIF scheint permanent abgefragt zu werden und ich weiß nicht warum.
Der Wunsch:
Ist das was wir die letzten Beiträge besprochen haben. Ich möchte den Wert des Dimmers auch individuell Einstellen können während Play. Wenn dann auf Pause geschaltet wird kann die Pausen Scene ruhig gesetzt werden. Aber wenn dann wieder auf Play geschaltet wird, wird ja der PlayScenenWert eingestellt. Das soll nicht passieren wenn vorher der Wert bei Play geändert wurde. Dann soll der vorher individuell eingestellte Wert wieder eingestellt werden.
Wenn dann auf Stop geschaltet wird (Film zu Ende oder abgebrochen) soll dann die Ausgangssituation wieder aktiv sein. Also das Spiel fängt von vorne an.
Das soll verhindern, dass wir andauernd (wenn es die Situation halt verlangt) den Dimmer nachregeln müssen wenn Play=Pause=Play eintrifft.
Ok das habe ich nun verstanden.
Ich muss da heute Abend mal testen wieso der Wert eines Devices immer wieder überschrieben wird bei einer scene. Kenne das so nicht und eigentlich Trigger Dein DOIF wenn ich das richtig sehe das Device LightScene ja nicht mal. Oder?
Nee es kann auch von dem LightScene Modul kommen fällt mir grade auf. Wenn es vom DOIF kommt müsste ja die Scene im Log zu sehen sein.
Schon mal vielen Dank für deine Hilfe und Zeit die du für mich aufwendest! :)
Also ich habe das mal getestet. Bei mir stellt sich da nichts zurück. Ich stelle ne Szene ein und ändere eine Lampe. Die bleibt so die ganze Zeit. Sehr komisch.
Ich habe nun bei dem Kodi Modul event-on-change eingestellt. Ich habe es noch nicht getestet aber dachte mir durch das Fehlen dieses attr wurde der status konstant aktualisiert was dann das doif auslöst was dann wiederum lightscene auslöst. Ist nur ein Gedanke aber könnte doch sein, oder?
Es ist ein Anfang. Ich überlege immer noch wie wir das mir Deinem Licht mache können. Was genau für ein System ist die Lampe? Hue oder was?
Ambesten wir machen das so das wir über ein Notify die Änderung des Lichts in ein Dummy schreiben, das aber nur wenn der Kodi play hat. Wir müssen mal schauen was wir da brauchen. Am besten Du schaltest die Lampe mal so wie sie leuchten soll und macht dann ein list.
Also das envent-on-change reading beim Kodi Modul war es! Nun wird nur einmal der scenen wert aus dem DOIF gesetzt. Schon mal einen Schritt weiter :)
Problem jetzt: Es ändert sich nur einmal. Pause und Stopp sind nun ohne Funktion... Obwohl Pause im Reading des Kodi Moduls steht bleibt das DOIF bei Playing stehen. Erst wenn ich das event-on-change wieder raus nehme ändert sich das reading des DOIF wieder.
Das ist ein Homematic HM-LC-DIM1T-FM Dimmer.
Wie hast Du denn das event-on-change-reading gesetzt?
Naja einfach attr event-on-change 1
Damit wird gar kein Event mehr aus gelöst. Mach mal statt 1
.*
Dann werden bei allen Readings bei Änderung ein Event ausgelöst. aber nur bei Änderung
Nee mit .* verhält sich das so als hätte ich das Attribut gar nicht gesetzt.
Das müssen wir es auf ein oder zwei Readings eingrenzen. Mach mal ein list vom Device und poste hier
Also das ist das List vom Dimmer
Internals:
DEF 395111
HMLAN1_MSGCNT 172
HMLAN1_RAWMSG E395111,0000,33CC8779,FF,FFBB,A4A4103951112864FE06011000
HMLAN1_RSSI -69
HMLAN1_TIME 2016-04-01 22:51:36
HMUSB_MSGCNT 167
HMUSB_RAWMSG E395111,0000,7A5DC542,FF,FFBD,A4A4103951112864FE06011000
HMUSB_RSSI -67
HMUSB_TIME 2016-04-01 22:51:36
IODev HMLAN1
LASTInputDev HMUSB
MSGCNT 339
NAME WzSofaLicht
NR 56
NTFY_ORDER 50-WzSofaLicht
STATE 8
TYPE CUL_HM
lastMsg No:A4 - t:10 s:395111 d:2864FE 06011000
peerList WzSofaDimmer,3041F001,3041F002,self01,
protLastRcv 2016-04-01 22:51:36
protSnd 165 last_at:2016-04-01 22:51:33
protState CMDs_done
rssi_HMLAN1 avg:-66.57 min:-68 max:-65 lst:-66 cnt:69
rssi_HMUSB avg:-69.95 min:-71 max:-69 lst:-70 cnt:45
rssi_at_HMLAN1 avg:-69.46 min:-72 max:-68 lst:-69 cnt:172
rssi_at_HMUSB avg:-67.53 min:-69 max:-66 lst:-67 cnt:167
Readings:
2016-04-01 22:51:29 CommandAccepted yes
2015-11-09 16:02:14 D-firmware 2.6
2015-11-09 16:02:14 D-serialNr MEQ0082193
2016-03-31 23:01:29 PairedTo 0x2864FE
2016-02-13 20:02:19 R-3041F001-lgActionTypeDim downDim
2016-02-13 20:02:19 R-3041F001-lgOnLevel 100 %
2016-02-13 20:02:19 R-3041F001-shActionTypeDim jmpToTarget
2016-02-13 20:02:19 R-3041F001-shOnLevel 100 %
2016-02-13 20:02:21 R-3041F002-lgActionTypeDim upDim
2016-02-13 20:02:21 R-3041F002-lgOnLevel 100 %
2016-02-13 20:02:21 R-3041F002-shActionTypeDim jmpToTarget
2016-02-13 20:02:21 R-3041F002-shOnLevel 100 %
2015-11-15 23:32:26 R-WzSofaDimmer-lgActionTypeDim toggelDim
2015-11-15 23:32:26 R-WzSofaDimmer-lgOnLevel 100 %
2015-11-15 23:32:26 R-WzSofaDimmer-shActionTypeDim jmpToTarget
2015-11-15 23:36:50 R-WzSofaDimmer-shOnLevel 20 %
2015-11-06 19:16:26 R-pairCentral 0x2864FE
2015-11-06 19:16:27 R-powerUpAction off
2016-02-13 20:02:22 R-self01-lgActionTypeDim toggelDim
2016-02-13 20:02:22 R-self01-lgOnLevel 20 %
2015-11-15 15:00:42 R-self01-shActionTypeDim jmpToTarget
2016-02-13 20:02:22 R-self01-shOnLevel 20 %
2016-03-31 23:01:29 RegL_00. 02:81 0A:28 0B:64 0C:FE 15:05 16:00 00:00
2016-03-31 23:01:29 RegL_01. 30:06 32:50 33:64 34:4B 35:50 56:00 57:24 00:00
2016-03-31 23:01:33 RegL_03.3041F001 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:44 0C:54 0D:64 0E:20 0F:00 10:14 11:C8 12:0A 13:05 14:05 15:00 16:C8 17:0A 18:0A 19:04 1A:04 81:00 82:00 83:00 84:32 85:64 86:00 87:0A 88:00 89:FF 8A:A5 8B:44 8C:54 8D:64 8E:20 8F:00 90:14 91:C8 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 00:00
2016-03-31 23:01:35 RegL_03.3041F002 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:12 0C:22 0D:23 0E:20 0F:00 10:14 11:C8 12:0A 13:05 14:05 15:00 16:C8 17:0A 18:0A 19:04 1A:04 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:24 8B:12 8C:22 8D:23 8E:20 8F:00 90:14 91:C8 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 00:00
2016-03-31 23:01:32 RegL_03.WzSofaDimmer 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:14 0C:52 0D:63 0E:20 0F:00 10:14 11:28 12:0A 13:05 14:05 15:00 16:C8 17:0A 18:0A 19:04 1A:04 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:26 8B:14 8C:52 8D:63 8E:20 8F:00 90:14 91:C8 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 00:00
2016-03-31 23:01:36 RegL_03.self01 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:14 0C:52 0D:63 0E:20 0F:00 10:14 11:28 12:0A 13:05 14:05 15:00 16:64 17:0A 18:0A 19:04 1A:04 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:26 8B:14 8C:52 8D:63 8E:20 8F:00 90:14 91:28 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 00:00
2016-04-01 22:51:33 deviceMsg 8 (to CCU)
2016-04-01 22:51:33 dim stop:8
2016-04-01 22:51:33 level 8
2016-04-01 22:28:28 levelMissed desired:8
2016-04-01 22:51:33 overheat off
2016-04-01 22:51:33 overload off
2016-04-01 22:51:33 pct 8
2016-04-01 13:47:01 peerList WzSofaDimmer,3041F001,3041F002,self01,
2016-03-31 23:01:27 powerOn 2016-03-31 23:01:27
2016-04-01 22:51:33 recentStateType info
2016-04-01 22:51:33 reduced off
2016-02-27 00:31:20 sabotageAttack_ErrIoAttack cnt 1
2016-04-01 22:51:33 state 8
2016-04-01 22:51:33 timedOn off
2016-04-01 19:58:52 trigLast WzSofaDimmer:short
2015-12-29 23:32:31 trig_HM_3041F0_Btn_01 short
2015-12-29 23:32:31 trig_HM_3041F0_Btn_02 long
2016-04-01 19:58:52 trig_WzSofaDimmer short
Helper:
HM_CMDNR 164
cSnd 112864FE3951110201100320FFFF,112864FE3951110201100320FFFF
dlvlCmd ++A0112864FE3951110201100320FFFF
mId 0059
rxType 1
Dir:
cur stop
rct down
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +395111,00,00,00
nextSend 1459543896.89211
rxt 0
vccu CCU
p:
395111
00
00
00
Mrssi:
mNo A4
Io:
HMLAN1 -67
HMUSB -67
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
prs 1
Rpt:
IO HMLAN1
flg A
ts 1459543896.79592
ack:
HASH(0x25cd3e0)
A480022864FE39511100
Rssi:
Hmlan1:
avg -66.5797101449275
cnt 69
lst -66
max -65
min -68
Hmusb:
avg -69.9555555555555
cnt 45
lst -70
max -69
min -71
At_hmlan1:
avg -69.4651162790698
cnt 172
lst -69
max -68
min -72
At_hmusb:
avg -67.5389221556886
cnt 167
lst -67
max -66
min -69
Shadowreg:
Attributes:
IODev HMLAN1
IOgrp CCU
autoReadReg 4_reqStatus
devStateIcon { my $mystate = Value($name);my $roundVal = 0;if ($mystate eq "off") { $roundVal = 0 }elsif ($mystate eq "on") { $roundVal = 100 }else { $roundVal = int(($mystate / 10.0) + 0.5) * 10}if ($roundVal == 0) { $roundVal = "00" }my $col255 = int($roundVal * 2.55 + 0.5);my $hexCol = uc sprintf("%02x%02x00",$col255,$col255);return ".*:light_light_dim_$roundVal\@$hexCol";}
expert 2_full
firmware 2.6
group Licht
icon light_control
lightSceneParamsToSave 1
model HM-LC-DIM1T-FM
peerIDs 00000000,2864FE01,3041F001,3041F002,39511101,
room Wohnzimmer
serialNr MEQ0082193
subType dimmer
userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
webCmd pct:on:off
Von Kodi:
nternals:
CHANGED
DEF 192.168.10.31 tcp kodi 1881kodi
DeviceName 192.168.10.31:9090
FD 12
Host 192.168.10.31
LAST_RECV 1459543948.86173
NAME WzHTPC
NR 129
NextID 529
PARTIAL
Port 9090
Protocol tcp
STATE opened
TYPE XBMC
Pendingevents:
219
270
279
284
297
310
373
396
428
Pendingplayercmds:
119:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
Readings:
2016-04-01 22:52:28 3dfile off
2016-04-01 22:52:28 currentAlbum
2016-04-01 22:52:28 currentArtist
2016-04-01 22:52:28 currentMedia smb://THEFAB/Serien/Weeds (2005)/season vii/Weeds - Kleine Deals unter Nachbarn - 7x13 - Do Her Don't Do Her.avi
2016-04-01 22:36:59 currentOriginaltitle
2016-04-01 22:36:59 currentShowtitle Weeds - Kleine Deals unter Nachbarn
2016-04-01 22:52:28 currentTitle Im Fokus
2016-04-01 22:52:28 currentTrack
2016-04-01 22:36:59 episode 13
2016-04-01 22:36:59 episodeid 4203
2016-04-01 22:52:28 fullscreen on
2016-04-01 22:52:28 id 4203
2016-04-01 22:52:28 label Im Fokus
2016-04-01 22:36:59 movieid
2016-04-01 22:52:28 mute off
2016-04-01 22:52:28 name Kodi
2016-04-01 22:52:28 partymode off
2016-04-01 22:52:28 playStatus playing
2016-04-01 22:36:59 playlist
2016-04-01 22:52:28 repeat off
2016-04-01 22:52:28 sd_audio0channels 6
2016-04-01 22:52:28 sd_audio0codec ac3
2016-04-01 22:52:28 sd_audio0language
2016-04-01 22:52:28 sd_audio1channels 6
2016-04-01 22:52:28 sd_audio1codec ac3
2016-04-01 22:52:28 sd_audio1language
2016-04-01 22:52:28 sd_video0aspect 1.77799999713898
2016-04-01 22:52:28 sd_video0codec divx 4
2016-04-01 22:52:28 sd_video0duration 1638
2016-04-01 22:52:28 sd_video0height 402
2016-04-01 22:52:28 sd_video0stereomode
2016-04-01 22:52:28 sd_video0width 716
2016-04-01 22:36:59 season 7
2016-04-01 22:52:28 shuffle off
2016-04-01 22:52:28 skin Aeon Nox(skin.aeon.nox.5)
2016-04-01 22:36:59 songid
2016-04-01 22:52:28 speed 1
2016-04-01 21:58:14 state opened
2016-04-01 22:52:28 stereoscopicmode off
2016-04-01 21:58:14 system wake
2016-04-01 22:52:28 thumbnail image://smb%3a%2f%2fTHEFAB%2fSerien%2fWeeds%20(2005)%2fseason%20vii%2fWeeds%20-%20Kleine%20Deals%20unter%20Nachbarn%20-%207x13%20-%20Do%20Her%20Don%27t%20Do%20Her-thumb.jpg/
2016-04-01 22:52:28 time 00:15:28.837
2016-04-01 22:52:28 totaltime 00:27:18.000
2016-04-01 22:52:28 tvshowid 91
2016-04-01 22:52:28 type episode
2016-04-01 22:52:28 version 15.2-20151019-02e7013 stable
2016-04-01 22:36:26 videolibrary update
2016-04-01 22:52:28 volume 100
2016-04-01 22:52:28 year 0
Attributes:
devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
event-on-change-reading .*
group Multimedia
icon it_remote
room Wohnzimmer
updateInterval 60
webCmd shutdown
Vom DOIF
Internals:
CHANGED
DEF ([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "playing" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene SchauModus)
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "paused" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene PausenModus)
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "stopped" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene LichtHell)
NAME WzKodiLichtsteuerung
NR 93
NTFY_ORDER 50-WzKodiLichtsteuerung
STATE cmd_1
TYPE DOIF
Readings:
2016-04-01 22:53:28 Device WzHTPC
2016-04-01 22:53:28 cmd_event WzHTPC
2016-04-01 22:53:28 cmd_nr 1
2016-04-01 20:10:48 e_Tageslicht_STATE dunkel
2016-04-01 22:53:28 e_WzHTPC_currentMedia smb://THEFAB/Serien/Weeds (2005)/season vii/Weeds - Kleine Deals unter Nachbarn - 7x13 - Do Her Don't Do Her.avi
2016-04-01 22:53:28 e_WzHTPC_playStatus playing
2016-04-01 22:53:28 e_WzHTPC_type episode
2016-04-01 22:53:28 state cmd_1
Condition:
0 InternalDoIf($hash,'Tageslicht','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) =~ "dunkel" and ReadingValDoIf($hash,'WzHTPC','playStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "playing" and ReadingValDoIf($hash,'WzHTPC','currentMedia','','',AttrVal($hash->{NAME},'notexist',undef)) ne "" and (ReadingValDoIf($hash,'WzHTPC','type','','',AttrVal($hash->{NAME},'notexist',undef)) eq "episode" or ReadingValDoIf($hash,'WzHTPC','type','','',AttrVal($hash->{NAME},'notexist',undef)) eq "movie")
1 InternalDoIf($hash,'Tageslicht','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) =~ "dunkel" and ReadingValDoIf($hash,'WzHTPC','playStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "paused" and ReadingValDoIf($hash,'WzHTPC','currentMedia','','',AttrVal($hash->{NAME},'notexist',undef)) ne "" and (ReadingValDoIf($hash,'WzHTPC','type','','',AttrVal($hash->{NAME},'notexist',undef)) eq "episode" or ReadingValDoIf($hash,'WzHTPC','type','','',AttrVal($hash->{NAME},'notexist',undef)) eq "movie")
2 InternalDoIf($hash,'Tageslicht','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) =~ "dunkel" and ReadingValDoIf($hash,'WzHTPC','playStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "stopped" and ReadingValDoIf($hash,'WzHTPC','currentMedia','','',AttrVal($hash->{NAME},'notexist',undef)) ne "" and (ReadingValDoIf($hash,'WzHTPC','type','','',AttrVal($hash->{NAME},'notexist',undef)) eq "episode" or ReadingValDoIf($hash,'WzHTPC','type','','',AttrVal($hash->{NAME},'notexist',undef)) eq "movie")
Devices:
0 Tageslicht WzHTPC
1 Tageslicht WzHTPC
2 Tageslicht WzHTPC
all Tageslicht WzHTPC
Do:
0:
0 set WzHeimkinoLicht scene SchauModus
1:
0 set WzHeimkinoLicht scene PausenModus
2:
0 set WzHeimkinoLicht scene LichtHell
3:
Helper:
event time: 00:16:28.855
globalinit 1
last_timer 0
sleeptimer -1
timerdev WzHTPC
timerevent time: 00:16:28.855
triggerDev WzHTPC
timerevents:
time: 00:16:28.855
triggerEvents:
time: 00:16:28.855
Internals:
0 Tageslicht:STATE
1 Tageslicht:STATE
2 Tageslicht:STATE
all Tageslicht:STATE
Itimer:
Readings:
0 WzHTPC:playStatus WzHTPC:currentMedia WzHTPC:type
1 WzHTPC:playStatus WzHTPC:currentMedia WzHTPC:type
2 WzHTPC:playStatus WzHTPC:currentMedia WzHTPC:type
all WzHTPC:playStatus WzHTPC:currentMedia WzHTPC:type
Regexp:
0:
1:
2:
All:
State:
Trigger:
Attributes:
do always
event-on-change-reading .*
room Wohnzimmer
Von LightScene
Internals:
DEF WzKaminLED WzKoeter WzSofaLicht WzRolladenGarten WzRolladenLinks WzRolladenTerrasse WzRolladenTuer FlurRolladen
HAS_DataDumper 1
HAS_JSON 1
NAME WzHeimkinoLicht
NR 145
NTFY_ORDER 50-WzHeimkinoLicht
STATE SchauModus
TYPE LightScene
Content:
FlurRolladen 1
WzKaminLED 1
WzKoeter 1
WzRolladenGarten 1
WzRolladenLinks 1
WzRolladenTerrasse 1
WzRolladenTuer 1
WzSofaLicht 1
Readings:
2016-04-01 22:53:28 state SchauModus
Scenes:
3dmodus:
FlurRolladen down
WzKaminLED off
WzKoeter off
WzRolladenGarten down
WzRolladenLinks down
WzRolladenTerrasse down
WzRolladenTuer down
WzSofaLicht off
Lichthell:
WzKaminLED on
WzKoeter on
WzSofaLicht 19
Pausenmodus:
WzKaminLED dim 30
WzKoeter off
Wzsofalicht:
icon light_light_dim_20@333300
state 15
Schaumodus:
WzKaminLED off
WzKoeter off
Wzsofalicht:
icon light_light_dim_10@1A1A00
state 8
devices:
FlurRolladen
WzKaminLED
WzKoeter
WzRolladenGarten
WzRolladenLinks
WzRolladenTerrasse
WzRolladenTuer
WzSofaLicht
Attributes:
group Licht
icon status_comfort
room Wohnzimmer
Probiere mal
event-on-change-reading playStatus
sieht gut aus bis jetzt. 8)
Dann schauen wir morgen wie wir mit Deiner Lampe weiter machen.
Schalte sie mal wie sie leuchten soll und dann gib mir mal ein list davon.
Super :) Ich kann nur ein Beispiel liefern, da der Wert halt individuell sein soll. Ich kann es aber sicher auch eingrenzen. Also sagen wir Play hat einen Wert von 8 und dieser wird dann auf 15-20 geändert. Pause hat einen Wert von 15. Licht hell 19
Ok was hältst Du davon. Wir machen einen Dummy. Ist dieser Dummy gesetzt soll nach dem die LightScene auf SchauModus steht der Dimmer wieder auf einen vorher festgelegten Wert gehen.
Es muss aber immer vorher festgelegt werden ob oder ob nicht hochgedimmt werden soll. Es muss also immer der Dummy aktiviert werden. Wäre das ok für Dich?
Hallo Dersch,
Du nutzt das Attribut "Do-Always". D.h. jedes Mal wenn sich ein Reding beim Device [WzHTPC] aktualisiert (muss nicht geändert werden, nur aktualisiert), wird Dein Modul getriggert.
Darum spingt auch dein Dimmerwert, nachdem Du ihn manuell während der Filmwiedergabe verstellt hast, kurze darauf wieder auf den "Szenenwert" zurück.
Daher solltest Du das Do-Always mal löschen.
Alternativ könntest Du sonst im Device [WzHTPC] durch einEvent-on-change-reading das "Triggern" begrenzen.
Nimm doch im ersten Schritt mal das Do-Always raus.
Viele Grüße,
Max
Max hat Recht. Das habe ich total übersehen. Vielen Dank Max.
Es ist wirklich nötig das Du das raus nimmst. Und dann kannst auch das event-on-change-reading wieder auf .* setzen.
Oh Super Tipp!! Danke! :)
Habe nun im DOIF das do always raus und beim WzHTPC das event-on-change wieder von playstatus auf .*
@cooltux: das mit dem Dummy können wir gerne machen. Ich erde schon sehen ob es das ist was ich möchte und lerne so oder so dabei :) Du meinst dann das Dummy muss manuell gesetzt werden wenn Werte abseits der Scenen aktiv sein sollen?
Ja genau. Es soll eigentlich nur immer als Abfragepunkt her halten.
Ist der Dummy aus on gesetzt soll Lampe X immer Wert y bekommen.
Eigentlich simpel. Ein Notify triggert WzHTPC:playStatus.play oder so.
Im Notify steht dann
if dummy on set lampe 18
Weisst wie ich das meine?
Grob ja :) ich verstehe nur noch nicht den zusammenhang zum doif ;) das wird dann bei gesetztem dummy disabled? Wäre blöd da das doif ja mit der scene andere devices ansteuert und es bei dem individuellen wert nur um ein device geht was aber halt auch in der scene definiert ist.
Nein Dein DOIF macht genau das was es machen soll. Und es wird auch wenn der Status play kommt erstmal die Lampe geschalten um dann gleich danach wieder zurück zu schalten.
Was mir aber gerade noch eingefallen ist und das ist viel besser. Mach eine zweite play Scene, der einzige Unterschied die Lampe welche heller gedimmt sein soll gibt Du den neuen Dimmwert.
Dann machen wir es nur mit deinem doif. Ist dummy on DOELSEIF mit heller scene ist dummy off DOELSEIF mit dunkler scene. Du hast dann quasi zwei DOELSEIF für play.
hmm das klingt auch gut. Kannst du mir kurz aufzeichnen wie du dir den Dummy vorstellst? Damit wir auf einer Ebene sind :)
Ich habe da keine Vorstellung. Ist ja Dein Dummy. Kannst ihn gelb oder grün machen ;D ;D
Einfach einen Dummy mit passendem Namen
und als attribut gibt Du ihm ein setList on:noArg off:noArg
Fertig. Mehr brauchen wir nicht. Alles was wir brauchen ist ein on oder off im state des dummys
Und bei Deinem DOIF play wertest Du einfach den dummy mit aus
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "playing" and [DummyName] eq "off" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene SchauModus)
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "playing" and [DummyName] eq "on" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene SchauModusBISSCHENHÖHERLAMPESTRICKEN)
DOELESIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "paused" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene PausenModus)
DOELSEIF
([Tageslicht] =~ "dunkel" and [WzHTPC:playStatus] eq "stopped" and [WzHTPC:currentMedia] ne "" and ([WzHTPC:type] eq "episode" or [WzHTPC:type] eq "movie"))
(set WzHeimkinoLicht scene LichtHell)
Ach jetzt habe ich es verstanden, vielen Dank! :) ich brauche wohl noch ein wenig mehr Praxiserfahrung hier ;)
Berichte dann mal wenn Du soweit bist :)
Grüße
Sorry für die späte Antwort. Es funktioniert wie gewollt! :) vielen Dank für deine Hilfe.
Ich habe noch etwas gestöbert und diese Beiträge gefunden:
https://forum.fhem.de/index.php?topic=32387.0
https://forum.fhem.de/index.php?topic=32775.0
Der macht ja eigentlich fast genau das was ich ursprünglich wollte (vorherigen wert speichern)
Ich verstehe nur nicht mit welchem Modul? Sein script mit den my ... Das verstehe ich nicht so ganz.
Hast du da eine Erklärung für Dummies? :)
Freut mich das es funktioniert.
Das ist kein Modul. Der dort erwähnte Code wird direkt ins Notify eingetragen. Finde ich absolut nicht gut, so viel Code gehört in eine 99_myUtils Datei.
das my und dann die Variable dahinter bedeutet das eine nicht globale Variable deklariert wird. Ist Perl Programmierung.
Ah ok jetzt verstehe ich es etwas mehr. Von Pearl programmierung lasse ich aber lieber die Finger. Würde es zwar gerne aber bisher habe ich keinen Plan davon.