einfaches addieren von Variablen

Begonnen von UB66, 12 Mai 2013, 11:24:14

Vorheriges Thema - Nächstes Thema

UB66

Hallo Zusammen,
Ich bin seit ca. 6 Wochen dabei HM Komponenten mit der FB 7270 zu steuern.  
Habe jetzt ein Problem, und auch nach viel "Googlen" leider keine Lösung gefunden.
Es sollen einfach nur Variablen kopiert und addiert werden.......

Auszug auf .cfg:

#Variablen Deklaration
define test1 dummy
define test2 dummy
define test3 dummy

# Werte setzen
{fhem("set test1 11.0")}
{fhem("set test2 22.5")}
{fhem("set test3 33.0")}

#kopieren: Werte von test1+Test2 in test3
{fhem ("set test3" +(Value("test1")+Value("test2")))}

Beim Speichern kommt als Meldung:
ERROR:
Unknown command 33.5, try help

Also werden die Zahlen scheinbar richtig addiert, aber "test3" irgendwie als Befehl erkannt ???

mfg
UB66

broadway

So funktionierts und ist leichter lesbar:

my $temp=Value("test1")+Value("test2");
fhem("set test3 $temp");
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

UB66

Hi,
danke für die schnelle Antwort.
Leider kommen jetzt Fehler.
Ich habe das alles auch schon in ein "Notify" verpackt, leider kommen hier auch Fehler...


my $temp=Value("test1")+Value("test2");
{fhem("set test3 $temp")};

ERROR:
Unknown command my, try help Global symbol "$temp" requires explicit package name at (eval 2338) line 1, <$fh> line 437.

UB
 

broadway

Achte darauf, wo du den code eingibst. Von mir gepostet: Eingabe unter "DEF" nach anklicken des Notify.

Angabe in fhem.cfg:

define EinTest notify EinTest {\
  my $temp=Value("test1")+Value("test2");;\
  fhem("set test3 $temp");;\
}
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

MisterEltako

Oder so:
#Variablen Deklaration
define test1 dummy
define test2 dummy
define test3 dummy

# Werte setzen
{fhem("set test1 11.0")}
{fhem("set test2 22.5")}
{fhem("set test3 33.0")}

#kopieren: Werte von test1+Test2 in test3
define Testung3 at +00:00:02 {\
my $test1=Value("test1");;\
my $test2=Value("test2");;\
my $test3=$test1+$test2;;\
Log 3, "Wert ist: $test3";;\
fhem("set test3 $test3");;\
}

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

UB66

Hallo,
jau läuft jetzt !!!
Danke für die Hilfe !!!

Gruß
UB66

Hakter51

Hallo,
Ich will auch nur ,,rechnen".  Und bitte um Hilfe.

                         Daten
T_H_Rücklauf     Tem: 21.5
T_H_Vorlauf       Tem: 26.4

{fhem("set D3 " . (Value("T_H_Vorlauf:Tem.*"))-(Value("T_H_Rücklauf:

Fehler log
2018.02.11 21:54:34 3: set D3  : no set value specified
2018.02.11 21:54:34 3: Abfrage: no set value specified
Pollin AVR-NET-IO mit Ethersex => Ethersex 4 x 1-Wire, 1 x DHT22, 1 x LCD, 1 x ADC (LDR)
Raspberry PI mit FHEM5.6 Phillips Hue, Phillips, PIONEER AVR VSX2021, Eltako Funk  (EnOcean), MAX!, Fritz 546e

betateilchen

Da fehlen zumindest ein paar Klammern, ausserdem ist T_H_Vorlauf:Tem.* falsch
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hakter51

oh das ist mir jetzt peilich... Ich sollte nicht abends und nicht am PC einen Beitrag schreiben. Wenn FHEM eine Siemens oder Rockwell SPS wäre wüste ich was ich schreiben muss.

Also noch mal: Wenn ich ein AT definire, das die folgt aussieht, wird in "D3"  "Tem: 26.4" geschrieben.

define Abfrage at +*00:02:00 {fhem("set D3 " .  ((Value("T_H_Vorlauf"))))}


Wenn ich wie folgt berechen erhalte ich eine Fehlermeldung im Log "PERL WARNING: Argument "Tem: 26.4" isn't numeric in subtraction (-)" was auch sinn macht.

define Abfrage at +*00:02:00 {fhem("set D3 " .  ((Value("T_H_Vorlauf"))-(Value("T_H_Ruecklauf"))))}


Daten
T_H_Ruecklauf     Tem: 21.5
T_H_Vorlauf       Tem: 26.4


Wie bekomme ich "Tem: 21.5" zu einem numeric REAL Wert?
Pollin AVR-NET-IO mit Ethersex => Ethersex 4 x 1-Wire, 1 x DHT22, 1 x LCD, 1 x ADC (LDR)
Raspberry PI mit FHEM5.6 Phillips Hue, Phillips, PIONEER AVR VSX2021, Eltako Funk  (EnOcean), MAX!, Fritz 546e