Hauptmenü

userreading erstellen ...

Begonnen von misux, 03 Mai 2023, 12:03:29

Vorheriges Thema - Nächstes Thema

misux

HI!
Ich versuche ein einfache userreading zu erstellen...

In einem Dummy soll ein userReading drin sein "Ort" welches ein Reading (Chrissi) von meinem "geofancy" modul übernimmt...

Hat jemand eine kurze Idee Parat wie das userreading aussehen soll?

userReadings Ort:[geofancy:Chrissi]

will nicht wirklich funktionieren..

MadMax-FHEM

Zitat von: misux am 03 Mai 2023, 12:03:29will nicht wirklich funktionieren..
Heißt was?

Dir ist bewusst, dass ein userReadings nur "ausgewertet" wird, wenn es beim Device WO ES DRAN HÄNGT ein Event gibt (der zum Trigger passt)!!?
Ich nehme an, dass beim dummy NIE ein Event kommt (woher auch) und daher das userReadings auch nie "ausgewertet" wird.

(ob das mit setMagic so stimmt: keine Ahnung, ich nutze "old school" ReadingsVal und co.)

Warum überhaupt ein dummy?

Vermutlich wird das nur mit einem notify (oder DOIF) auf das Reading Chrissi beim geofancy-Device funktionieren bzw. auf ein notify auf diesen Event.
Dort dann setreading dummy-Device Ort Wert-aus-Chrissi...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

misux

Oh mann... da hab ich wohl was falsch verstanden... OKay... Dachte ein dummy kann auch readings als userreading von anderen devices übernehmen... Aber dann muss es halt mit einem DOIF realisieren...

MadMax-FHEM

Zitat von: misux am 03 Mai 2023, 12:38:44Oh mann... da hab ich wohl was falsch verstanden... OKay... Dachte ein dummy kann auch readings als userreading von anderen devices übernehmen... Aber dann muss es halt mit einem DOIF realisieren...

So ist es auch nicht richtig ;)

Es geht schon aber es muss eben beim dummy ein Event kommen (der zum Trigger des userReadings passt: in deinem Fall wäre es "jedes Event"), nur kommen beim dummy eben keine Events "einfach so"...
...bzw. "regelmässig"...

Trotzdem: warum dummy? Evtl. gibt es eine andere (bessere) Lösung?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

misux

Ja, ich glaube das mit dem Dummy ist e Blöde Idee...

Ich will eigentlich im FTIU mir zu dem jeweiligen Teilnehmer anzeigen lassen wo er sich laut geofancy aktuell befindet... Habe 3-4 Standorte und dann den underway status dort...

Und wenn der Teilnehmer dann zuhause ist soll die anzeige komplett verschwinden...

betateilchen

#5
Zitat von: MadMax-FHEM am 03 Mai 2023, 12:13:31Vermutlich wird das nur mit einem notify (oder DOIF) auf das Reading Chrissi beim geofancy-Device funktionieren bzw. auf ein notify auf diesen Event.
Dort dann setreading dummy-Device Ort Wert-aus-Chrissi...

Es geht auch einfacher, man kann nämlich ein userReading auch als fakeNotify verwenden...

defmod dummy1 dummy
attr dummy1 userReadings fakeNotify:valFromDummy1.* {fhem("setreading dummy2 externalVal ".ReadingsVal($name,'valFromDummy1','?'));; return undef}

defmod dummy2 dummy

Wenn jetzt im dummy1 ein Wert in das reading "valFromDummy1" geschrieben wird, wird dieser Wert auch nach dummy2 in das reading "externalVal" übertragen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

#6
Zitat von: betateilchen am 03 Mai 2023, 13:28:14
Zitat von: MadMax-FHEM am 03 Mai 2023, 12:13:31Vermutlich wird das nur mit einem notify (oder DOIF) auf das Reading Chrissi beim geofancy-Device funktionieren bzw. auf ein notify auf diesen Event.
Dort dann setreading dummy-Device Ort Wert-aus-Chrissi...

Es geht auch einfacher, man kann nämlich ein userReading auch als fakeNotify verwenden...

defmod dummy1 dummy
attr dummy1 userReadings fakeNotify:valFromDummy1.* {fhem("setreading dummy2 externalVal ".ReadingsVal($name,'valFromDummy1','?'));; return undef}

defmod dummy2 dummy

Wenn jetzt im dummy1 ein Wert in das reading "valFromDummy1" geschrieben wird, wird dieser Wert auch nach dummy2 in das reading "externalVal" übertragen.

Wollte ich auch nennen, allerdings habe ich "sowas" schon mal im Forum "präsentiert" und da wurde geschrieben (sogar von dir?), dass man "sowas" nicht macht/machen sollte bzw. nicht "nennen" sollte 8)

