[gelöst] ReadingsVal Konstruktion funktioniert nicht.

Begonnen von ThomasDr, 01 Juni 2019, 23:19:47

Vorheriges Thema - Nächstes Thema

ThomasDr

Hallo,

logProxy benutze ich das xy Diagramm als Funktion benutze ich:

logProxy_xy2Plot([[ReadingsVal("esp32_mlx90640_MQTT","tempmaxY",0),ReadingsVal("esp32_mlx90640_MQTT","tempmaxX",0)]])

So weit funktioniert alles, da ich auch ältere Werte sehen will habe ich mit mit notify ein passendes Array konstruiert,
benutze ich das Array, funktioniert aber die Funktion nicht mehr:

logProxy_xy2Plot([ReadingsVal("TminArray","state",0)])

Kopiere ich den Wert einfach aus der Variabel funktioniert es wieder:

logProxy_xy2Plot([[21,10],[16,8]])

Im notify lese ich die Variabel auch über:

ReadingsVal("TminArray","state",0)

ein ohne Probleme.

weiß jemand wo hier der Fehler ist?

ThomasDr

Hallo,

durch durchprobieren bin ich jetzt so weit deas die werte gelesen werden und kann auch den unterschied zwischen funktioniert und funktioniert nicht sehen.

;c 0
;p 21 13 14 16
#Func:logProxy_xy2Plot([[ReadingsVal("TminArray","state",0)]])
;c 0
;p 23 21
;p 12 18
#Func:logProxy_xy2Plot([[23,21],[12,18]])

Jetzt ist die Frage was muss in die TminArray Variable damit die beiden Werte einzeln erkannt werden?

Schöne Grüße
ThomasD

CoolTux

Was für einen Inhalt hat denn TminArray, sicherlich kein Array, eher ein String
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

ThomasDr

Hallo,

Ich würde auch sagen einen String, der wie ein Array aussieht.
Vielleicht sollte ich mal ein echtes Array benutzen, wenn das im Notify möglich ist.

[23,21],[12,18]

Das Notify sieht so aus:

esp32_mlx90640_MQTT:tempminX:.* {
my $TmiX = ReadingsVal("esp32_mlx90640_MQTT","tempminX",0);
my $TmiY = ReadingsVal("esp32_mlx90640_MQTT","tempminY",0);
my $TmiArray = ReadingsVal("TminArray","state",0);
my $TmiA = "[$TmiY,$TmiX]";
$TmiArray = "$TmiA,$TmiArray";
fhem("set TminArray $TmiArray");
}


Schöne Grüße
Thomas

CoolTux

Zerlege doch den String und füge dann einzeln die Teile in die Entsprechende Position
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

ThomasDr

Hallo,

wie sollte den der String zerlegt werden, und wo?
Bei der SVG Grafik?

Etwas bin ich mit dem Notify und speichern eines Array weiter gekommen, aber leider nicht weit genug, ein eindimensionales Array ist kein Problem,
aber mit dem zweidimensionalen funktioniert es noch nicht.
Zum Array speichern braucht man:

my $json_str = encode_json(\@TmiArray);


Und zum wieder einlesen:

@TmiArray = @{decode_json(ReadingsVal("T1Array","state",0))};


Aber vielleicht hat ja auch jemand auf meine andere Frage eine Antwort, dann würde ich es über das FileLog machen:
https://forum.fhem.de/index.php/topic,101098.msg945448.html#msg945448

Schöne Grüße
ThomasDr

ThomasDr

Hallo,

ich habe jetzt eine Lösung gefunden.
Das Notify muss kein Array sein, es muss nur so aussehen.
Zum Beispiel so:

[[2,5],[4,3]]


Aber beim einlesen muss die Variable dann als Array gelesen werden.
Zum Beispiel so:

@{decode_json(ReadingsVal("T1Array","state",0))};


Schöne Grüße
ThomasDr