FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: AmunRe am 07 Januar 2015, 10:28:11

Titel: Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 10:28:11
Hallo Zusammen,

ich bin neu im FHEM Bereich, habe allerdings schon einiges realisiert. Ich bin nun aber schon seit 3 Tagen an etwas (eigentlich völlig simplen) Problem.
in der Einstigeshilfe finde ich auch nicht die Lösung, da ist irendwann einfach auf dem Übersichtsbild eine Temperaturangebe mit °C steht aber leider nicht wie es geht.


Ich hätte gern im in der Weboberfläche hinter meinem Sensor der wie folgt ausgegeben wird: "T:2.4 H:95" stehen das es jeweils °C sind und %.
(http://fs2.directupload.net/images/150107/5mgym8op.png)
Mit den readingsgoup kann ich das lösen, weil ich da FormatValue habe. Aber wie kann ich meine Readings ohne Gruppen im Format verändern?


Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 10:50:40
sollten die Werte neben der Angabe im state auch z.B. in den Readings temperatur und humidity vorliegen kann man z.B. im Attribut stateFormat folgendes ausprobieren: {sprintf("Temperatur: %.1f °C, Luftfeuchtigkeit: %.1f %%, ReadingsVal($name,"temperature",0), ReadingsVal($name,"humidity",0))}

falls die Daten nur im state vorkommen müsste man allerdings den string auseinander nehmen.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 11:00:49
Hallo! Vielen dank für die Unterstützung!

Das Attr Stateformat ist leider nicht verfügbar.

Hab es mal als Bild angehängt.



Wenn ich es manuell in die FHEM.cfg eintrage sagt er mir auch unknown attr.

(http://fs1.directupload.net/images/150107/4mvdrzas.png)
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 11:35:59
das ist dann mal ein sehr reduziertes Modul...

bis jemand eine bessere Lösung gefunden hat wirst du dann den Weg über ein dummy gehen müssen:

1. ein notify auf Änderungen des ts_wohnzimmer
2. ein dummy mit den userReadings temperature und humidity
3. innerhalb des notify die Readings von ts_wohnzimmer dem jeweiligen userReading des dummy zuweisen
4. ein geeignetes stateFormat für das dummy.... {sprintf("Temperatur: %.1f °C, Luftfeuchtigkeit: %.1f %%, ReadingsVal($name,"temperature",0), ReadingsVal($name,"humidity",0))}
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: Puschel74 am 07 Januar 2015, 11:48:59
Hallo,

schonmal ein update gemacht?

Grüße

Edith:Als Anfänger würde ich nicht in der fhem.cfg rumschrauben es sei den du weißt was du machst.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 11:53:07
haste beim USBWX mal eben schnell das stateFormat eingefügt? ;)
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 12:08:26
ZitatHallo,

schonmal ein update gemacht?
Ja, habe das Update gerade gemacht, sehe auch die Veränderugen im USBWDE1 habe aber dennoch kein stateFormat im ts_Wohnzimmer.  :(

ZitatEdith:Als Anfänger würde ich nicht in der fhem.cfg rumschrauben es sei den du weißt was du machst.
Sagen wir es so, ich kenne mich mit dem Grundsystem (Linux gut aus) daher kann ich das Backup jederzeit wieder einspielen.

Aber Grüße zurück!

Ich bin jetzt mit dem Dummy soweit define tempaenderungWZ notify ts_wohnzimmer {?}
define tempwohnzimmer dummy
attr tempwohnzimmer userReadings temperature humidity
attr tempwohnzimmer stateFormat {sprintf("Temperatur: %.1f °C, Luftfeuchtigkeit: %.1f %%", ReadingsVal("ts_aussen","temperature",0), ReadingsVal("ts_aussen","humidity",0))}


ich bin hab aber keine Ahnung was ich im notify eintragen soll, daher auch das Fragezeichen.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: Puschel74 am 07 Januar 2015, 12:10:56
Nach einem update ist idR ein shutdown restart erforderlich.
Auch gemacht?
Was sagt version?
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 12:13:02
Hab ich gemacht, sagt ja das update schon das es einen Neustart braucht.

Zitatversion $Id: fhem.pl 7358 2014-12-29 16:03:31Z rudolfkoenig $, os linux, user fhem, pid 2431


update check sagt auch "Nothing to do..."
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: Puschel74 am 07 Januar 2015, 12:15:29
Du wärst nicht der erste der diese Meldung übersieht.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 12:20:59
ZitatDu wärst nicht der erste der diese Meldung übersieht.

Stimmt. Ich wollte damit auch nur daraufhinweisen das ich es gelesen habe. :-[


Sollte es jetzt ein stateformat geben? oder war der Hinweis auf das Update generell gemeint?



Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 12:48:01
Zitat von: AmunRe am 07 Januar 2015, 12:08:26
ich bin hab aber keine Ahnung was ich im notify eintragen soll, daher auch das Fragezeichen.

in etwa so sollte es klappen:

ts_wohnzimmer.* {
     fhem ("setreading tempwohnzimmer temperature ReadingsVal("ts_wohnzimmer","temperature",0)");
     fhem ("setreading tempwohnzimmer humidity ReadingsVal("ts_wohnzimmer","humidity",0)");
}

wenn du das direkt in die config eingibst, dann werden da sicherlich noch jeweils ein Semikolon und ein Back-Slash pro Zeile innerhalb der Klammer hinzukommen... ich nutze direkt den Editor fürs Notify, da ich komplett auf configDB umgestellt habe.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: Puschel74 am 07 Januar 2015, 12:50:24
Es sollte VOR jeder Frage geklärt sein ob es eine aktuelle Version gibt.
Kein Modulautor wird "Fehler" in alten Versionen beheben die schon lange behoben sind.

Ob deine Geräte das Attribut kenne /können kann dir nur der Modulautor sagen resp. er kann es nachrüsten wenn es fehlen sollte.
Solange bleibt dir vermutlich nur der Umweg über einen Dummy und das passende notify dazu.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 13:33:33
Zitat von: DerFrickler am 07 Januar 2015, 12:48:01
in etwa so sollte es klappen:

ts_wohnzimmer.* {
     fhem ("setreading tempwohnzimmer temperature ReadingsVal("ts_wohnzimmer","temperature",0)");
     fhem ("setreading tempwohnzimmer humidity ReadingsVal("ts_wohnzimmer","humidity",0)");
}

wenn du das direkt in die config eingibst, dann werden da sicherlich noch jeweils ein Semikolon und ein Back-Slash pro Zeile innerhalb der Klammer hinzukommen... ich nutze direkt den Editor fürs Notify, da ich komplett auf configDB umgestellt habe.

Den Befehl habe ich passend eingebunden - Dankeschön!

Ich weiß nicht was configDB ist, aber es klingt interessant. Wenn ich mit den Grundsachen soweit bin, lese ich mich dazu ein.

So sieht es jetzt aus
define tempaenderungWZ notify ts_wohnzimmer.* { fhem ("setreading tempwohnzimmer temperature ReadingsVal($name,"temperature",0)");;fhem ("setreading tempwohnzimmer humidity ReadingsVal($name,"humidity",0)")}

define tempwohnzimmer dummy
attr tempwohnzimmer stateFormat {sprintf("Temperatur: %.1f °C, Luftfeuchtigkeit: %.1f %%", ReadingsVal("ts_wohnzimmer","temperature",0), ReadingsVal("ts_wohnzimmer","humidity",0))}
attr tempwohnzimmer userReadings temperature,humidity


Allerdings bekomme ich beim Dummy nur 3 Fragezeichen angezeigt. Noch irgendwas falsch?

ZitatEs sollte VOR jeder Frage geklärt sein ob es eine aktuelle Version gibt.
Kein Modulautor wird "Fehler" in alten Versionen beheben die schon lange behoben sind.

Ob deine Geräte das Attribut kenne /können kann dir nur der Modulautor sagen resp. er kann es nachrüsten wenn es fehlen sollte.
Solange bleibt dir vermutlich nur der Umweg über einen Dummy und das passende notify dazu.

Ja, ist natürlich logisch. Ich will ja auch keine alte Version. Hab mir deswegen ja auch das Menü so angelegt wie es in der Einsteiger.pdf steht.
Aber ich weiß die Fragen müssen sein.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 13:45:51
Zitat von: AmunRe am 07 Januar 2015, 13:33:33
Allerdings bekomme ich beim Dummy nur 3 Fragezeichen angezeigt. Noch irgendwas falsch?

Die drei Fragezeichen und der Dummy, haste ne Hörspielkassette im Laufwerk? Die Folge kenne ichgar nicht! ;)

Spass bei Seite... wir warten auf das Christkind... oder das Event, welches den Notify auslöst.

temporär setzt du in ts_wohnzimmer das Attribut auf event_on_update_reading auf den Wert .*; nach der ersten Aktualisierung setzt du das Attribut zurück

bei der nächsten Aktualisierung sollte das notwendige Event ausgelöst werden (Siehe Timestamp hinter den Readings).

In der Zwischenzeit liest Du Dir in der Commandref den Teil unter "readingFnAttribute" den Teil über events durch... kann für die Zukunft noch mal interessant werden. Irgendwann werden es immer mehr Events, wobei man nur einen Bruchteil davon benötigt. Die einen Rüsten dann die Hardware auf, die anderen optimieren ihre Einstellungen.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 13:57:10
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

Titel: Antw:Readings Darstellung in FHEM
Beitrag von: Puschel74 am 07 Januar 2015, 13:59:43
Logfile und EventMonitor können auch recht hilfreich sein.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 14:00:40
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.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 14:05:36
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
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: Puschel74 am 07 Januar 2015, 14:11:02
$name sollte auch $NAME sein.

Zitatvielen Dank an der Stelle für den Hinweis.
http://forum.fhem.de/index.php/topic,16311.0.html (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.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 14:25:28
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.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: Puschel74 am 07 Januar 2015, 14:28:27
$EVENTPART1
$EVTPART1 bitte - oben hast dus richtig nur im Code nicht.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 14:28:40
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.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 14:35:26
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.
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 14:43:07
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.
Titel: Antw:Readings Darstellung in FHEM
Beitrag 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 ???
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: DerFrickler am 07 Januar 2015, 15:31:21
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
Titel: Antw:Readings Darstellung in FHEM
Beitrag von: AmunRe am 07 Januar 2015, 15:32:36
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!