EDIT: oder zumindest so ähnlich ;) https://forum.fhem.de/index.php?topic=123492.msg1180329#msg1180329

Daher habe ich das (diesmal) hier mal gelassen... ;)

Allerdings "muss" ich bei meinen "Konstrukten" ein sleep 0.1 vor das setreading setzen, ansonsten wurde (bei mir) nicht "sofort" aktualisiert/weitergegeben...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Zitat von: MadMax-FHEM am 03 Mai 2023, 13:46:25Allerdings "muss" ich bei meinen "Konstrukten" ein sleep 0.1 vor das setreading setzen, ansonsten wurde (bei mir) nicht "sofort" aktualisiert/weitergegeben

Das sleep brauchst Du eigentlich nur, wenn Du das setreading in das gleiche device zurückschreiben willst. setreading in das auslösende device aus einem userReading heraus wird von FHEM unterbunden, um eine Endlossschleife zu unterbinden. Durch das sleep werden das userReading und das setreading voneinander entkoppelt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#8
Zitat von: MadMax-FHEM am 03 Mai 2023, 13:46:25da wurde geschrieben (sogar von dir?)

Dir ist hoffentlich klar, dass "betateilchen" und "Beta-User" zwei Personen sind.

Übrigens: MACHEN würde ich das in meinen Installationen auch nicht. Dafür gibt es immer bessere Alternativen.
Wie ich damals schon geschrieben hatte:

ZitatEin userreading ist technisch betrachtet auch nichts anderes als eine Sonderform eines notify.
Gedacht für Leute, die es nicht schaffen, ein notify selbst anzulegen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

misux

Ach wie schön auf was man für deen kommt wenn man sich etas drüber unterhält...

Und schon habe ich meine Lösung OHNE Dummy oder sonstwas:

        <div class="vbox">
                <div class="bold white"  data-type="label" data-hide="currLoc_Chrissi" data-hide-on="Zuhause" data-device="geofancy" data-states='[""]' data-colors='[""]' data-get="currLoc_Chrissi" data-pre-text="Chrissi: "></div>
                <div class="bold  white"  data-type="label" data-hide="currLoc_Dominic6" data-hide-on="Zuhause" data-device="geofancy" data-states='[""]' data-colors='[""]' data-get="currLoc_Dominic6" data-pre-text="Dominic: "></div>
                <div class="bold  white"  data-type="label" data-hide="currLoc_Dominic9" data-hide-on="Zuhause" data-device="geofancy" data-states='[""]' data-colors='[""]' data-get="currLoc_Dominic9" data-pre-text="Dominic: "></div>
                <div class="bold  white"  data-type="label" data-hide="currLoc_David" data-hide-on="Zuhause" data-device="geofancy" data-states='[""]' data-colors='[""]' data-get="currLoc_David" data-pre-text="David: "></div>
         </div>

Mit dem Code habe ich alles was ich wollte..

Was mir nicht so ganz gefällt ist die bezeichnung der readings im geofancy... aber das kann man ja jetzt per userReadings ändern indem man ja ein userReading im  geofancy erstellt welches auf das unschöne triggert... Richtig?

MadMax-FHEM

Zitat von: betateilchen am 03 Mai 2023, 13:51:47Das sleep brauchst Du eigentlich nur, wenn Du das setreading in das gleiche device zurückschreiben willst. setreading in das auslösende device aus einem userReading heraus wird von FHEM unterbunden, um eine Endlossschleife zu unterbinden. Durch das sleep werden das userReading und das setreading voneinander entkoppelt.

Dachte ich auch, ist/war aber bei mir auch so, selbst wenn es zu einem anderen Device geht (was bei mir der Fall ist).
Ohne sleep hab ich mich manchmal gewundert, warum ein Update (z.B. STATE) "so lange" dauert, obwhl der Wert am Original-Device schon lange gesetzt war (und somit das userReadings eigentlich auch)...
Mit dem sleep geht es jetzt sofort...

Wie geschrieben: bei mir (und dass das eigentlich nur beim selben Device logisch ist, ist mir klar)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: betateilchen am 03 Mai 2023, 13:54:39Dir ist hoffentlich klar, dass "betateilchen" und "Beta-User" zwei Personen sind.
Jaja, das kann ich schon auseinanderhalten ;)

Nix für ungut, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Zitat von: misux am 03 Mai 2023, 14:17:01Was mir nicht so ganz gefällt ist die bezeichnung der readings im geofancy... aber das kann man ja jetzt per userReadings ändern indem man ja ein userReading im  geofancy erstellt welches auf das unschöne triggert... Richtig?

Richtig, aber völlig sinnfrei. Es ist doch völlig wurscht, wie ein reading heißt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

misux

Es ist aber nicht wurscht wenn dieser Status im FTUI gezeigt werden soll dieser aber doof klingt ... Deshalb das Userreading..