Readings Darstellung in FHEM

Begonnen von AmunRe, 07 Januar 2015, 10:28:11

Vorheriges Thema - Nächstes Thema

AmunRe

#15
Sollte ich das Hörspiel finden, schenk ich es dir! Allein für die viele Hilfe.

Ich kann in ts_wohnzimmer kein event_on_update setzen, das attr gibt es nicht. Beschränktes Modul...

Jedenfalls hab ich auch erst gedacht es liegt daran das erst ein update passieren muss, daher hab ich den Post erst losgeschickt nachdem es einen neuen Timestamp gab.

notify sagt übrigens 13:50:31 letzte Ausführung. Demnach gab es schon Änderungen.

Dennoch bleiben die Fragezeichen in Dummy, hab ich die userReadings falsch gesetzt?


Edit:

Habe mir jetzt "readingFnAttribute" duangeschaut. Danke dafür.

Und ich weiß Du meintest wohl nicht Ts_wohnzimmer selbst, sondern den Dummy wo ich das event_on_change setzen sollte. Habe ich jetzt

4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

Puschel74

Logfile und EventMonitor können auch recht hilfreich sein.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

DerFrickler

haben sich die userReadings im Dummy geändert (TimeStamp mit Wert oder auch nur Fragezeichen)?

wurde der Notify ausgelöst (TimeStamp)?

gibt dir der LogFile interessante Informationen zum Vorgang (z.B. Fehlermeldungen)?

dann lass mal in einem 2. Fenster den Eventlog laufen... möglicherweise wird für das Device auch nur kein Event ausgelöst.

AmunRe

