FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Matthias_1968 am 28 Februar 2017, 19:08:05

Titel: Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 28 Februar 2017, 19:08:05
Hallo,
kann mir jemand erklären wie man einem Dummy ein Array von Werten zuordnen kann?

Ich möchte in der dblog aufräumen und in der Spalte Device den Dummy stehen haben und unter Reading einen Namen aus dem Array.

Ich bekomme momentan unter Device  immer den Namen des Dummys und unter Reading immer nur state.

define Testdevice dummy
attr Testdevice DbLogInclude 1
attr Testdevice event-on-update-reading .*
attr Testdevice group TestWerte
attr Testdevice room Testung


Ich habe schon userattr probiert, aber da steht im log nur unknown attribute und der Name den ich vergeben habe.

Ich hoffe mir kann das jemand verständlich machen

Danke
Matthias_1968

Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 11:50:44
Zitat von: Matthias_1968 am 28 Februar 2017, 19:08:05kann mir jemand erklären wie man einem Dummy ein Array von Werten zuordnen kann?
Die Frage ist für mich nicht wirklich klar. Ein Dummy ist keine Variable im Sinne einer Programmiersprache oder so. Könntest Du etwas genauer erklären, was Du vorliegen hast und was Du als Ergebnis sehen willst. Auch Deine bisherigen Ansätze wären interessant, auch wenn sie nicht funktionieren.
So in der Allgemeinheit fällt mir als Stichwort nur der Befehl "setreading" ein.
Gruß,
    Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 15:13:35
