Fehler bei setreading

Begonnen von clumsy, 30 Januar 2017, 19:43:50

Vorheriges Thema - Nächstes Thema

clumsy

Hallo

Ab Featurelevel 5.7 müsste set und setreading gem commandref auch mit dem kommando
setreading <devspec> myname {($DEV)}

zurecht kommen und das reading "myname" auf das aktuelle device setzen. Wenn ich das richitg sehe wird jedoch der Perl-Ausdruck in {()} nur gerade für das erste device evaluiert und setzt dann alle weiteren devices in der <devspec> auf den wert der einmalig evaluierten resultats.

Ist das gewünscht? Müsste der obige Befehl nicht das myname reading auf den jeweiligen Namen des Devices gesetzt werden?

(PS: ich hoffe die Frage is t am richtigen ort hier...)

Grüsse aus der Schweiz!

STefan

betateilchen

Nur interessehalber: Welchen Sinn macht es, den Wert NAME aus den internals eines device nochmal in ein reading des gleichen devices zu kopieren?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig


clumsy

@betateilchen
naja, ist etwas umständlich zu erklären... ich möchte das $DEV in einem ReadingsVal innerhalb des setreading gebrauchen um einen wert zu "refreshen"... da ich aber ein change-on-reading drauf habe, muss ich den wert natürlich wieder aufs gleiche setzten... zusammen mit einem userattr setting der dann das setting gegebenenfalls anpasst....

konkret hab ich bei devices welches kein eigenes battery reading haben eins via userattr erstellt und um rauszufinden ob das device noch lebt setzte ich das reading immer wieder neu und vergleiche den timestamp (so eine mischung zwischen dem wiki-eintrag und selbstgebastelt),... als dead-or-alive erkennung von sensoren....

ich hoffe das ist einigermassen verständlich... schwierig zu beschreiben...

aber immerhin, auch wenns unsinnig ist, wieder ein bug gefunden und behoben ;)

@Ruedi
Super! Danke!! prompter Service....

Gruess

STefan

betateilchen

Zitat von: clumsy am 30 Januar 2017, 21:10:10
ich hoffe das ist einigermassen verständlich... schwierig zu beschreiben...

Das würde ich mittels einer Funktion in der 99_myUtils.pm lösen, in der ich regelmäßig (z.B. einmal pro Stunde) per ReadingsAge() die devices prüfe.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

clumsy

Zitat von: betateilchen am 30 Januar 2017, 21:27:20
Das würde ich mittels einer Funktion in der 99_myUtils.pm lösen, in der ich regelmäßig (z.B. einmal pro Stunde) per ReadingsAge() die devices prüfe.

Ja, hatte ich mir auch überlegt sowas... aber erstens war ich zu faul (sorry) und zweitens ists irgendwie schön so finde ich, so spielts keine rolle was es für ein device ist resp. ich kann einfach eine readingsgroup machen die dann den status ausliest und brauche mich nicht um regex zeugs zu kümmern... und kanns erst nochpro device direkt ins device schreiben... so steht auch das "timeout" im device selbst drin und nicht irgendwo zentral... naja, jeder wie ers mag ;)

aber danke für den hinweis, ich hab readingsAge noch gar nie verwendet (oder gekannt)... ich brauch FHEM immernoch wie vor 10 jahren glaub ;) nur dass die config unterdessen riesig ist... unterdessen ist bei mir glaub alles im FHEM drin was strom braucht... aber eben, sehr viel gewachsen...

aber ich hätte hier https://forum.fhem.de/index.php/topic,14425.msg571478.html#msg571478 noch ein problem, dass ich echt nicht so genau weiss wie anpacken (owbohl ich so eine unschöne lösung hab...)