#18
Zitat5.01.07 13:59:22 1: PERL WARNING: String found where operator expected at (eval 395) line 1, near "humidity",0)""
2015.01.07 13:59:22 3: eval: { fhem ("setreading tempwohnzimmer temperature ReadingsVal($name,"temperature",0)");fhem ("setreading tempwohnzimmer humidity ReadingsVal($name,"humidity",0)")}
2015.01.07 13:59:22 3: tempaenderungWZ return value: Global symbol "$name" requires explicit package name at (eval 395) line 1.
syntax error at (eval 395) line 1, near ""setreading tempwohnzimmer temperature ReadingsVal($name,"temperature"
Global symbol "$name" requires explicit package name at (eval 395) line 1.
syntax error at (eval 395) line 1, near ""setreading tempwohnzimmer humidity ReadingsVal($name,"humidity"

das passiert im log, vielen Dank an der Stelle für den Hinweis.

Wenn ich das richtig verstehe, kann er mit $name nichts anfangen? Wobei doch eigentlich das Modul welches  das Event auslöst drin stehen sollte?

Und im Eventmonitor passiert :
Zitat2015-01-07 14:08:13 USBWX ts_wohnzimmer temperature: 19.8
2015-01-07 14:08:13 USBWX ts_wohnzimmer humidity: 58
2015-01-07 14:08:13 USBWX ts_wohnzimmer dewpoint: 11.3
2015-01-07 14:08:13 USBWX ts_wohnzimmer T: 19.8 H: 58
2015-01-07 14:08:57 USBWX ts_Schlafzimmer temperature: 19.1
2015-01-07 14:08:57 USBWX ts_Schlafzimmer humidity: 57
2015-01-07 14:08:57 USBWX ts_Schlafzimmer dewpoint: 10.4
2015-01-07 14:08:57 USBWX ts_Schlafzimmer T: 19.1 H: 57
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

Puschel74

#19
$name sollte auch $NAME sein.

Zitatvielen Dank an der Stelle für den Hinweis.
http://forum.fhem.de/index.php/topic,16311.0.html
Jeder darf die angepinnten Beiträge im Anfängerbereich lesen - mit der Info daraus hätten sich meine Fragen bereits erübrigen können.

Wenn im EventMonitor aber nichts auftaucht - ich weiß nicht wie oft deine Sensoren senden - kann auch das Reading nicht gebaut werden.
Das würde mich aber wundern da du einen Temperatur- und Feuchteeintrag im Screenshot zeigst.
Evtl. einfach mal etwas warten - und dem Link mal folgen  ;)

Edith: Na dann sollte sich ja was neues im Logfile finden lassen und evtl. schon die Readings im Dummy.
Edith2: Ich bin mir nicht ganz sicher aber sollte das
{ fhem ("setreading tempwohnzimmer temperature ReadingsVal($NAME,"temperature",0)");fhem ("setreading tempwohnzimmer humidity ReadingsVal($NAME,"humidity",0)")}
nicht so
{ fhem ("setreading tempwohnzimmer temperature ".ReadingsVal($NAME,"temperature",0));fhem ("setreading tempwohnzimmer humidity ".ReadingsVal($NAME,"humidity",0))}
aussehen?
Edith3: Sorry - Code angepasst, ich bearbeite nur das DEF und da müsste mMn ein ; hinein.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

DerFrickler

ich hätte hier schon eher den konkreten Namen genommen, da der Notify auch auf ein konkretes device ausgerichtet ist.

in der Commandref unter notify findest du folgendes interessantes Beispiel:

define wzMessLg notify wz:measured.* "/usr/local/bin/logfht $NAME "$EVENT""

mit den Hinweisen:

In der Anweisung von Notify kann das auslösende Ereignis (Event) genutzt werden:
Die Anweisung $EVENT wird das komplette Ereignis (Event) beinhalten, z.B. measured-temp: 21.7 (Celsius)
$EVTPART0,$EVTPART1,$EVTPART2,etc enthalten die durch Leerzeichen getrennten Teile des Events der Reihe nach (im Beispiel also $EVTPART0="measured-temp:", $EVTPART1="21.7", $EVTPART2="(Celsius)".

Mir ist gerade eben in den Sinn gekommen dass im Grunde ja zwei relevante Events ausgelöst werden:

2015-01-07 14:08:13 USBWX ts_wohnzimmer temperature: 19.8
2015-01-07 14:08:13 USBWX ts_wohnzimmer humidity: 58

möglicherweise macht es mehr Sinn das ganze auch in zwei notify zu splitten und dann auch das $EVENTPART1 zu nutzen

define tempaenderungWZ.temperature notify ts_wohnzimmer:temperature.* { fhem ("setreading tempwohnzimmer temperature $EVENTPART1")}
define tempaenderungWZ.humidity notify ts_wohnzimmer:humidity.* { fhem ("setreading tempwohnzimmer humidity $EVENTPART1")}

Um die Anzahl der Events zu reduzieren setzt du anschliessend in ts_wohnzimmer das Attribut event-on-change-reading auf temperature,humidity, es sei denn die anderen Readings interessieren dich auch noch.

Puschel74

$EVENTPART1
$EVTPART1 bitte - oben hast dus richtig nur im Code nicht.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

DerFrickler

nur solange du testest setzt du für ts_wohnzimmer (zusätzlich zum event-on-change-reading) das Attribut event-on-update-reading auf temperature,humidity, es sei denn die Temperatur und Luftfeuchtigkeit ändern sich im Minutentakt.

AmunRe

ZitatEdith2: Ich bin mir nicht ganz sicher aber sollte das
Code: [Auswählen]
{ fhem ("setreading tempwohnzimmer temperature ReadingsVal($NAME,"temperature",0)");fhem ("setreading tempwohnzimmer humidity ReadingsVal($NAME,"humidity",0)")}
nicht so
Code: [Auswählen]
{ fhem ("setreading tempwohnzimmer temperature ".ReadingsVal($NAME,"temperature",0));fhem ("setreading tempwohnzimmer humidity ".ReadingsVal($NAME,"humidity",0))}
aussehen?
Edith3: Sorry - Code angepasst, ich bearbeite nur das DEF und da müsste mMn ein ; hinein.

Ja, genau so sollte das Aussehen, dann kommen auch Werte und der Logfile sieht nicht so schlimm aus, vielen lieben Dank!
$name und $NAME.. casesensitiv, darf mir eigentlich nicht passieren. Entschuldigt.

ZitatMir ist gerade eben in den Sinn gekommen dass im Grunde ja zwei relevante Events ausgelöst werden:

2015-01-07 14:08:13 USBWX ts_wohnzimmer temperature: 19.8
2015-01-07 14:08:13 USBWX ts_wohnzimmer humidity: 58

Stimmt, werden aber immer zusammen übertragen, alle 3 Minuten zwei Werte. Daher reicht mir ein Event.

Ich bekomme jetzt Werte angezeigt und bedanke mich für die tolle Unterstützung!
Zitat
nur solange du testest setzt du für ts_wohnzimmer (zusätzlich zum event-on-change-reading) das Attribut event-on-update-reading auf temperature,humidity, es sei denn die Temperatur und Luftfeuchtigkeit ändern sich im Minutentakt.


Da ich schon Ergebnisse habe hab ich nur on update auf temperatur und humidity gebracht.
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

DerFrickler

Zitat von: AmunRe am 07 Januar 2015, 14:35:26
Stimmt, werden aber immer zusammen übertragen, alle 3 Minuten zwei Werte. Daher reicht mir ein Event.
sicherlich kein großer Akt, nur löst event-on-change-reading ein Event nur bei Änderung der Werte aus. Wenn jetzt lediglich die Temperatur sich ändert, dann würde die Luftfeuchtigkeit mit aktualisiert. Ändern sich beide Werte, dann werden in Folge des Temperatur-Events die Temperatur und die Luftfeuchtigkeit geschrieben, und innerhalb des Luftfeuchtigkeit-Events das ganze noch mal. An den Werten selbst ändert das gar nichts, nur dass sich für 2 Änderungen 4 Schreibvorgänge ergeben, mitunter sogar 4 neue Events auf das dummy.

Puschel74

#25
Du kannst auch mal das versuchen:
ts_wohnzimmer.(temperature|humidity).* setreading tempwohnzimmer $EVTPART0 $EVTPART1

Das notify triggert nur bei temperature und humidity und wenn das (vermutlich) auch in $EVTPART0 steht sollte obiges auch reichen - hoffentlich.
Edith: Wozu noch extra Perl und fhem wenn es auch nur in fhem klappen sollte ???
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

DerFrickler

Zitat von: Puschel74 am 07 Januar 2015, 14:45:19
Du kannst auch mal das versuchen:
ts_wohnzimmer.(temperature|humidity).* setreading tempwohnzimmer $EVTPART0 $EVTPART1

Das notify triggert nur bei temperature und humidity und wenn das (vermutlich) auch in $EVTPART0 steht sollte obiges auch reichen - hoffentlich.
Edith: Wozu noch extra Perl und fhem wenn es auch nur in fhem klappen sollte ???

das klappt, habe es mal an einer FB-DECT ausprobiert, nur muss man dem Readings in der Definition einen : hinzufügen, da $EVTPART0 mit einem : endet

der dummy

Internals:
   CFGFN
   NAME       TestDummy01
   NR         2819
   STATE      Temperatur: 22.2 °C, Leistung: 17.3 W
   TYPE       dummy
   CHANGETIME:
   Helper:
     Dblog:
       Power::
         Loggingdblog:
           TIME       1420640837.1018
           VALUE      17.30
       Temperature::
         Loggingdblog:
           TIME       1420640837.34143
           VALUE      22.2
   Readings:
     2015-01-07 15:27:17   power:          17.30
     2015-01-07 15:27:17   temperature:    22.2
Attributes:
   stateFormat {sprintf("Temperatur: %.1f °C, Leistung: %.1f W", ReadingsVal($name,"temperature:",0), ReadingsVal($name,"power:",0))}
   userReadings temperature, power


das notify

Internals:
   CFGFN
   DEF        FBDECT_17.(temperature|power).* setreading TestDummy01 $EVTPART0 $EVTPART1
   NAME       notify.TestDummy01
   NR         2944
   NTFY_ORDER 50-notify.TestDummy01
   REGEXP     FBDECT_17.(temperature|power).*
   STATE      2015-01-07 15:27:17
   TYPE       notify
Attributes:


die Ausgabe:

TestDummy01
Temperatur: 22.2 °C, Leistung: 15.5 W

AmunRe

Zitat von: Puschel74 am 07 Januar 2015, 14:45:19
Du kannst auch mal das versuchen:
ts_wohnzimmer.(temperature|humidity).* setreading tempwohnzimmer $EVTPART0 $EVTPART1

Ich soll diesen Code anstelle von
{ fhem ("setreading tempwohnzimmer temperature ".ReadingsVal($NAME,"temperature",0));fhem ("setreading tempwohnzimmer humidity ".ReadingsVal($NAME,"humidity",0))} diesem nehmen?

Ich werde es versuchen, allerdings erst heut Abend.

Super wie schnell und toll einem geholfen wird!
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs