Hauptmenü

Readings Zeit berechnung

Begonnen von accloginsell, 19 März 2019, 08:36:42

Vorheriges Thema - Nächstes Thema

accloginsell

Servus beinand,

ich habe jetzt lange rumprobiert und komme auf keinen Nenner.
Kann mir jemand bei diesem Thema helfen.
Ich möchte zwischen zwei Readings die Zeit ermitteln.


turfreischaltung:.* {
my $timestamp = FmtDateTime(ReadingsVal("geofancy","lastLoc_nico",2000-01-01 00:00:00));
  my $seconds = FmtDateTime(ReadingsVal("geofancy","currLoc_nico",2000-01-01 00:00:00));
  my $result = ($timestamp - $seconds);
fhem("setreading arbeitswegberechnung test $timestamp");;
}


Das ist mein ernster Entwurf leider kommt hier eine 0 raus.

Kann mir jemand das begradigen?

Merci euch!
LG
Nico

rabehd

#1
Welches Ergebnis erhälst Du mit der Eingabe {FmtDateTime(ReadingsVal("geofancy","lastLoc_nico",2000-01-01 00:00:00))} eingibst?
Welcher Wert ist im Reading "lastLoc_nico" des Device "geofancy"?
Das Gleiche für für das andere Reading.

Und da wäre noch das
https://forum.fhem.de/index.php/topic,50783.msg424064.html#msg424064

Du berechnest $result, verwendest es aber nicht.

fhem("setreading arbeitswegberechnung test $timestamp");;
Da bin ich mir nicht sicher. Ich verwende fhem("setreading arbeitswegberechnung test ". $timestamp);;
Auch funktionierende Lösungen kann man hinterfragen.

accloginsell

Hallo Zusammen,

Danke für die Antwort.
Habe es nun so versucht umzusetzen.

Leider kommt immer nur {time_str2num(ReadingsTimestamp("geofancy","lastLoc_nico","0"))}-{time_str2num(ReadingsTimestamp("geofancy","currLoc_nico","0"))} in telegram übermittelt.


([geofancy:lastLoc_nico] eq "Arbeit" and [geofancy:currLoc_nico] eq "Nina Freiham")(set telegram send [{time_str2num(ReadingsTimestamp("geofancy","lastLoc_nico","0"))}-{time_str2num(ReadingsTimestamp("geofancy","currLoc_nico","0"))}])

Hat Jemand eine Lösung dafür?

Otto123

#3
Hi,

wozu sollen die eckigen Klammern sein? set telegram send [...]

Wenn Du im set Befehl einen Perl Ausdruck auflösen willst  set telegram send {Perl Befehl} dann musst Du zusätzliche, runde Klammern verwenden.
set telegram send {(Perl Befehl)}

Findet man in der Doku  :D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

accloginsell

Vielen Dank nun funktioniert es :)

Hast du gerade noch nen Tipp wie ich das auf zwei Nachkommastellen runden kann?

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

accloginsell

Servus,

darauf bin auch gestoßen. Jedoch wie bekomme ich in diesen DOIF?

([geofancy:lastLoc_nico] eq "Arbeit" and [geofancy:currLoc_nico] eq "Zuhause")(set telegram send Fahrzeit von der Arbeit nach Hause: {(time_str2num(ReadingsTimestamp("geofancy","currLoc_nico","0"))-time_str2num(ReadingsTimestamp("geofancy","lastLoc_nico","0")))/60} Minuten)

Otto123

#7
Moin,

na relativ einfach:
{(Hier steht Dein_Perlausdruck)}
{sprintf "%.2f", Hier steht auch ein Perlausdruck}
Da Du im set Befehl arbeitest, mein Beispiel für sprintf aber für die Kommandozeile war, musst Du die Form wählen:
{(sprintf "%.2f", Dein_Perlausdruck)}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

accloginsell

Perfekt :) DANKE!

für die Nachwelt.


([geofancy:lastLoc_nico] eq "Arbeit" and [geofancy:currLoc_nico] eq "Zuhause")(set telegram send Fahrzeit von der Arbeit nach Hause: {(sprintf "%.2f",(time_str2num(ReadingsTimestamp("geofancy","currLoc_nico","0"))-time_str2num(ReadingsTimestamp("geofancy","lastLoc_nico","0")))/60)} Minuten)