Hallo zusammen,
Ich bin derzeit dabei meine 1Wire Sensoren übersichtlich im fhemweb darzustellen, derzeit bekomme ich aber keinen Dreh rein.
Ich möchte mir mit einer readingsgroup die readings eine 2Fach Kontaktsensors (Fensterüberwachung) Anzeigen lassen, dann möchte ich, dass die readingswerte 0 oder 1 unterschiedliche Symbole erhalten (Fenster auf/zu) und ich den Namen der gefundenen readings ähnlich eines alias individuell abändern kann um sie dem Betrachter verständlich zu machen.
Bisher habe ich es nur geschafft die readingsgroup mit den 2 readings eines Sensors zu erstellen, bei den anderen Punkten scheitere ich bisher.
define Fenster_Obergeschoss readingsGroup Contact.Dachboden_gross:sensed.A Contact.Dachboden_gross:sensed.B
Über eure Hilfe würde ich mich freuen!
Greetz
Eldrik
define rg readingsGroup Contact.Dachboden_gross:sensed.*
attr rg mapping { 'sensed.A' => 'links', 'sensed.B' => 'rechts' }
attr rg valueFormat {($VALUE eq '1')?"on":"off"}
attr rg valueIcon %VALUE
on und off musst du an die icons anpassen die du verwenden willst.
gruss
andre
Klasse!
Aber wie kann ich jetzt wenn ich statt on und off open closed verwende entsprechende Icons auswählen z.B offenes oder geschlossenes Fenster aus dem ios7 theme?
Damit komm ich irgendwie nicht klar...
Greetz
Eldrik
du nimmst entweder den namen des icons oder des status aus dem mapping file.
gruss
andre
Scheinbar echt ne harte Nuss für mich
Ich hab es jetzt analog dem valueFormat probiert
{($VALUE eq '1')?'fts_window_roof':'fts_window_roof_open'}
aber nichts passiert, trage ich nur den Icon Namen ein erscheint das Icon aber ein Wechsel ist so ja nicht möglich...
so einfach wie open:icon1 closed:icon2 wird es ja nicht sein oder?
Greetz
Eldrik
also bei mir geht es mit attr rg valueFormat {($VALUE eq '1')?"fts_window_roof":"fts_window_roof_open_2"}
gruss
andre
mit valueFormat?
Wenn ich den gleichen Code in valueFormat oder auch valueIcon kopiere erscheint bei mir nur der reine Text und nicht die Icons :o
Muss ich noch irgendwo etwas an zentralerer Stelle einstellen?
Edit: ah das $VALUE unter valueIcon und dem obigen Code hasts gebracht :D
Greetz
Eldrik
Hallo Zusammen,
ich habe ebenfalls das Problem das die Icons nicht angezeigt werden, bei der letzten Befehlszeile "attr rg1 valueIcon %VALUE" bekomme ich allerdings auch folgende Fehlermeldung:
"rg1: unknown attribute valueIcon, choose one of verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings nameIcons mapping separator style nameStyle valueStyle valueFormat timestampStyle noheading:1 nolinks:1 notime:1 nostate:1 devStateIcon devStateStyle fp_1OG.png fp_Dachgeschoss fp_Erdgeschoss fp_Keller fp_Obergeschoss fp_fp_1OG.png fp_fp_og icon sortby webCmd or use attr global userattr valueIcon"
Die Icons sollen auf dem Floorplan "fp_Dachgeschoss" angezeigt werden.
Hier mein kompletter Code für den Sensor:
rename DS2413_15E613000000 Fensterkontakte_Buero
att Fensterkontakte_Buero fp_Dachgeschoss 50,740,4,Büro
define rg1 readingsGroup Fensterkontakte_Buero:sensed.*
attr rg1 mapping { 'sensed.A' => 'links', 'sensed.B' => 'rechts' }
attr rg1 valueFormat {($VALUE eq '1')?"fts_window_1w":"fts_window_1w_open_2"}
attr rg1 valueIcon %VALUE
Jemand eine Idee was ich falsch gemacht habe?
Gruß,
Wolly
du hast nicht die aktuelle version.
mach mal ein update.
gruss
andre
Mein Version war in der Tat zu alt, gerade mal vor wenigen Monaten installiert.
Vielen Dank für deine Hilfe.
Hättest du noch einen Tipp wie ich die Symbole meinem Floorplan "fp_Dachgeschoss" hinzufügen kann?
Gruß,
Wolly
eine readingsGroup wird wie jedes andere device zum floorplan hinzugefügt.
am einfachsten über die detail ansicht des jeweiligen floorplan device.
gruss
andre
es kann so einfach sein :)
Danke
Eine Frage habe ich dann doch noch :)
Wenn ich die readingsGroupe abfrage ist alles in ordnung:
links offenes Fenster Symbol und der Zeitstempel
rechts geschlossenes Fenster Symbol und der Zeitstempel
Nach einer Minute wird der Zeitstempel des offenen Fensters "rot" und aktualisiert sich,
das Symbol des geschlossenen Festers verschwindet, dafür erscheint eine "1" und der Zeitstempel aktualisiert sich nicht.reali
Ach so, realisiert habe ich die Schaltung mittels eines 1-wire "DS2413"
Gruß,
Wolly
zeig mir mal bitte definitionen und jeweils ein list vor und nach dem fenster öffnen auf die 1-wire devices und auch die readingsGroup.
gruss
andre
Ich habe z.Zt. nur remote Zugriff, daß ich den Sensor Zustand nicht ändern kann.
So wie ich das sehe müßte es an der "readingsgroup" liegen, wenn ich mir den Device Status ohne Icons anschaue, wird der minütlich upgedatet und wird rot, da scheint alles zu funktionieren.
Gruß,
Wolly
ach ja mit dem Attribut "devStateIcon" wollte ich eigentlich die Farbe des Icons ja nach Zustand ändern, funktioniert aber nicht, der Schreibfehler ist bereits korrigiert :)
readingaGroup kennt kein devStateIcon attribut bzw. das ist das globale attribut das dich auf das state icon der readinsGroup selber bezieht. das gibt es aber nicht. warum das bei dir überhaupt etwas tut muss ich rausfinden.
für das was du möchtest ist das valueIcon attribut der readingsGroup zuständig.
das mappt einen readings wert auf ein icon das statt dessen dargestellt wird
gruss
andre
Ok, "devStateIcon" Attribut gelöscht,
aber der Zeitstempel aktualisiert sich weiterhin nicht und das Symbol verschwindet nach einer Minute und wird durch eine "1" errsetzt
ich schau es mir heute abend an.
gruss
andre
ich hab den Fehler gefunden. ab morgen ist die reparierte version im update.
gruss
andre
Ja cool.
Danke.
:D :D :D funktioniert :D :D :D
Hallo!
Ich mal wieder ein Problem. Ich würde gerne eine ReadingsGroup von mehreren S300TH's erstellen. Sollte ca. so aussehen:
Wohnzimmer: Temperatur: 20°C Luftfeuchtigkeit: 58%
define wzTemperaturenRG readingsGroup <Wohnzimmer:>,Wohnzimmer:,<Temperatur>,temperature,<Luftfeuchte>,humidity
attr wzTemperaturenRG alias Temperaturen
attr wzTemperaturenRG group TemperaturenRG
attr wzTemperaturenRG noheading 1
attr wzTemperaturenRG nostate 1
attr wzTemperaturenRG notime 1
attr wzTemperaturenRG room 1. Wohnzimmer
attr wzTemperaturenRG valueFormat {temperature => "%.1f °C", humidity =>"%.1f %%" }
attr wzTemperaturenRG valueStyle { if($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE > 23) { 'style="color:red"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE > 21) { 'style="color:orange"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE < 20) { 'style="color:blue"'}elsif($READING eq "humidity" && $VALUE > 65) { 'style="color:red"'}elsif($READING eq "humidity" && $VALUE > 60) { 'style="color:orange"'}else{'style="color:green"'} }
funktioniert leider nicht. Wenn ich das define auf
define wzTemperaturenRG readingsGroup Wohnzimmer:,<Temperatur>,temperature,<Luftfeuchte>,humidity
ändere funktioniert es, aber es wird nicht der Name des S300TH angezeigt.
Hat jemand eine Idee?
Grüße
das problem ist der doppelpunkt bei <Wohnzimmer:>.
das ist immer der trenner zwischen device und reading regex und ohne 'richtigen' parser nicht vernünftig in den griff zu bekommen. deshalb sind in den <> ausrücken manche zeichen wie z.b. ':' nicht erlaubt. wenn du sie brauchst geht das entweder mit ':' oder über die <{...}> version in dem du im perl ausdruck eine sub aus 99_myUtils.pm aufrufst die dann jeden beliebigen string zurück liefern kann. zum beispiel eine die an den übergebenen string ein ':' anhängt.
das zweite problem ist das es einen bug gibt wenn ein <...> element an erster stelle steht. dann wird die zeilenüberschrift übergangen. das bringe ich in ordnung.
wenn du bis dahin damit leben kannst das die label ebenfalls eingefärbt werden kannst du bis dahin das hier verwenden:define wzTemperaturenRG readingsGroup s300ht_1:temperature,humidity
attr wzTemperaturenRG mapping %ALIAS:
attr wzTemperaturenRG valueFormat {temperature => "Temperatur %.1f %deg;C", humidity =>"Luftfeuchte %.1f %%"
oder das hier mit korrekter farbe:define wzTemperaturenRG readingsGroup s300ht_1:state,<Temperatur>,temperature,<Luftfeuchte>,humidity
attr wzTemperaturenRG mapping %ALIAS:
attr wzTemperaturenRG valueFormat {state => " ", temperature => "%.1f %deg;C", humidity =>"%.1f %%"
spätestens übermorgen hab ich es repariert und dann geht ganz normal:define wzTemperaturenRG readingsGroup s300ht_1:<Temperatur>,temperature,<Luftfeuchte>,humidity
attr wzTemperaturenRG mapping %ALIAS:
attr wzTemperaturenRG valueFormat {temperature => "%.1f %deg;C", humidity =>"%.1f %%"
statt %ALIAS kannst du auch %DEVICE oder %ROOM verwenden oder wenn keins davon passt einfach Wohnzimmer
gruss
andre
Das mit dem Wohnzimmer: war ein blödes Beispiel. Hatte es schon vorher ohne : versucht, in allen Variationen ;)
Super das du das einbaust bzw. fixed. Danke!
Ich werd es in der Zwischenzeit mit deinem tipp versuchen!
Grüße
ich hab es eben eingecheckt.
gruss
andre
Funktioniert danke!! ;D
Jetzt wird ja immer der alias angezeigt.
Schaff ich es irgendwie das ich
Aktuell: 200W Durchschnitt: 100W Heute: 3kWh Gesamt: 100kWh
angezeigt bekomm ohne den alias zu entfernen?
define stromverbrauchGesamtRG readingsGroup stromverbrauchGesamt:<Aktuell>,power,<Durchschnitt>,power_avg_day,<Heute>,consumption,<Gesamt>,consumptionTotal
attr stromverbrauchGesamtRG alias Stromverbrauch
attr stromverbrauchGesamtRG group 1. Aktuell / Gesamt
attr stromverbrauchGesamtRG noheading 1
attr stromverbrauchGesamtRG nostate 1
attr stromverbrauchGesamtRG notime 1
attr stromverbrauchGesamtRG room 5.1 Strom
attr stromverbrauchGesamtRG valueFormat {power => "%.1f W", power_avg_day =>"%.2f W", consumption => "%.2f kWh", consumptionTotal => "%.2f kWh" }
attr stromverbrauchGesamtRG valueIcon { state => '%devStateIcon' }
attr stromverbrauchGesamtRG valueStyle { if($READING eq "power" && $VALUE > 1000) { 'style="color:red"'}elsif($READING eq "power" && $VALUE > 500) { 'style="color:orange"'}elsif($READING eq "consumptionTotal" || $READING eq "CO2"){'style="color:black"'}else{'style="color:green"'} }
Grüße
z.b. mit
attr stromverbrauchGesamtRG mapping
wenn dein broswer das kann geht auch . das hat keine breite.
gruss
andre
Perfekt danke!
Kann es sein das viele readingsGroups das Verhalten von FHEM beeinflussen. Mir kommt vor das je mehr readingsGroups ich mache FHEM immer langsamer wird?
grüße
die readngsGroups kommen nicht umsonst und fhem muss natürlich die events verarbeiten. auch wenn eine readingsGroup gerade nicht angezeigt wird.
vermutlich lässt sich auch noch einiges optimieren. dazu wäre es aber gut wenn du etwas mehr als nur einen verdacht hast.
ich schaue mir das mal genauer an.
gruss
andre
Ich hab öfters das perfmon Modul aktiviert und auch alle readingsGroups in einer cfg damit ich sie leicht ausblenden kann. Wenn ich die readingsGroups.cfg aktiviert hab, also Standard betrieb, dann hab ich sehr sehr viele einträge. Wenn ich sie auskommentiere hab ich gefühlt einige weniger ;)
Aber mein System laggt generell sehr. Warum auch immer. Ich muss ich Urlaub mal meine cfg nach Problemen durchforsten und meine FileLogs optimieren. Ich hoffe das bringt was.
Grüße
such mal hier im forum nach apptime.pm
das ist ein modul vom homematic martin. das mach performance messungen auf modul bzw device ebene. das ist eine möglichkeit rauszufinden ob es an bestimmten devices liegt.
ansonsten kannst du readingsgroups auch mit disable deaktivieren. das hilft vielleicht auch beim testen.
gruss
andre
Werd ich versuchen. Danke!
Grüße
ach ja: noch etwas... vielleicht kannst du die beiden beispiele von oben mit einem screenshot ins wiki auf die readingsGroups seite stellen.
gruss
andre
Klar, mach ich!
Schaff ich es irgendwie zwei readings miteinander zu vergleichen und dann eine entsprechende farbe zu setzten?
Genauer gesagt will ich Soll Temperatur einfärben. Wenn Soll > Ist -> rot, Soll < Ist -> grün
Meine bisherige valueStyle sieht so aus:
attr wzTemperaturenRG valueStyle { if($DEVICE eq "Aussen" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}elsif($DEVICE eq "Aussen" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'}elsif($DEVICE eq "Aussen" && $READING eq "temperature" && $VALUE < 5) { 'style="color:blue"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE > 23) { 'style="color:red"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE > 21) { 'style="color:orange"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE < 20) { 'style="color:blue"'}elsif($DEVICE eq "Kasten_E_Geraete" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}elsif($DEVICE eq "Kasten_E_Geraete" && $READING eq "temperature" && $VALUE > 28) { 'style="color:orange"'}elsif($READING eq "humidity" && $VALUE > 65) { 'style="color:red"'}elsif($READING eq "humidity" && $VALUE > 60) { 'style="color:orange"'}elsif($DEVICE eq "wzHeizung" && $READING eq "desired" && $VALUE eq "12"){ 'style="color:blue"'}else{'style="color:green"'} }
Anbei noch ein Screenshot.
Jemand eine Idee?
Grüße
ja das geht natürlich :) aber nicht direkt.
wenn es dir reicht das es beim seitenaufbau stimmt ist es ganz einfach. einfach mit valueformat einfärben. das problem ist das es per longpoll nicht zuverlässig aktualisiert wird weil der trigger nur am reading selber hängt und nicht am zweiten mit dem er in beziehung steht.
du kannst es mit <{...}> lösen wenn du es als von beiden readings abhängig kennzeichnest. dann stimmt die aktualisierung aber das einfärben muss man von hand machen und passendes html generieren. am besten über eine ausgelagerte kleine routine.
wenn du nur eines der beiden readings anzeigen willst ist eine lösung beide direkt nebeneinander anzuzeigen per valueFormat immer das erste anzuzeigen und per valueStyle jeweils das andere auszublenden.
das einfachste ist aber ein user reading im device anzulegen das z.b eine min() differenz berechnung macht und per event-on-change ein event erzeugt. damit hast du ein reading das aktualisiert wird wenn sich eines der beiden abhängigen ändert. also den richtigen trigger für longpoll, dieses reading kannst du dann in die readingsGroup zu packen aber mit valueFormat statt dessen den wert anzeigen um den es dir geht.
gruss
andre
OK das klingt kompliziert :D
Ich hab mir jetzt ein userReading erstellt. Aktualisiert sich auch selbst.
SollGrIst { (ReadingsVal("wzHeizung","desired","") > ReadingsVal("wzHeizung","measured",""))?"1":"0"; }
Was ich noch nicht verstehe
Zitataber mit valueFormat statt dessen den wert anzeigen um den es dir geht
Wie mach ich das?
Meine valueFormat sieht so aus:
attr wzTemperaturenRG valueFormat {temperature => "%.1f °C", humidity =>"%.1f %%", desired => "%.1f °C", measured => "%.1f °C", dewpoint => "%.1f °C", actuation => "%i %%" }
Grüße
du musst die version von valueFormat verwenden die den konkreten string zurück gibt den du anzeigen möchtest. etwas in der art:{if($READING eq 'temperature') { return "%.1f °C"} elsif( $READING eq ...} elsif($READING eq 'SollGrIst') {return (ReadingsVal("wzHeizung","desired","") }}
am besten steckst du alles in eine kleine sub in 99myUtils.pm
gruss
andre
ok alles klar.
muss ich der sub irgendwas an variablen übergeben? Oder einfach name()?
Grüße
am besten übergibst du $DEVICE und $READING. halt das was du hinterher brauchst.
DANKE!!!
Das war jetzt DIE Idee. Endlich bin ich die ewig langen Zeilen los....
Hab die Farbzuweisung jetzt ausgelagert und klappt. Das andere Versuch ich jetzt dann. Wird aber sicher klappt.
Danke nochmal für die Hilfe! Jetzt ist mir einiges klarer ;)
Grüße
Hallo,
erstmal danke für die vielen Tipps. Super Forum !
Ich den Code von fhainz bezüglich der readingsGroup der ENIGMA2 Daten umgesetzt.
Das funktioniert auch super.
Wenn man jetzt eine ganze Zeile nur für ein reading frei gibt orientiert sich das reading an den columns.
Speziell geht es hier um die eventdescription, die bei manchen Sendern recht viele Informationen liefert.
Besteht die Möglichkeit, für readings die gesamte Zeile zu nutzen ?
Hier ein Bild :
(http://s1.directupload.net/images/140105/i59b5o5j.jpg)
versuch mal die angehängte version mit attr <device> valueColumns { eventdescription => 'colspan="4"'}
gruss
andre
Perfekt !!
Funktioniert wie gewünscht.
Big Thx
Gruß
Kineas
mach mir bitte noch mal einen screenshot fürs wiki.
danke
andre
Aber gerne doch.
Folgende Zeile habe ich eingefügt:
attr <Device> valueColumns { eventdescription => 'colspan="5"'}
(http://s14.directupload.net/images/140106/c5txc97j.jpg)
Ich hab gerade versucht das mapping in eine Funktion auszulagern. Leider klappt das nicht. Jemand eine Idee?
define db_wzTemperaturenRG readingsGroup Aussen:,<T>,temperature,<F>,humidity,<TP>,dewpoint Wohnzimmer:,<T>,temperature,<F>,humidity,<TP>,dewpoint Kasten_E_Geraete:,<T>,temperature,<F>,humidity,<TP>,dewpoint wzHeizung:,<S>,SollGrIst,<I>,measured,<V>,actuation,<br>,<F>,window
attr db_wzTemperaturenRG alias Temperaturen & Heizung
attr db_wzTemperaturenRG group Temperaturen & Heizung
attr db_wzTemperaturenRG mapping { db_wzTemperaturenRG_mapping($DEVICE,$READING,$VALUE);; }
attr db_wzTemperaturenRG noheading 1
attr db_wzTemperaturenRG nostate 1
attr db_wzTemperaturenRG notime 1
attr db_wzTemperaturenRG valueFormat { temperaturenRGvalueFormat($DEVICE,$READING,$VALUE);; }
attr db_wzTemperaturenRG valueStyle { wzTemperaturenRGvalueStyle($DEVICE,$READING,$VALUE);; }
99_myUtils
sub db_wzTemperaturenRG_mapping($$$)
{
my $DEVICE = shift;
my $READING = shift;
my $VALUE = shift;
if($DEVICE eq 'wzHeizung' )
{
return "Heizung"
}
elsif( $VALUE eq 'Geschlossen' )
{
return "Zu"
}
}
Grüße
mapping ist nur um device (und reading namen in einer einspaltigen readingsGroup) zur anzeige umzumappen. die anzeige eines reading wertes kannst du damit nicht beeinflussen. du kannst da zur zeit nur einen string oder einen hash verwenden. für dich also so:attr db_wzTemperaturenRG mapping { wzHeizung => 'Heizung' }
oder z.b. %ALIAS wenn du einen vergeben hast.
den reading wert in der anzeige von 'Geschlossen' auf 'Zu' zu ändern machst du mit valueFormat. du kannst auch valueIcon dazu verwenden wenn es kein icon mit namen Zu gibt:attr db_wzTemperaturenRG valueIcon { window.Geschlossen => 'Zu' }
gruss
andre
Alles klar, danke!
Hallo,
gibt es eine Möglichkeit mehrere reading einer readinsgroup nebeneinander, statt untereinander, anzeigen zu lassen?
Gruß,
Mike
ja.
hinter dem : nach dem device namen können mehrere regex mit komma getrennt stehen. jede regex kann auch 1 oder mehrere readings matchen. alles zusammen wird in einer zeile angezeigt.
siehe commandref und 90% der beispiele in forum und wiki.
gruss
andre
Ich bezog mich da eher, auf readings verschiedener Devices.
dann musst du das auch fragen ...
auch das geht in dem du z.b. den device namen mit @ hinter den reading namen hängst.
siehe commandref und diverse beispiele in forum und wiki...
Ich steh total aufm Schlauch. Habe weder in der Commandref, noch in Wiki oder Forum etwas gefunden.
Meine Readingsgroup sieht so aus:
StromverbrauchTag:<%icoBlitz>,kWh,Euro GasverbrauchTag:<%icoHEIZUNG>,kWh,Euro
Wo muss denn das @ hin?
Sorry, wenn ich nerve.
Zitatregex can be of the form <regex>@device to use readings from a different device.
hinter den reading namen:
... device1:reading1,reading2,reading3,reading4@device2,reading5@device3 ...
Vielen Dank, wenn man es erstmal an einem Beispiel sieht, ist es doch recht einfach.
Edit: Soweit so gut, nur wie bekomme ich die icons nun wieder angezeigt?
StromverbrauchTag:kWh,Euro@StromverbrauchTag,kWh@GasverbrauchTag,Euro@GasverbrauchTag
Hallo,
was muß ich an meiner Syntax ändern, dass ich meine Fenstersymbole im floorplan farbig angezeigt bekomme?
define OG_WZ_F2 readingsGroup Fensterkontakte_1_WZ_OG:sensed.B
attr OG_WZ_F2 alias Fenster links
attr OG_WZ_F2 fp_Obergeschoss 2,680,4
attr OG_WZ_F2 mapping { 'sensed.B' => 'links' }
attr OG_WZ_F2 valueFormat {($VALUE eq '1')?"fts_window_1w":"fts_window_1w_open"}
attr OG_WZ_F2 valueIcon %VALUE
der Versuch mit:
#attr OG_WZ_F2 valueFormat {($VALUE eq '1')?"fts_window_1w@green":"fts_window_1w_open@red"}
funktioniert nicht.
habe es jetzt anders gelöst, dem Icon direkt in der SVG Datei die Farbe vorgegeben