FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fiedel am 18 Juni 2013, 10:41:40

Titel: attr / userattr schreibender Zugriff möglich?
Beitrag von: fiedel am 18 Juni 2013, 10:41:40
Hallo zusammen,

auf ein attr das folgendermaßen aussieht, würde ich gern schreibend zugreifen und so den Wert aus FHEM heraus setzen (die Berechnung dafür muss ich noch stricken):

attr OW_Counter offsetA 24994.18

Verschiedene Schreibweisen mit und ohne Perl habe ich schon probiert, aber der Wert bleibt standhaft. ;o)
Gelesen wird der Wert so und das funktioniert auch problemlos:

AttrVal("OW_Counter","offsetA",0)

Aber habt ihr eine Idee für mich, wie ich setzen / überschreiben kann?

Falls es keinen Weg gibt, könnte ich die Attribute durch Dummys ersetzen, aber das wäre nicht so elegant...

Viele Grüße

Frank
Titel: Aw: attr / userattr schreibender Zugriff möglich?
Beitrag von: UliM am 18 Juni 2013, 11:21:20
Hi,
mit AttrVal() liest Du nur aus.
Schreiben kannst Du mit
{fhem("attr OW_Counter offsetA $wert")}

Viel Erfolg,
Uli
Titel: Aw: attr / userattr schreibender Zugriff möglich?
Beitrag von: fiedel am 18 Juni 2013, 12:05:42
Hi Uli,

super vielen Dank!!! Das "funzt" ;o)

Viele Grüße

Frank
Titel: Aw: attr / userattr schreibender Zugriff möglich?
Beitrag von: fiedel am 18 Juni 2013, 18:04:00
Hier mal der Programmschnipsel, für den ich das gebraucht habe.

Meine Energiezählung mache ich so wie hier von dougie gezeigt:

http://forum.fhem.de/index.php?t=msg&goto=72943&rid=310&srch=AttrVal%28%22OW_Counter%22%2C%22offsetA%22%2C0%29#msg_72943 (//forum.fhem.de/index.php?t=msg&goto=72943&rid=310&srch=AttrVal%28%22OW_Counter%22%2C%22offsetA%22%2C0%29#msg_72943)

Dafür muss man sich ggf. ab und zu den Taschenrechner schnappen und die Werte offsetA und offsetB berechnen. Da aber FHEM die dazu notwendigen Daten schon kennt, habe ich mir gedacht - lass das doch den machen, der es sowieso besser kann... Mit diesem kleinen "Tool" gibt man nur noch den realen Zählerstand in der Form "set Dum_Input_A_D <Wert>" ins Eingabefeld ein und das Offset wird automatisch richtig eingestellt.

Vielleicht ist ja noch jemand so rechenfaul wie ich. ;o)



# Berechnung der Offset- Werte für die realen Zählerstände "DisplayA/B"


# Dummys zur Eingabe des Zählerstandes
# Benutzung: set Dum_Input_A_D <Wert>
define Dum_Input_A_D dummy
attr Dum_Input_A_D group Programm
attr Dum_Input_A_D room 5_System

define Dum_Input_B_D dummy
attr Dum_Input_B_D group Programm
attr Dum_Input_B_D room 5_System

# Funktion zum Berechnen und Setzen der Offset- Werte:
define Func_SetOffset_N notify Dum_Input_A_D|Dum_Input_B_D  { \
\
  my $aufrufer_SetOffset = "@" ;;\
  my $valueA = (ReadingsVal("OW_Counter","counters.A",0)/75.0);;\
  my $valueB = (ReadingsVal("OW_Counter","counters.B",0)/100.0);;\
  my $setoffsetA = (Value("Dum_Input_A_D") - $valueA);;\
  my $setoffsetB = (Value("Dum_Input_B_D") - $valueB);;\
\
 if ($aufrufer_SetOffset eq "Dum_Input_A_D") { \
     Log 1, "Setze OW_Counter.offsetA auf: $setoffsetA";; \
     fhem("attr OW_Counter offsetA $setoffsetA");;\
 } \
 if ($aufrufer_SetOffset eq "Dum_Input_B_D") { \
     Log 1, "Setze OW_Counter.offsetB auf: $setoffsetB";; \
     fhem("attr OW_Counter offsetB $setoffsetB");;\
 }\
                                             { \
     fhem("save");;\
 }\
}
attr Func_SetOffset_N group Programm
attr Func_SetOffset_N room 5_System


Titel: Aw: attr / userattr schreibender Zugriff möglich?
Beitrag von: Puschel74 am 18 Juni 2013, 18:34:47
Hallo,

das hat doch sicher noch im Wiki Platz ;-)

Grüße