Hallo,
ich möchte Daten, die auf einem Raspberry gesammelt werden (https://forum.fhem.de/index.php?topic=67029.new;topicseen#new) mit FHEM2FHEM auf einem zentralen etwas leitungsfähigerem Raspberry weiter verarbeiten.

Die Werte der einzelnen Readings vom Remote Rechner kommen auch an.
Ich wollte den ankommenden Werte andere Bezeichnungen geben, so das im dblog unter Device->SonnenWerte, Type->"Dummy",Reading->"[NameDesWertes]",Value->"[WertDesNamesn]"

Unter SonnenWerte möchte ich einzelne Events speichern (Verbrauch, Produktion, Bezug,...) und dann daraus weitere Werte generieren (Verbrauch pro Tag in Wh, Verbrauch pro Monat in Wh, usw.)

Das hier ist ein Code der auf dem Remote Raspberry funktioniert:

define SB_MinuteVerbrauch dummy
attr SB_MinuteVerbrauch DbLogInclude 1
attr SB_MinuteVerbrauch event-on-update-reading .*
attr SB_MinuteVerbrauch group SonnenWerte
attr SB_MinuteVerbrauch room Sonnenbatterie

define SB_St_Verbrauch dummy
attr SB_St_Verbrauch DbLogInclude 1
attr SB_St_Verbrauch event-on-update-reading .*
attr SB_St_Verbrauch group SonnenWerte
attr SB_St_Verbrauch room Sonnenbatterie

define SB_MinuteProduktion dummy
attr SB_MinuteProduktion DbLogInclude 1
attr SB_MinuteProduktion event-on-update-reading .*
attr SB_MinuteProduktion group SonnenWerte
attr SB_MinuteProduktion room Sonnenbatterie

define SB_MinuteBezug dummy
attr SB_MinuteBezug DbLogInclude 1
attr SB_MinuteBezug event-on-update-reading .*
attr SB_MinuteBezug group SonnenWerte
attr SB_MinuteBezug room Sonnenbatterie

define SB_MinuteLaden dummy
attr SB_MinuteLaden DbLogInclude 1
attr SB_MinuteLaden event-on-update-reading .*
attr SB_MinuteLaden group SonnenWerte
attr SB_MinuteLaden room Sonnenbatterie

define SB_MinuteEntladen dummy
attr SB_MinuteEntladen DbLogInclude 1
attr SB_MinuteEntladen event-on-update-reading .*
attr SB_MinuteEntladen group SonnenWerte
attr SB_MinuteEntladen room Sonnenbatterie

define SB_MinuteBatLaden dummy
attr SB_MinuteBatLaden DbLogInclude 1
attr SB_MinuteBatLaden event-on-update-reading .*
attr SB_MinuteBatLaden group SonnenWerte
attr SB_MinuteBatLaden room Sonnenbatterie

define SB_MinuteBatEntladen dummy
attr SB_MinuteBatEntladen DbLogInclude 1
attr SB_MinuteBatEntladen event-on-update-reading .*
attr SB_MinuteBatEntladen group SonnenWerte
attr SB_MinuteBatEntladen room Sonnenbatterie

define SonnenStatus HTTPMOD http://192.168.2.11:8080/api/v1/status 5
attr SonnenStatus userattr event-on-update-reading icon reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex
attr SonnenStatus DbLogExclude .*
attr SonnenStatus event-on-update-reading .*
attr SonnenStatus group SonnenBatterie
attr SonnenStatus icon measure_photovoltaic_inst
attr SonnenStatus reading01Name Verbrauch
attr SonnenStatus reading01Regex Consumption_W":([\d\.]+)
attr SonnenStatus reading02Name Produktion
attr SonnenStatus reading02Regex Production_W":([\d\.]+)
attr SonnenStatus reading03Name Bezug
attr SonnenStatus reading03Regex GridFeedIn_W":([\-\d\.]+)
attr SonnenStatus reading04Name Richtung
attr SonnenStatus reading04Regex Pac_total_W":([\-\d\.]+)
attr SonnenStatus reading05Name BatterieLadung
attr SonnenStatus reading05Regex RSOC":([\d\.]+)
attr SonnenStatus reading06Name BatterieEntladung
attr SonnenStatus reading06Regex USOC":([\d\.]+)
attr SonnenStatus room Sonnenbatterie
attr SonnenStatus userReadings Avg_Verbrauch {movingAverage("SonnenStatus","Verbrauch",60)}, Avg_Produktion {movingAverage("SonnenStatus","Produktion",60)}, Avg_Bezug {movingAverage("SonnenStatus","Bezug",60)*-1}, Avg_Laden {return Re

define MY_Trigger DOIF ([+:01])\
   (set SB_MinuteVerbrauch [SonnenStatus:Avg_Verbrauch])\
   (set SB_MinuteProduktion [SonnenStatus:Avg_Produktion])\
   (set SB_MinuteBezug [SonnenStatus:Avg_Bezug])\
   (set SB_MinuteLaden [SonnenStatus:Avg_Laden])\
   (set SB_MinuteEntladen [SonnenStatus:Avg_Entladen])\
   (set SB_MinuteBatLaden [SonnenStatus:BatterieLadung])\
   (set SB_MinuteBatEntladen [SonnenStatus:BatterieEntladung])\

#   ({fhem("set SB_St_Verbrauch {Value("SB_St_Verbrauch")} + 10)})\
#   {fhem(sprintf("set SB_St_Verbrauch %f",Value("SB_St_Verbrauch")))}\
#   (set SB_St_Verbrauch "$value{SB_St_Verbrauch}" + 10)\
# + WattInWh("SB_St_Verbrauch","state")})\

attr MY_Trigger DbLogExclude .*
attr MY_Trigger do always
attr MY_Trigger group SonnenBatterie
attr MY_Trigger room Sonnenbatterie


Das hier ist der Code der auf dem lokalem Raspberry läuft:
define RemoteSun FHEM2FHEM 192.168.2.4:7072  LOG:.* SB_MinuteVerbrauch|SB_MinuteProduktion|SB_MinuteBezug|SB_MinuteLaden|SB_MinuteEntladen|SB_MinuteBatLaden|SB_MinuteBatEntladen).*
define SonnenBatterie cloneDummy SB_MinuteVerbrauch
attr SonnenBatterie stateFormat SB_MinuteVerbrauch
attr SonnenBatterie DbLogInclude 1
attr SonnenBatterie event-on-update-reading .*
attr addStateEvent 1
attr SonnenBatterie group SonnenWerte
attr SonnenBatterie room Sonnenbatterie


Das DbLog sieht dann so aus:


2017-03-01 15:08:00   SB_MinuteVerbrauch   DUMMY   947.917   state   947.917   
2017-03-01 15:08:00   SonnenBatterie   CLONEDUMMY   active   state   active   
2017-03-01 15:08:00   SB_MinuteProduktion   DUMMY   984.750   state   984.750   
2017-03-01 15:08:00   SB_MinuteBezug   DUMMY   -13.25   state   -13.25   
2017-03-01 15:08:00   SB_MinuteLaden   DUMMY   22.833   state   22.833   
2017-03-01 15:08:00   SB_MinuteEntladen   DUMMY   0   state   0   
2017-03-01 15:08:00   SB_MinuteBatLaden   DUMMY   6   state   6   
2017-03-01 15:08:00   SB_MinuteBatEntladen   DUMMY   1   state   1   
2017-03-01 15:09:00   SB_MinuteVerbrauch   DUMMY   940.167   state   940.167   
2017-03-01 15:09:00   SonnenBatterie   CLONEDUMMY   active   state   active   
2017-03-01 15:09:00   SB_MinuteProduktion   DUMMY   886.667   state   886.667   
2017-03-01 15:09:00   SB_MinuteBezug   DUMMY   30.083   state   30.083   
2017-03-01 15:09:00   SB_MinuteLaden   DUMMY   -22.75   state   -22.75   
2017-03-01 15:09:00   SB_MinuteEntladen   DUMMY   0   state   0   
2017-03-01 15:09:00   SB_MinuteBatLaden   DUMMY   6   state   6   
2017-03-01 15:09:00   SB_MinuteBatEntladen   DUMMY   1   state   1   

Gruß
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 15:30:47
Hi,
kommen da einfach nur Events an oder werden die auch in ein Device geschrieben?
Falls ersteres, kannst Du mal einen Auszug aus dem Event monitor liefern? Falls zweiteres, dann bitte auch ein List von dem Device.
Gruß,
   Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 16:17:28
Hallo,

hier der Auszug aus dem Eventmonitor:



2017-03-01 16:11:00 cloneDummy SonnenBatterie active
2017-03-01 16:11:00 dummy SB_MinuteVerbrauch 742.500
2017-03-01 16:11:00 dummy SB_MinuteProduktion 490.500
2017-03-01 16:11:00 dummy SB_MinuteBezug 32.5
2017-03-01 16:11:00 dummy SB_MinuteLaden 0
2017-03-01 16:11:00 dummy SB_MinuteEntladen -219.25
2017-03-01 16:11:00 dummy SB_MinuteBatLaden 6
2017-03-01 16:11:00 dummy SB_MinuteBatEntladen 1

Am Zusammenfassen der Daten beiße ich mir gerade die Zähne aus, ich verstehe die Zusammenhänge der Werte Übergabe noch nicht so recht.

Einige meiner Versuche, sieht man noch im Trigger:

#   ({fhem("set SB_St_Verbrauch {Value("SB_St_Verbrauch")} + 10)})\
#   {fhem(sprintf("set SB_St_Verbrauch %f",Value("SB_St_Verbrauch")))}\
#   (set SB_St_Verbrauch "$value{SB_St_Verbrauch}" + 10)\
# + WattInWh("SB_St_Verbrauch","state")})\


Das WattInWh war ein Versuch über eine Prozedur in MyUtils die Werte zu sammeln.

Gruß
Matthias


Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 16:22:07
Hi,
ok. Ich verstehe jetzt aber immer noch nicht, was Du haben willst? Ein Device mit den Readings SB_MinuteVerbrauch, SB_MinuteProduktion, SB_MinuteBezug usw.?
Gruß,
   Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: CoolTux am 01 März 2017, 16:35:02
Hast du dir mal cloneDummy angeschaut für FHEM2FHEM?
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 16:54:04
Das habe ich ja schon.

Ich dachte wegen der Übersichtlichkeit in der DbLog an sowas wie:



Timestamp   Device   Type   Event   Reading   Value   Unit
01.03.2017 15:08   SonnenBatterie   CLONEDUMMY   active   state   active   
01.03.2017 15:08   Minutenwerte   DUMMY   984.750   Produktion   984.750   Watt
01.03.2017 15:08   Minutenwerte   DUMMY   -13.25   Bezug   -13.25   Watt
01.03.2017 15:08   Minutenwerte   DUMMY   22.833   Laden   22.833   Watt
01.03.2017 15:08   Minutenwerte   DUMMY   0   Entladen   0   Watt
01.03.2017 15:08   Minutenwerte   DUMMY   6   BatterieLaden   6   Watt
01.03.2017 15:08   Minutenwerte   DUMMY   1   BatterieEntaden   1   Watt
01.03.2017 15:08   Tageswerte   DUMMY   984.750   Produktion   984.750   Wh
01.03.2017 15:08   Tageswerte   DUMMY   -13.25   Bezug   -13.25   Wh
01.03.2017 15:08   Tageswerte   DUMMY   22.833   Laden   22.833   Wh
01.03.2017 15:08   Tageswerte   DUMMY   0   Entladen   0   Wh
01.03.2017 15:08   Tageswerte   DUMMY   6   BatterieLaden   6   Wh
01.03.2017 15:08   Tageswerte   DUMMY   1   BatterieEntaden   1   Wh
01.03.2017 15:08   Wochenwerte   DUMMY   984.750   Produktion   984.750   Wh
01.03.2017 15:08   Wochenwerte   DUMMY   -13.25   Bezug   -13.25   Wh
01.03.2017 15:08   Wochenwerte   DUMMY   22.833   Laden   22.833   Wh
01.03.2017 15:08   Wochenwerte   DUMMY   0   Entladen   0   Wh
01.03.2017 15:08   Wochenwerte   DUMMY   6   BatterieLaden   6   Wh
01.03.2017 15:08   Wochenwerte   DUMMY   1   BatterieEntaden   1   Wh
01.03.2017 15:08   Monatswerte   DUMMY   984.750   Produktion   984.750   Wh
01.03.2017 15:08   Monatswerte   DUMMY   -13.25   Bezug   -13.25   Wh
01.03.2017 15:08   Monatswerte   DUMMY   22.833   Laden   22.833   Wh
01.03.2017 15:08   Monatswerte   DUMMY   0   Entladen   0   Wh
01.03.2017 15:08   Monatswerte   DUMMY   6   BatterieLaden   6   Wh
01.03.2017 15:08   Monatswerte   DUMMY   1   BatterieEntaden   1   Wh

Dann wäre es zum einen übersichtlicher und zum anderen möchte ich die Werte dann in Plots darstellen (muß ich mir aber erst noch anschauen)
ZitatHast du dir mal cloneDummy angeschaut für FHEM2FHEM?
Ja:
define SonnenBatterie cloneDummy SB_MinuteVerbrauch
attr SonnenBatterie stateFormat SB_MinuteVerbrauch
attr SonnenBatterie DbLogInclude 1
#attr SonnenBatterie alias Werte der Sonnenbatterie
attr SonnenBatterie event-on-update-reading .*
attr addStateEvent 1
attr SonnenBatterie group SonnenWerte
attr SonnenBatterie room Sonnenbatterie

#attr SonnenBatterie userReadings Verbrauch_Mi {ReadingsVal("SB_MinuteVerbrauch","state",0)}
#attr SonnenBatterie userReadings Verbrauch_Mi {ReadingsVal("dummy","SB_MinuteVerbrauch",0)}

Aber da komme ich auch nicht weiter.

Meine Versuche mit den UserReadings funktionieren aber auch noch nicht (darum erstmal wieder Auskommentiert).

Da kommt im Log:
2017.03.01 16:49:03 4: cloneDummy: HASH(0x19a8f70) D: SB_MinuteVerbrauch R: 860.833
2017.03.01 16:49:03 4: cloneDummy: publish unique <SB_MinuteVerbrauch> <SonnenBatterie> <860.833>



Gruß
Matthias
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 17:01:03
Hi,
kannst Du mal versuchen, Dein Vorhaben ohne DbLog zu erklären? Für DbLog muss man je erstmal Events haben, die man loggen will, oder?
Was passiert den z.B. wenn Du Dir ein notify auf das Device (?) SB_MinuteVerbrauch machst und darin dann ein "setreading wasweissich SB_MinuteVerbrauch $EVTPART1" (oder so ähnlich) ?
"wasweissich" müsste dann wieder ein Dummy sein.
Gruß,
   Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 17:08:02
Hallo,

ZitatWas passiert den z.B. wenn Du Dir ein notify auf das Device (?) SB_MinuteVerbrauch machst und darin dann ein "setreading wasweissich SB_MinuteVerbrauch $EVTPART1" (oder so ähnlich) ?
"wasweissich" müsste dann wieder ein Dummy sein.

Das mit dem notify hatte ich auch schon versucht, war einer von vielen Versuchen, da ich nach allen Möglichkeiten die ich irgenwo im Forum gelesen habe mal probieren wollte.

define N_RemoteSun notify RemoteSun.* {fhem("setreading SB_MinuteVerbrauch $EVENT")}

Hat aber auch nicht funktioniert, scheiterte an meinen Kenntnissen :-)

