Hallo,
ich versuche eine Abwesenheitssimulation mit fhem einzurichten. Sie soll während eines Zeitraumes von Sonnenuntergang bis 5 Stunden danach immer wieder die Lampe im Vorratsraum zufällig immer wieder ein- und ausschalten. Leider wird nur zu Beginn eingeschaltet und nur am Ende wieder ausgeschaltet! In der fhem.cfg habe ich dafür folgendes eingetragen:
attr global latitude 50.9734
attr global longitude 6.7984
define Vorratsraum_Licht MQTT_DEVICE
attr Vorratsraum_Licht IODev myBroker
attr Vorratsraum_Licht devStateIcon ON:on OFF:off
attr Vorratsraum_Licht publishSet ON OFF cmnd/Vorratsraum_Licht/POWER
attr Vorratsraum_Licht stateFormat transmission-state
attr Vorratsraum_Licht subscribeReading_power stat/Vorratsraum_Licht/POWER
attr Vorratsraum_Licht subscribeReading_state tele/Vorratsraum_Licht/TELEMETRY
attr Vorratsraum_Licht webCmd ON:OFF
define Zufall_Vorratsraum RandomTimer *{sunset_abs()} Vorratsraum_Licht *{sunset_abs(5*3600)} 600
attr Zufall_Vorratsraum switchmode 800/200
Leider finde ich den Fehler nicht!
Ich bitte um Hilfe.
Gruß
Martin
Versteht dein MQTT device "ON" und "OFF" oder "on" und "off" ?
Am Besten ein "list" deines Devices posten und code tags (das # oben im Editor über den Smilies) verwenden, dann sieht man mehr...
Hallo,
Vielen Dank für die Antworten.
Anbei die Ausgabe:
Internals:
IODev myBroker
NAME Vorratsraum_Licht
NR 34
STATE incoming publish received
TYPE MQTT_DEVICE
READINGS:
2018-02-05 16:49:14 power ON
2018-02-05 16:49:14 state on
2018-02-05 16:49:14 transmission-state incoming publish received
message_ids:
publishSets:
:
topic cmnd/Vorratsraum_Licht/POWER
values:
ON
OFF
sets:
OFF
ON
subscribe:
stat/Vorratsraum_Licht/POWER
tele/Vorratsraum_Licht/TELEMETRY
subscribeExpr:
^stat\/Vorratsraum_Licht\/POWER$
^tele\/Vorratsraum_Licht\/TELEMETRY$
subscribeReadings:
stat/Vorratsraum_Licht/POWER:
cmd
name power
tele/Vorratsraum_Licht/TELEMETRY:
cmd
name state
Attributes:
IODev myBroker
devStateIcon ON:on OFF:off
publishSet ON OFF cmnd/Vorratsraum_Licht/POWER
stateFormat transmission-state
subscribeReading_power stat/Vorratsraum_Licht/POWER
subscribeReading_state tele/Vorratsraum_Licht/TELEMETRY
webCmd on:off
Das manuelle Ein- und Ausschalten funktioniert. Auch das Ein- und Ausschalten am Anfang und Ende des Abwesenheitszeitraumes klappt. Nur das Ein- und Ausschalten zwischen dem Abwesenheitszeitraumes erfolgt nicht.
Was fhem als Steuerung raus gibt kann man doch im Event Monitor verfolgen. Hier erfolgt zwischendurch leider auch keine Steuerung!
Nachtrag
Internals:
COMMAND on
DEF *{sunset_abs()} Vorratsraum_Licht *{sunset_abs(5*3600)} 600
DEVICE Vorratsraum_Licht
NAME Zufall_Vorratsraum
NR 41
STATE on
TYPE RandomTimer
READINGS:
2018-02-05 00:10:30 Startzeit 2018-02-05 18:05:22
2018-02-05 00:10:30 Stoppzeit 2018-02-05 23:05:22
2018-01-30 20:27:24 TimeToSwitch 600
2018-02-05 18:15:49 active 1
2018-02-05 20:54:54 state on
TIMER:
Zufall_Vorratsraum_Exec:
HASH Zufall_Vorratsraum
MODIFIER Exec
NAME Zufall_Vorratsraum_Exec
Zufall_Vorratsraum_SetTimer:
HASH Zufall_Vorratsraum
MODIFIER SetTimer
NAME Zufall_Vorratsraum_SetTimer
helper:
REL
REP *
SIGMAWHENOFF 800
SIGMAWHENON 200
STARTTIME 05.02.2018 18:05:22
STOPTIME 05.02.2018 23:05:22
SWITCHMODE 800/200
S_REL
S_REP *
TIMESPEC_START *{sunset_abs()}
TIMESPEC_STOP *{sunset_abs(5*3600)}
TIMETOSWITCH 600
active 1
startTime 1517850322
stopTime 1517868322
Attributes:
switchmode 800/200
Anscheinend hast Du definiert, dass dein MQTT Device die Kommandos "set xxx ON" und "set xxx OFF" verstehen muss. Und nicht "set xxx on" und "set xxx off".
Dann musst Du beim RandomTimer die attr oncmd und offcmd entsprechend setzen. Siehe CommandRef.
Ich habe es jetzt wohl verstanden wo das Problem liegt. Nämlich an der Prüfung ob die Lampe an oder aus ist. Die Lampe wird über einen SonOff angesteuert. Dieser gibt den Status aber in Großbuchstaben (ON OFF) aus. Das RandomTimer Modul erwartet aber den Status in Kleinbuchstaben!
Alle Versuche dies mit webcmd oder stateFormat anzupassen brachten keine Lösung. Evtl. habe ich aber auch die falschen Parmeter verwendet.
Als Anfänger konnte ich die Beispiele nicht rictig umsetzen und brauche Hilfe!
Zitat von: amenomade am 06 Februar 2018, 19:48:14
Dann musst Du beim RandomTimer die attr oncmd und offcmd entsprechend setzen. Siehe CommandRef.
Habe zum Glück das Problem gefunden.
Ich konnte leider die gegeben Hinweise mangels Wissen nicht richtig umsetzen.
Nach Eingabe von attr Vorratsraum_Licht stateFormat {(ReadingsVal("Vorratsraum_Licht","state","nF") =~ m/(ON|on)/i) ? "on" : "off" }
klappt es jetzt!
Bitte Themen nicht schliessen, sondern das Subject des ersten Posts ändenr und [Gelöst] davor schreiben. Das gibt anderen die Möglichkeit Folgefragen zu stellen.