Ergebnis von Sunset mit Zeit vom Dummy vergleichen

Begonnen von MacDad, 28 Januar 2016, 19:38:44

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Ellert am 31 Januar 2016, 16:57:55
funktioniert das bei Dir nicht?

Habs gerade probiert, das funktioniert:
([({max([d2:hms1],[d2:hms2])})]) ()

[d2:hms1] = 08:00
[d2:hms2] = 07:32:22

Nur zur Info: Die geschweiften Klammern sind hier überflüssig, da es eine Perl-Auswertung ist, funktioniert es dennoch ;)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Zitat von: Damian am 31 Januar 2016, 20:49:28
Nur zur Info: Die geschweiften Klammern sind hier überflüssig, da es eine Perl-Auswertung ist, funktioniert es dennoch ;)

Gruß

Damian

"max" ist in der 99_Utils.pm definiert, führt einen Zeichenkettenvergleich durch und liefert die grössere Zeichenkette zurück.

ZitatPerlfunktionen, wie z. B. sunset(), die eine Zeitangabe in HH:MM liefern, werden in geschweifte Klammern gesetzt.

Ich verstehe nicht, was ich falsch verstanden habe?


Damian

Zitat von: Ellert am 31 Januar 2016, 22:51:58
"max" ist in der 99_Utils.pm definiert, führt einen Zeichenkettenvergleich durch und liefert die grössere Zeichenkette zurück.

Ich verstehe nicht, was ich falsch verstanden habe?

ja, geschweifte Klammer direkt [{..}] weist auf eine Zeitfunktion im Format HH:MM hin, diese Syntax habe ich vom at-Befehl übernommen. Daran erkenne ich im Modul, dass es sich um Zeitangabe handelt.

Später habe ich das "Rechnen mit Zeiten" eingeführt, das wird mit einer runden Klammer angegeben [(...)]. Daran erkenne ich bereits, dass es sich um eine Zeitberechnung handelt. Wenn man darin geschweifte Klammern angibt, dann werden diese an Perl weiter geleitet.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Danke, es offenbaren sich mir immer wieder neue Details.

Damian

Zitat von: Ellert am 01 Februar 2016, 10:51:37
Danke, es offenbaren sich mir immer wieder neue Details.

Ich glaube du kennst dich inzwischen besser mit dem Modul aus als ich, denn so ganz Unrecht hast du nicht.

[(sunset())] sollte nach meiner Aussage funktionieren, tut's aber nicht, weil das Ergebnis von sunset() als Zahl interpretiert wird und auch bei der Berechnung in runden Klammern erst mit [({sunset()})] richtig funktioniert. Warum das Ergebnis von max() auch ohne geschweifte Klammern als korrekte Zeit erkannt wird muss ich in den Tiefen des Codes noch eruieren.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MacDad

Moin Ellert,

Zitat von: Ellert am 31 Januar 2016, 16:57:55
funktioniert das bei Dir nicht?

Habs gerade probiert, das funktioniert:
([({max([d2:hms1],[d2:hms2])})]) ()

[d2:hms1] = 08:00
[d2:hms2] = 07:32:22

so funktioniert es ... vielen Dank.  :)
Da hat sich zur Variante aus #6 die Reihenfolge der Klammern geändert, da wäre ich nicht wirklich drauf gekommen.  :-[

Vielen Dank an alle Beteiligten für Ihre Geduld und Hilfsbereitschaft

Gruß Dirk

RPI 2 mit FHEM 5.8
FB 7390 OS 6.83 | Synology DS 214+ DSM
VU+: 1 x Solo4k & 2 Solo2 VTi 11.xx.xx
SONOS: BRIDGE | 8x PLAY:1 | 1x PLAY:5 | 1x SUB Vers. 8.1.1
HMLAN: HM-Sec-SC-2 |-Sec-RHS |-CC-RT-DN |-LC-Bl1PBU-FM |-LC-Sw1PBU-FM |-LC-Sw1-FM |-ES-PMSw1-Pl |-WDS10-TH-O |-PBI-4-F