Gruß
Matthias
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 17:13:49
Ich meinte ja auch so, wie ich geschrieben hatte.
Gruß,
   Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 17:16:13
ZitatIch meinte ja auch so, wie ich geschrieben hatte.

Nein so noch nicht, werde es gleich mal versuchen umzusetzen.

Gruß
Matthias
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 17:36:31
So,
probiert, aber jetzt schreibt er nichts mehr in die DbLog.

define Testdevice dummy
define N_RemoteSun notify SB_MinuteVerbrauch.* {fhem("setreading Testdevice SB_MinuteVerbrauch $EVTPART0")}
attr N_RemoteSun DbLogInclude 1


Im Log steht dann:

2017.03.01 17:34:00 5: Triggering N_RemoteSun
2017.03.01 17:34:00 4: N_RemoteSun exec {fhem("setreading Testdevice SB_MinuteVerbrauch $EVTPART0")}
2017.03.01 17:34:00 5: Cmd: >{fhem("setreading Testdevice SB_MinuteVerbrauch $EVTPART0")}<
2017.03.01 17:34:00 5: Cmd: >setreading Testdevice SB_MinuteVerbrauch 980.833<
2017.03.01 17:34:00 5: Starting notify loop for Testdevice, 1 event(s), first is SB_MinuteVerbrauch: 980.833
2017.03.01 17:34:00 5: End notify loop for Testdevice

