Werte Array einem Dummy zuordnen

Begonnen von Matthias_1968, 28 Februar 2017, 19:08:05

Vorheriges Thema - Nächstes Thema

Matthias_1968

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


Thorsten Pferdekaemper

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
FUIP

Matthias_1968

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ß

Thorsten Pferdekaemper

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
FUIP

Matthias_1968

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



Thorsten Pferdekaemper

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
FUIP

CoolTux

Hast du dir mal cloneDummy angeschaut für FHEM2FHEM?
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

Matthias_1968

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

Thorsten Pferdekaemper

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
FUIP

Matthias_1968

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

Thorsten Pferdekaemper

Ich meinte ja auch so, wie ich geschrieben hatte.
Gruß,
   Thorsten
FUIP

Matthias_1968

ZitatIch meinte ja auch so, wie ich geschrieben hatte.

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

Gruß
Matthias

Matthias_1968

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

Thorsten Pferdekaemper

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
FUIP

Matthias_1968

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