Hallo zusammen.
Ich möchte meine Lichtsteuerung ein wenig umschreiben. Dafür habe ich mir einen Temperatursensor zum Lichtsensor umgebaut. Habe die readings erfolgreich angepasst.
Aktuell läuft meine Lichtsteuerung über doif und lightscene. Per doif wird über twilight die Zeit für dem Sonnenuntergang abgefragt. Jetzt möchte ich die Sensorabfrage einbauen.
Bei unterschreiten eines Wertes, soll die Zeit in ein Dummy bzw. Variabel geschrieben werden, die ich dann im doif weiter verarbeitenden kann.
Habe mir so gedacht, oder so ähnlich
DOIF (Lichtsensor <= 50 dann schreibe die Zeit wo der Wert unterschritten wurde in einem Dummy oder variabel)
Die Weiterverarbeitung sollte so aussehen.
DOIF ([([Zeit aus Dummy] + [00:00:00])]) (set EG_wz_EckeLicht on)
Danke schonmal für die Hilfe
Gruß Sascha
Du hast jetzt nichts gefragt, ich rate mal:
schreibe die Zeit wo der Wert unterschritten wurde in einem Dummy oder variabel
entspricht
setreading <Name> Zeit_wo_der_Wert_unterschritten_wurde {(time)}
Stimmt. Wollte wissen, wie ich die Zeit in den Dummy schreibe.
Hast du eine Glaskugel?
Habe es mal gerade ausprobiert. Geht das auch in hh:mm:ss Format?
Es wird da eine 10 stelle Zahl geschrieben.
Gruß Sascha
Gesendet von meinem SM-T560 mit Tapatalk
Ja, es gibt es eine von FHEM bereitgestellte Perl-Variable, siehe http://fhem.de/commandref_DE.html#perl , die kannst Du statt "time" benutzen.
Hab es mir mal angeschaut. Komme aber nicht klar damit. Könntet ihr mir ein wenig untreu die arme greifen? Danke
Gesendet von meinem SM-T560 mit Tapatalk
Zitat von: sash.sc am 25 Juni 2016, 22:31:22
Hab es mir mal angeschaut. Komme aber nicht klar damit. Könntet ihr mir ein wenig untreu die arme greifen? Danke
Gesendet von meinem SM-T560 mit Tapatalk
Was genau hast Du von dem, was Du angesehen hast und was zu Deiner Frage passt, nicht verstanden?
Habe es bis jetzt geschafft mit
set test {[localtime)}
das Datum und die Uhrzeit in das state des Dummy "test" zu schreiben. Jetzt brauche ich aus dem state nur die Zeit, damit ich auf dieser Zeit meine Steuerung aufbauen kann.
bei auslesen der Zeit komme ich jetzt nicht weiter.
Du wolltest doch das Format hms, warum nimmst Du nicht diese Variable, wie in den Perl Besonderheiten der Commandref beschrieben, statt time?
Habe den Wald vor lauter Bäumen nicht gesehen :o
Habe mit dem 1. DOIF bei Unterschreitung des Lichtwertes die Zeit {(localtime)} in den 1. Dummy geschrieben.
Mit dem 2. DOIF die Zeit aus dem 1. Dummy lesen und nur die Zeit dann in einen 2. Dummy schreiben zur weiter Verabeitung.
Es geht bestimmt auch einfacher !? :-\
define test dummy
define test_1 dummy
define test doif ([lichtsens:Indikator:d] < 90) (set test {(localtime)}
define test_x doif ([lichtsens:Indikator:d] < 90) (set test_1 {[test:state:"(\d\d):(\d\d):(\d\d)":"$1:$2:$3"]})
attr test wait 300
attr test_x wait 301
attr
Mal schauen ob das heute funktioniert !
Gruss
Sascha
Es gibt viele Möglichkeiten, ich habe vermutet Dir fällt dieser Hinweis beim Lesen der Perl-Besonderheiten auf:
ZitatWeiterhin enthät $hms die Zeit in dem HH:MM:SS Format.
Damit wäre dann auch
setreading <Name> Zeit_wo_der_Wert_unterschritten_wurde {($hms)}
möglich.