Gruß
Matthias
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 17:40:36
Zitat von: Matthias_1968 am 01 März 2017, 17:36:31
probiert, aber jetzt schreibt er nichts mehr in die DbLog.
Ja, weil Du anscheinend das notify in's Log aufgenommen hast und nicht Testdevice.
Zeig auch mal ein list Testdevice.
Gruß,
   Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 17:48:36
Stimmt, das war ein DbLogInclude 1 drin.

Auszug aus dem list Testdevice
Internals:
   CFGFN      ./SB2FHEM.cfg
   NAME       Testdevice
   NR         60
   STATE      ???
   TYPE       dummy
Attributes:

Gruß
Matthias
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 17:52:42
Zitat von: Matthias_1968 am 01 März 2017, 17:48:36
Stimmt, das war ein DbLogInclude 1 drin.
Ja und? Geht's jetzt ins Log?

Zitat
Auszug aus dem list Testdevice
Willst Du es absichtlich schwierig machen? Warum nur ein Auszug. Bitte alles und in Code-Tags.
Gruß,
   Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 17:57:06
Nein auch nach dem auskommentieren geht es nicht.

ZitatWillst Du es absichtlich schwierig machen? Warum nur ein Auszug.

Nein der Ausdruck war blöd! Das war alles aus dem list Testdevice.

