Autor Thema: Zeit aus reading auslesen und in Sekunden umrechnen  (Gelesen 736 mal)

Offline Tunka

  • New Member
  • *
  • Beiträge: 3
Zeit aus reading auslesen und in Sekunden umrechnen
« am: 19 Februar 2017, 12:01:59 »
Hallo,

bin blutiger Anfänger und versuche jetzt schon seit Tagen folgende Funktion ans laufen zu bringen.
Irgendwie komm ich nicht weiter und brauche Hilfe:

fhem.cfgdefine dimupM dummy
attr dimupM room Lichtsteuerung
attr dimupM userReadings dimsec ({my $time2sec = time2sec(ReadingsVal("dimupM","dimupM",0))})

Myutils
sub
time2sec($)
{
my ($time2sec) = @_;
@a = (split /:/,$time2sec);
$time2sec = $a[0] *3600 + $a[1] *60;
return $time2sec
}

setreading dimupM dimupM 00:10 ändert den Wert dimupM, bei dimsec kommt eine Fehlermeldung:
"Error evaluating dimupM userReading dimsec: syntax error at (eval 277) line 1, at EOF"
Erwarteter Wert: 600
« Letzte Änderung: 19 Februar 2017, 12:35:27 von Tunka »
Staus blutiger Anfänger

Offline KernSani

  • Hero Member
  • *****
  • Beiträge: 1437
Antw:Zeit aus reading auslesen und in Sekunden umrechnen
« Antwort #1 am: 19 Februar 2017, 12:13:34 »
Auf die Schnelle (ohne deinCiding genauer anzusehen): FHEM hat eine Funktion time_str2num, die genau das machen sollte. Und am Besten packst du Coding hier im Forum in code tags (# Button im Editor) um das Ganze lesbarer zu machen.
RasPi: RFXTRX, HM, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Tunka

  • New Member
  • *
  • Beiträge: 3
Antw:Zeit aus reading auslesen und in Sekunden umrechnen
« Antwort #2 am: 19 Februar 2017, 12:41:52 »
Danke für den Hinweis mit den Code Tags :-)
Leider hilft mir hier time_str2num wohl nicht weiter, da mein Format HH:MM hat (oder verstehe ich da was falsch?).

Die Frage ist, habe ich einen Formatierungsfehler oder habeich das ganze falsch verstanden.
Besser DOIF oder notify?



Staus blutiger Anfänger

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2626
    • _.:|:._
Antw:Zeit aus reading auslesen und in Sekunden umrechnen
« Antwort #3 am: 19 Februar 2017, 13:51:11 »
Die Variable @a ist nicht deklariert und die Klammern rundum split sind falsch getzt. Ein Blick ins Log hätte das auch verraten...

sub
time2sec($)
{
  my ($time2sec) = @_;
  my @a = split(/:/,$time2sec);
  $time2sec = $a[0] *3600 + $a[1] *60;
  return $time2sec
}

Offline Tunka

  • New Member
  • *
  • Beiträge: 3
Antw:Zeit aus reading auslesen und in Sekunden umrechnen
« Antwort #4 am: 19 Februar 2017, 14:56:59 »
Hallo,
danke, bin für jeden Tip dankbar. Ich suche jetzt schon seit Tagen und versuche zu verstehen wie ich die Funktion umsetzen kann.
Ein Beispiel würde mir hier weiterhelfen das Ganze zu verstehen.

Habs jetzt die MyUtils angepasst:
sub
time2sec($)
{
my ($time2sec) = @_;
@a = split (/:/,$time2sec);
$time2sec = $a[0] *3600 + $a[1] *60;
return $time2sec
}

Ich hoffe das passt jetzt.

Was mir noch nicht klar ist, wie der Rückgabewert in das Reading dimsec kommt

dimsec ({time2sec(ReadingsVal("dimupM","dimupM",0))})
Übernimmt er hier den Rückgabewert direkt.

Danke im voraus
Staus blutiger Anfänger

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13148
  • Probleme sind auch keine Lösung.
Antw:Zeit aus reading auslesen und in Sekunden umrechnen
« Antwort #5 am: 19 Februar 2017, 17:45:01 »
Für solche Umrechnungen gibt es doch fertige Funktionen in perl? Warum wollen immer alle das Rad neu erfinden?


Mach doch mal "fheminfo send" um die FHEM Statistik zu unterstützen!

Nächster Hamburg-Stammtisch am 15.09.2017!

Offline KernSani

  • Hero Member
  • *****
  • Beiträge: 1437
Antw:Zeit aus reading auslesen und in Sekunden umrechnen
« Antwort #6 am: 19 Februar 2017, 17:51:11 »

dimsec ({time2sec(ReadingsVal("dimupM","dimupM",0))})
Übernimmt er hier den Rückgabewert direkt.

ja, sollte direkt übernommen werden, die runden Klammern (außen) sind aber unnötig (oder verursachen sogar Probleme - kann ich jetzt nicht sagen).

RasPi: RFXTRX, HM, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Habbi

  • New Member
  • *
  • Beiträge: 28
Antw:Zeit aus reading auslesen und in Sekunden umrechnen
« Antwort #7 am: 20 März 2017, 11:33:20 »
Hallo, wie ist es ausgegangen?