Hallo zusammen,
irgendwie stehe ich gerade auf dem schlauch! Ich versuche in einem DoIF eine Reading wie folgt zu setzen:
setreading Bewaessern Uhrzeit [([{qx(date +%R)}] + 120)]
Nur setzt er mir immer den Code in das Reading und nicht die aktuelle Zeit + 2 Minuten.
[([{qx(date +%R)}] + 120)]
https://fhem.de/commandref_DE.html#set , hier: "perlExpression"
Zitat von: Ellert am 01 Mai 2018, 19:04:09
https://fhem.de/commandref_DE.html#set , hier: "perlExpression"
Danke für dein Feedback, aber irgendwie verstehe ich das nicht. Ich möchte in dem Device das Reading Uhrzeit auf die aktuelle Uhrzeit + 120 sec setzen.
Wenn es jetzt 12:20 Uhr ist soll dann "12:22" eingetragen werden.
Hi,
lass doch date gleich rechnen
setreading Bewaessern Uhrzeit {(qx(date --date="120 sec now" +%R))}
Erklärung aus dem Link von Ellert:
{(perlExpression)}
perlExpression 3+4
kann man in FHEM Kommandozeile direkt testen {3+4}
Beim set Kommando muss noch ein () drumrum {(3+4)} sonst wird der Code nicht ausgeführt
So habe ich das zumindest verstanden und getestet.
Gruß Otto
Zitat von: Otto123 am 01 Mai 2018, 19:34:13
setreading Bewaessern Uhrzeit {(qx(date --date="120 sec now" +%R))}
Danke dir, aber im Reading steht dann
{(qx(date --date="120 sec now" +%R))}
und nicht z.B. 20:01Uhr.
Kann es nicht verstehen, wenn Du es eingetragen hast, wie Otto es geschrieben hat . Zeig bitte ein "list Bewaessern".
Internals:
CFGFN
NAME Bewaessern
NR 50097
STATE on
TYPE dummy
READINGS:
2018-05-01 19:44:48 Uhrzeit {(qx(date --date="120 sec now" +%R))}
2018-05-01 19:43:14 Wann Next
2018-05-01 19:42:38 state on
Attributes:
devStateIcon on:sani_sprinkling@green:off off:sani_sprinkling:on .*:sani_sprinkling
group Automatik
readingList Wann Uhrzeit
room Bewässerung
setList on off Wann:Zeitplan,Next Uhrzeit:Next,3:00,3:30,4:00,4:30,5:00,5:30,6:00,6:30,7:00
webCmd Wann:Uhrzeit
Keine Ahnung wie Du das machst, aber wenn ich meinen Code in die FHEM Kommandozeile werfe funktioniert das genau wie gewünscht.
Da Du hier im Subforum DOIF gepostet hast, Du machst es in einem DOIF? Dann macht DOIF irgendetwas anders.
Gruß Otto
ZitatDa Du hier im Subforum DOIF gepostet hast, Du machst es in einem DOIF? Dann macht DOIF irgendetwas anders.
Ja das ist in einem DoIF eingebaut, allerdings habe ich das nun auch wie du geschrieben hast in der FHEM Kommandozeile ausprobiert und habe dabei die gleiche Problematik.
ohne die zusätzliche [] und () die du hieroben hattest?
Du kannst erstmal damit probieren:
Zitatsetreading Bewaessern Uhrzeit {(qx(date))}
Hi,
und wenn Du nur den Perl Teil in die Kommandozeile wirfst?
{(qx(date --date="120 sec now" +%R))}
Was bekommst Du zurück?
Wie alt ist FHEM? Was sagt version
Gruß Otto
Zitatwenn Du nur den Perl Teil in die Kommandozeile wirfst?
Das was ich auch will
20:34
Das funktioniert...
Dann keine Ahnung, bei mir funktioniert es.
setreading wert Uhrzeit {(qx(date --date="120 sec now" +%R))}
Internals:
NAME wert
NR 49
STATE 4
TYPE dummy
READINGS:
2018-04-05 13:04:51 Lily 0
2018-04-05 13:04:51 Text_wert 15
2018-05-01 20:44:49 Uhrzeit 20:46
2017-08-13 21:16:34 Wert0 12
2018-05-01 19:32:33 state 4
2018-02-17 15:31:05 total_consumption.255 25
Attributes:
room Test
Gruß Otto
Vielleicht liegt das auch daran.
Zitatfeaturelevel
Aktiviere bzw. deaktiviere bestimmte alte oder neue Funktionen, basierend auf die FHEM Version. Z.Bsp. das $value hash für notify wird nur bis featurelevel 5.6 befüllt, da es unerwünscht ist. Stattdessen sollte man die Value() Funktion verwenden.
bei mir steht das noch auf 5.6. Ich habe das nie umgebaut...
Bestimmt
ZitatAb featurelevel 5.7 ersetzt das set und setreading Befehl
[device:name] mit dem Wert des Readings, Internals oder Attributes für device, falls sowohl device, als auch Reading, Internal oder Attribut existiert, und nicht leer ist.
Man kann einen der Präfixe r:, i: oder a: verwenden, um die Suche einzuschränken, genau wie im devspec.
Das Suffix :d extrahiert die erste Zahl.
Das Suffix :i extrahiert die erste Zahl als Ganzzahl.
Das Suffix :r<n> extrahiert die erste Zahl, und rundet sie auf <n> Dezimalstellen. Falls <n> fehlt, dann wird auf eine Dezimalstelle gerundet.
Das Suffix :t liefert den Zeitstempel des Readings
Das Suffix :sec liefert Anzahl der Sekunden seit Änderung des Readings.
Beispiel:
set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
{(perlExpression)} mit dem Ergebnis der perlExpression. $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
Diese Ersetzungen sind unter dem Namen "set magic" bekannt.
Danke euch! Dann bin ich jetzt erst mal beschäftigt. :D
Wenn Du mal nach 5.8 updaten möchtest, bitte aufpassen:
- csrftoken: https://forum.fhem.de/index.php?topic=67419.0
- allowed and allowfrom: https://fhem.de/commandref_DE.html#allowfrom