Hier das aktuelle list:
Internals:
   CFGFN      ./SB2FHEM.cfg
   NAME       Testdevice
   NR         60
   STATE      ???
   TYPE       dummy
   Readings:
     2017-03-01 17:56:01   SB_MinuteVerbrauch 1003.333
Attributes:


Gruß
Matthias
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Thorsten Pferdekaemper am 01 März 2017, 18:00:37
Zitat von: Matthias_1968 am 01 März 2017, 17:57:06
Nein auch nach dem auskommentieren geht es nicht.
Ich kenne DbLog nicht wirklich, aber ich nehme an, dass man dem Teil irgendwie sagen muss, dass es Testdevice loggen soll.

Zitat
Nein der Ausdruck war blöd! Das war alles aus dem list Testdevice.

Hier das aktuelle list:
Internals:
   CFGFN      ./SB2FHEM.cfg
   NAME       Testdevice
   NR         60
   STATE      ???
   TYPE       dummy
   Readings:
     2017-03-01 17:56:01   SB_MinuteVerbrauch 1003.333
Attributes:

Ah, das Reading ist ja da. Dann kannst Du nach demselben Schema auch alle anderen Readings dazubasteln.
Ist es das, was Du wolltest?
Gruß,
   Thorsten
Titel: Antw:Werte Array einem Dummy zuordnen
Beitrag von: Matthias_1968 am 01 März 2017, 18:05:44
ZitatIst es das, was Du wolltest?

Ganz ehrlich? Ich weiß noch nicht so genau, das muß ich mir nochmal genau anschauen, damit ich weiß wie das alles zusammenhängt.

Aber das notify funktioniert und da kann ich erstmal drauf aufbauen und weiter probieren.

Vielen Dank!

Matthias