if Klammersetzung bei dummy und fhem(set...

Begonnen von jnewton957, 25 Februar 2017, 07:02:52

Vorheriges Thema - Nächstes Thema

jnewton957

Hallo,

ich möchte in meiner Stromstatistik aktuelle Werte mit Vorjahreswerten vergleichen.

Dazu habe ich mir jeweils den Monatswert in ein dummy geschrieben: EM_month_1601 - EM_month_1612

Nun möchte ich jeweils ein dummy  EM_vorjahresmonat setzen lassen.

define ermittlung_EM_vorjahresmonat1 at *23:59:30  {if($year==2017 && $month==1 && $mday==1) {\
  fhem("set EM_vorjahresmonat ". EM_month_1601);;\
} }


Ich bekomme aber
ERROR evaluating {if($year==2017 && $month==1 && $mday==1) {
  fhem("set EM_vorjahresmonat ". EM_month_1601);
} }: Bareword "EM_month_1601" not allowed while "strict subs" in use at (eval 7404363) line 2.

2017.02.24 23:59:36 3: ermittlung_EM_vorjahresmonat1: Bareword "EM_month_1601" not allowed while "strict subs" in use at (eval 7404363) line 2.


Also ist irgendwo die Klammersetzung falsch?

Kann mir da jemend bitte beim define die richtige Klammer setzen.

Danke
Jörg
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

Ellert

#1
Wenn Du es mit zusätzlichen Klammern lösen möchtest, versuche es mit set magic.

fhem("set EM_vorjahresmonat [EM_month_1601:state]")

eventuell müsstest Du die Klammern maskieren

fhem("set EM_vorjahresmonat \[EM_month_1601:state\]")

siehe https://fhem.de/commandref_DE.html#set

CoolTux


  fhem("set EM_vorjahresmonat ". EM_month_1601)


EM_month_1601 ist Dein Bareword. Was soll das eigentlich sein? Wenn du hier eine Variable nehmen wolltest musst du sie entsprechend deklarieren und auch als Variable kennzeichnen.


  fhem("set EM_vorjahresmonat ". Value("EM_month_1601");


Könnte eine Lösung sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Thorsten Pferdekaemper

Zitat von: CoolTux am 25 Februar 2017, 08:06:15

  fhem("set EM_vorjahresmonat ". EM_month_1601)


EM_month_1601 ist Dein Bareword. Was soll das eigentlich sein?
Hat er doch gesagt. Es ist ein Dummy. Der erste Vorschlag von Ellert ist meiner Meinung nach schon richtig.
Gruß,
   Thorsten
FUIP

jnewton957

Zitat von: CoolTux am 25 Februar 2017, 08:06:15

EM_month_1601 ist Dein Bareword. Was soll das eigentlich sein?

EM_month_1601 ist der Monatverbrauch (Strom) aus Januar 2016.
Internals:
   CFGFN      /opt/fhem/FHEM/16_Stromstatistik.cfg
   NAME       EM_month_1601
   NR         1369
   STATE      332
   TYPE       dummy
   Readings:
     2017-01-15 07:35:02   state           332


Genau den möchte ich nun mit Januar2017 (EM_month_1701) gegenüberstellen. Die meisten Auswertungen beziehen sich immer auf den Vormoat - das ist baer z.B. im März blöd wenn der Stromverbauch zum Vormonat aufgrund Witterung oder Urlaub oder anderer Umstädne abweischt. Interessanter finde ich es zusätzlich eben den VorJAHRESwert zu vergleichen.

Hilft das ?

Jörg

FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

Thorsten Pferdekaemper

FUIP

CoolTux

Zitat von: Thorsten Pferdekaemper am 25 Februar 2017, 08:21:44
Hat er doch gesagt. Es ist ein Dummy. Der erste Vorschlag von Ellert ist meiner Meinung nach schon richtig.
Gruß,
   Thorsten

Mir ging es eher darum das es entweder eine Variable oder der Aufruf einer Funktion sein kann, da es in der Perlumgebung stand. Beides passte aber nicht zu dem was da stand.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net