Ich verzweifele wieder mal am notify syntax
Ziel ist, auf einen Azimuth Wert des Twilight Moduls mit dem Namen T zu reagieren und dann einen Dummy zu schalten.
Alle Varianten, die ich in Commandref, Wiki, etc. gefunden habe führen nicht ans Ziel.
defmod Beschattung notify T:azimuth:.* \
{\
if ($EVENT > 294) \
{fhem ("set dum2 on")}\
}
defmod Beschattung notify T:azimuth:.* \
{\
if ($EVTPART1 > 294) \
{fhem ("set dum2 on")}\
}
defmod Beschattung notify T:azimuth:.* \
{\
if (ReadingsVal("T", "azimuth", "") > 294) \
{fhem ("set dum2 on")}\
}
Kann mir bitte jemand sagen wo das Problem liegt?
Mach den Eventmonitor auf, warte auf den entsrp. Event, markiere die ganze Zeile, click auf Create/Modify Device, und los.
$EVENT ist das gesamte Event. Der azimuth Wert ist eher in $EVTPART1 bzw. $EVTNUM1
Wow, die "Create/Modify Device" Funktion scheint toll zu sein.
ABER bei mir scheitert es somit offensichtlich schon am Event, denn von Twilight kommt nichts obwohl ich ein "event-on-change-reading" Attribut gesetzt hätte. Wie pack ich das richtig an? Und vor allem, so dass ich nicht zugemüllt werde sondern z.B. nur bei jedem ganzen Grad Erddrehung oder alle 2 Grad?
defmod T Twilight latitude, longitude
attr T event-on-change-reading . *
attr T room Wetter
setstate T 9
setstate T 2017-07-01 21:01:12 aktEvent ss
setstate T 2017-07-01 21:07:54 azimuth 306.91
setstate T 2017-07-01 21:07:54 compasspoint west-northwest
setstate T 2017-07-01 20:01:13 condition 0
setstate T 2017-07-01 21:07:54 elevation -1.07
setstate T 2017-07-01 21:01:12 horizon 0
setstate T 2017-07-01 21:01:12 light 3
setstate T 2017-07-01 21:01:12 nextEvent ss_civil
setstate T 2017-07-01 21:01:12 nextEventTime 21:48:44
setstate T 2017-07-01 19:22:54 sr 05:12:27
setstate T 2017-07-01 19:22:54 sr_astro 01:48:01
setstate T 2017-07-01 19:22:54 sr_civil 04:24:49
setstate T 2017-07-01 19:22:54 sr_indoor 07:25:15
setstate T 2017-07-01 19:22:54 sr_naut 03:27:05
setstate T 2017-07-01 20:01:13 sr_weather 05:12:27
setstate T 2017-07-01 19:22:54 ss 21:01:12
setstate T 2017-07-01 19:22:54 ss_astro 00:23:48
setstate T 2017-07-01 19:22:54 ss_civil 21:48:44
setstate T 2017-07-01 19:22:54 ss_indoor 18:48:31
setstate T 2017-07-01 19:22:54 ss_naut 22:46:16
setstate T 2017-07-01 20:01:13 ss_weather 21:01:12
setstate T 2017-07-01 21:01:12 state 9
setstate T 2017-07-01 21:07:54 twilight 60.7
setstate T 2017-07-01 21:07:54 twilight_weather 60.7
Bitte anonymisieren (latitude, longitude)
Bei mir funktioniert folgendes:
TL:azimuth:..*
{
if ($EVTPART1 > 300) {
fhem(Log3 $NAME, 1, "$EVTPART1")
}
}
Also bei mir geht's nicht :(
Sorry, jetzt kommen jede Menge blöde Fragen:
Passt also mein "attr T event-on-change-reading . *"?
Warum werden dann im Eventmonitor keine Events angezeigt?
Warum hast du 2 Punkte nach azimuth:? "T:azimuth:..*"
Wie kommst du auf "EVTPART1"? bei mir steht azimuth an der zweiten Stelle.
defmod Beschattung notify T:azimuth:..* \
{\
if ($EVTPART1 > 300) {\
fhem("set dum2 on")\
}\
}
attr Beschattung room Rolladen
setstate Beschattung active
setstate Beschattung 2017-07-01 21:31:07 state active
Poste mal ein "list T" und ein "list Beschattung".
EVTPART0 = erste Stelle
EVTPART1 = zweite Stelle
2 Punkte oder 1 Punkt sollte kein Unterschied machen.
Events kommen jede 5. Minute. Du musst vielleicht nur ein bisschen Geduld haben?
Hier die gewünschten Lists
Ich habe den Eventmonitor nun zehn Minuten aktiv und finde kein "azimuth"
List T
Internals:
CHANGED
CONDITION 0
DEF latitude, longitude 545766
INDOOR_HORIZON 20
LATITUDE latitude
LONGITUDE longitude
NAME T
NR 90
STATE 10
SUNPOS_OFFSET 300
SWIP 1
TYPE Twilight
VERSUCHE 0
WEATHER 0
WEATHER_HORIZON 0
Readings:
2017-07-01 21:48:44 aktEvent ss_civil
2017-07-01 22:02:54 azimuth 317.67
2017-07-01 22:02:54 compasspoint northwest
2017-07-01 20:01:13 condition 0
2017-07-01 22:02:54 elevation -7.84
2017-07-01 21:48:44 horizon -6
2017-07-01 21:48:44 light 2
2017-07-01 21:48:44 nextEvent ss_naut
2017-07-01 21:48:44 nextEventTime 22:46:16
2017-07-01 19:22:54 sr 05:12:27
2017-07-01 19:22:54 sr_astro 01:48:01
2017-07-01 19:22:54 sr_civil 04:24:49
2017-07-01 19:22:54 sr_indoor 07:25:15
2017-07-01 19:22:54 sr_naut 03:27:05
2017-07-01 20:01:13 sr_weather 05:12:27
2017-07-01 19:22:54 ss 21:01:12
2017-07-01 19:22:54 ss_astro 00:23:48
2017-07-01 19:22:54 ss_civil 21:48:44
2017-07-01 19:22:54 ss_indoor 18:48:31
2017-07-01 19:22:54 ss_naut 22:46:16
2017-07-01 20:01:13 ss_weather 21:01:12
2017-07-01 21:48:44 state 10
2017-07-01 22:02:54 twilight 23.1
2017-07-01 22:02:54 twilight_weather 23.1
Timer:
T_midnight:
HASH T
MODIFIER Midnight
NAME T_Midnight
T_sr:
DEG 0
HASH T
LIGHT 4
MODIFIER sr
NAME T_sr
NAMENEXT sr_indoor
STATE 4
SWIP 0
TIME 1498878747.03
T_sr_astro:
DEG -18
HASH T
LIGHT 1
MODIFIER sr_astro
NAME T_sr_astro
NAMENEXT sr_naut
STATE 1
SWIP 0
TIME 1498866481
T_sr_civil:
DEG -6
HASH T
LIGHT 3
MODIFIER sr_civil
NAME T_sr_civil
NAMENEXT sr
STATE 3
SWIP 0
TIME 1498875889.02
T_sr_indoor:
DEG 20
HASH T
LIGHT 5
MODIFIER sr_indoor
NAME T_sr_indoor
NAMENEXT sr_weather
STATE 5
SWIP 0
TIME 1498886715.04
T_sr_naut:
DEG -12
HASH T
LIGHT 2
MODIFIER sr_naut
NAME T_sr_naut
NAMENEXT sr_civil
STATE 2
SWIP 0
TIME 1498872425.01
T_sr_weather:
DEG 0
HASH T
LIGHT 6
MODIFIER sr_weather
NAME T_sr_weather
NAMENEXT ss_weather
STATE 6
SWIP 1
TIME 1498878747.05
T_ss:
DEG 0
HASH T
LIGHT 3
MODIFIER ss
NAME T_ss
NAMENEXT ss_civil
STATE 9
SWIP 0
TIME 1498935672.97
T_ss_astro:
DEG -18
HASH T
LIGHT 0
MODIFIER ss_astro
NAME T_ss_astro
NAMENEXT sr_astro
STATE 12
SWIP 0
TIME 1498861428
T_ss_civil:
DEG -6
HASH T
LIGHT 2
MODIFIER ss_civil
NAME T_ss_civil
NAMENEXT ss_naut
STATE 10
SWIP 0
TIME 1498938524.98
T_ss_indoor:
DEG 20
HASH T
LIGHT 4
MODIFIER ss_indoor
NAME T_ss_indoor
NAMENEXT ss
STATE 8
SWIP 0
TIME 1498927711.96
T_ss_naut:
DEG -12
HASH T
LIGHT 1
MODIFIER ss_naut
NAME T_ss_naut
NAMENEXT ss_astro
STATE 11
SWIP 0
TIME 1498941976.99
T_ss_weather:
DEG 0
HASH T
LIGHT 5
MODIFIER ss_weather
NAME T_ss_weather
NAMENEXT ss_indoor
STATE 7
SWIP 1
TIME 1498935672.95
T_sunpos:
HASH T
MODIFIER sunpos
NAME T_sunpos
Tw:
Sr:
DEG 0
LIGHT 4
NAME sr
NAMENEXT sr_indoor
STATE 4
SWIP 0
TIME 1498878747.03
Sr_astro:
DEG -18
LIGHT 1
NAME sr_astro
NAMENEXT sr_naut
STATE 1
SWIP 0
TIME 1498866481
Sr_civil:
DEG -6
LIGHT 3
NAME sr_civil
NAMENEXT sr
STATE 3
SWIP 0
TIME 1498875889.02
Sr_indoor:
DEG 20
LIGHT 5
NAME sr_indoor
NAMENEXT sr_weather
STATE 5
SWIP 0
TIME 1498886715.04
Sr_naut:
DEG -12
LIGHT 2
NAME sr_naut
NAMENEXT sr_civil
STATE 2
SWIP 0
TIME 1498872425.01
Sr_weather:
DEG 0
LIGHT 6
NAME sr_weather
NAMENEXT ss_weather
STATE 6
SWIP 1
TIME 1498878747.05
Ss:
DEG 0
LIGHT 3
NAME ss
NAMENEXT ss_civil
STATE 9
SWIP 0
TIME 1498935672.97
Ss_astro:
DEG -18
LIGHT 0
NAME ss_astro
NAMENEXT sr_astro
STATE 12
SWIP 0
TIME 1498861428
Ss_civil:
DEG -6
LIGHT 2
NAME ss_civil
NAMENEXT ss_naut
STATE 10
SWIP 0
TIME 1498938524.98
Ss_indoor:
DEG 20
LIGHT 4
NAME ss_indoor
NAMENEXT ss
STATE 8
SWIP 0
TIME 1498927711.96
Ss_naut:
DEG -12
LIGHT 1
NAME ss_naut
NAMENEXT ss_astro
STATE 11
SWIP 0
TIME 1498941976.99
Ss_weather:
DEG 0
LIGHT 5
NAME ss_weather
NAMENEXT ss_indoor
STATE 7
SWIP 1
TIME 1498935672.95
Attributes:
event-on-change-reading . *
room Wetter
list Beschattung
Internals:
CFGFN
DEF T:azimuth:..*
{
if ($EVTPART1 > 300) {
fhem("set dum2 on")
}
}
NAME Beschattung
NOTIFYDEV T
NR 211
NTFY_ORDER 50-Beschattung
REGEXP T:azimuth:..*
STATE active
TYPE notify
Readings:
2017-07-01 21:31:07 state active
Attributes:
room Rolladen
Ist der Eventmonitor komplett leer (kein Event) oder nur kein "azimuth" Event?
nur kein Azimuth
Alles andere tuckert fröhlich dahin. Wetter, Messwerte, ...
Und DEF latitude, longitude 545766
Da fehlt was in der DEF (indoor_horizon). Hast du zu viel anonymisiert, oder steht es wirklich so?
Beispiel in CommandREFdefine myTwilight Twilight 49.962529 10.324845 3 676757
Ergibt in DEF:
DEF 49.962529 10.324845 3 676757
Da hast Du 545766 als ... indoor horizon. Er hat wahrscheinlich Schwierigkeiten, um das azimuth zu kalkulieren. Obwohl du doch ein Reading azimuth hast... ich weiss nicht genau.
Mit attr T verbose 5
wirst Du mehr in der Log sehen
event-on-change-reading = es wird nur ein Event generiert, wenn der Wert sich ändert.
event-on-update-reading = Event wenn es sich aktualisiert, auch wenn der Wert gleich bleibt. => Vielleicht wäre es besser zum testen.
EDIT: und gerade gesehen : kein Leerzeichen zwischen . und * !
Habe nun folgendes durchgeführt
event-on-change-reading mit .*
event-on-update-reading mit .*
Indoor Horizon mit 0 hinzugefügt
Verbose 5 aktiviert
Nix zu sehen
defmod T Twilight latitude longitude 0 545766
attr T event-on-change-reading .*
attr T event-on-update-reading .*
attr T room Wetter
attr T verbose 5
setstate T 11
setstate T 2017-07-01 22:49:40 aktEvent ss_naut
setstate T 2017-07-01 22:49:39 azimuth 327.51
setstate T 2017-07-01 22:49:39 compasspoint northwest
setstate T 2017-07-01 22:49:39 condition 27
setstate T 2017-07-01 22:49:39 condition_txt Mostly Cloudy
setstate T 2017-07-01 22:49:39 elevation -12.56
setstate T 2017-07-01 22:49:40 horizon -12
setstate T 2017-07-01 22:49:40 light 1
setstate T 2017-07-01 22:49:40 nextEvent ss_astro
setstate T 2017-07-01 22:49:40 nextEventTime 00:23:48
setstate T 2017-07-01 22:49:39 sr 05:12:27
setstate T 2017-07-01 22:49:39 sr_astro 01:48:01
setstate T 2017-07-01 22:49:39 sr_civil 04:24:49
setstate T 2017-07-01 22:49:39 sr_indoor 05:12:27
setstate T 2017-07-01 22:49:39 sr_naut 03:27:05
setstate T 2017-07-01 22:49:39 sr_weather 05:35:40
setstate T 2017-07-01 22:49:39 ss 21:01:12
setstate T 2017-07-01 22:49:39 ss_astro 00:23:48
setstate T 2017-07-01 22:49:39 ss_civil 21:48:44
setstate T 2017-07-01 22:49:39 ss_indoor 21:01:12
setstate T 2017-07-01 22:49:39 ss_naut 22:46:16
setstate T 2017-07-01 22:49:39 ss_weather 20:38:01
setstate T 2017-07-01 22:49:40 state 11
setstate T 2017-07-01 22:49:39 twilight 0
setstate T 2017-07-01 22:49:39 twilight_weather 0
Nicht beides! Nur event-on-update-reading .*
Oder lieber gar keine (weder change noch update). Damit sollte jede Änderung eines Readings ein Event generieren.
Und in der Log solltest Du auf jeden Fall doch was sehen.
Hurra, nach dem Entfernen der event-on-change readings bzw. event-on-update readings kommen Werte durch und mein Dummy hat auch geschalten.
Die Twilightwerte kommen genau alle 5 Minuten.
Sind die 5 Minuten eine Eigenschaft von Twilight?
Es ist nicht tragisch oft, aber kann man das noch irgendwie gezielt reduziere, um die Last zu verringern?
Zitat von: Ajuba am 01 Juli 2017, 23:26:29
Es ist nicht tragisch oft, aber kann man das noch irgendwie gezielt reduziere, um die Last zu verringern?
Genau dafür dienen die event-.* Attribute... richtig gesetzt natürlich ;-)