Hallo
kann mir jemand Helfen wie ich das im def bereich schreiben muss.
möchte gerne die zwei werte:
BTC multiplizieren mit wallet und das ergebnis in walletINeuro ausgeben.
hab das im def bereich zum testen erst mal so
wie in Bild 2 eingegeben wie muss aber jetzt die def lauten das er die zwei Werte multipliziert.
Gruß Josty
define at_wallet at +*00:00:02 {fhem "set walletINeuro ".(Value("BTC")*Value("wallet"))}
Das at triggert aber jede 2. Sekunde. Nicht schön.
Wenn nur ein Wert sich regelmässig ändert, wäre es besser mit einem notify.
define nt_btc notify BTC {fhem "set walletINeuro ".(Value("BTC")*Value("wallet"))}
Würde auch gehen wenn beide sich ändern, nur muss die Regex erweitert werden: (BTC|wallet)
Man kann es auch mit einem DOIF lösen:
define walletINeuro DOIF ##
attr walletINeuro state {([BTC]*[wallet])}
Hallo,
erst mal danke für deine Hilfe.
hab jetzt das at von dir eingefügt.
Leider bleibt walletINeuro immer auf 0
sehe gerade im Logfile schreibt er
2017.11.21 06:52:50 1: PERL WARNING: Argument "306,655" isn't numeric in multiplication (*) at (eval 13377313) line 1.
2017.11.21 06:52:54 1: PERL WARNING: Argument "0,0042108" isn't numeric in multiplication (*) at (eval 13377317) line 1.
er kommt anscheinend mit dem komma nicht zurecht.
Haste da noch ne idee ?
Gruß Josty
Dann musst Du die Werte formatieren, bevor du die Multiplikation machts.
was spricht gegen https://fhem.de/commandref_DE.html#userReadings ??
Zitat von: nils_ am 21 November 2017, 08:16:23
was spricht gegen https://fhem.de/commandref_DE.html#userReadings ??
Nix, ausser dass es den Wunsch vom TE nicht entspricht ;)
Und es wird mit userReadings genau das gleiche Formatierungsproblem geben.
Wegen Formatierung:
+*00:00:02 {my $btc = Value("BTC");
$btc =~ s/[\. €]+//g;
$btc =~ s/,/\./g;
my $wal = Value("wallet");
$wal =~ s/,/\./g;
fhem "set walletINeuro ".($btc*$wal)}
in der DEF des at sollte das Problem lösen.