Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

justme1968

#1215
wenn die strings wirklich so aussehen:Start 03.03.2015 16:30:00 Uhr
Ende 02.03.2015 22:00:00 Uhr


ist 0 Start bzw Ende, 1 ist das datum, 2 ist die zeit, 3 ist Uhr...
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

moonsorrox

#1216
Zitat von: Spartacus am 02 März 2015, 21:16:24
Hallo,
ich kämpfe gerade mit ValueFormat und würde gerne das Reading eines DOIF-Timers formatieren.

Oh, endlich mal jemand der die Timer von einem DOIF anzeigen lassen möchte...!  :D
Ich habe schon einige Versuche hinter mir DOIF Timer zu formatieren, aber habe dann dieses erst mal gelassen, weil ich keine Erfolge hatte...
Schön wäre es wenn du mal ein paar Screenshots erstellst wie dies aussieht bei dir...

Ich habe mich auch da auch schon probiert...!
Wobei mit der oberen Anzeige bin ich zufrieden, es könnten noch die Zahlen für die Wochentage ausgeblendet werden

Das darunter, wenn ich ganz gerne mal etwas nebeneinander darstellen möchte das klappt gar nicht. Habe da erst mal aufgehört aus Zeitmangel.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

RoBra81

Hallo,

ich habe folgendes Problem mit einer ReadingsGroup: Ich habe mir eine ReadingsGroup für die Bedienung meines Radios gebaut. Diese nutzt einen Slider zum Einstellen der Lautstärke. Das funktioniert alles soweit. Nun wollte ich jedoch in meinem Floorplan etwas Platz schaffen. Hierfür habe ich eine zweite, kleinere ReadingsGroup mit den wichtigsten Funktionen erstellt und diese in dem gleichen Raum in die gleiche Gruppe gesetzt. Mittels Kommando blenden sich die beiden ReadingsGroups nun gegenseitig ein (und sich selbst damit aus). Die ReadingsGroup mit dem Slider habe ich dafür auf "hidden" gesetzt.
Nun zu meinem Problem: Wenn ich die ReadingsGroup mit dem Slider das erste Mal nach dem Wechsel zum Floorplan einblende, zeigt der Slider den aktuellen Wert der Laustärke, steht jedoch ganz vorn. Wenn ich ihn nun versuche zu ziehen, steht zunächst NaN drin und dann wechselt die Lautstärke auf 100 (GANZ schön laut). Nun kann ich ihn normal ziehen und beim er funktioniert bis zum erneuten Wechsel des Floorplans...

Hat da jemand eine Idee?

Hier meine ReadingsGroups:

define OG.ez.RA.Player.RG.Control readingsGroup OG.ez.RA.Player:!Close,<> OG.ez.RA.Player:playStatus,volume OG.ez.RA.Player:<Favoriten>,<{LMSFavorites($DEVICE,"Esszimmer")}@favorites> OG.ez.RA.Player:<Künstler>,currentArtist OG.ez.RA.Player:<Titel>,currentTitle
attr OG.ez.RA.Player.RG.Control commands {'muteState' => 'set $DEVICE mute', 'playStatus.playing' => 'set $DEVICE clearPlaylist', 'playStatus.stopped' => 'set $DEVICE play', 'volume' => 'volume:slider,0,1,100', 'Close' => 'set OG.ez.RA.Player.RG.Symbol visibility show'}
attr OG.ez.RA.Player.RG.Control fp_Esszimmer 419,591,0,,
attr OG.ez.RA.Player.RG.Control group Radio
attr OG.ez.RA.Player.RG.Control nameStyle style="font-weight:bold;; color:yellow;;"
attr OG.ez.RA.Player.RG.Control noheading 1
attr OG.ez.RA.Player.RG.Control nonames 1
attr OG.ez.RA.Player.RG.Control notime 1
attr OG.ez.RA.Player.RG.Control room Esszimmer
attr OG.ez.RA.Player.RG.Control style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Control valueFormat { return (join " ", map {ucfirst} split / /, lc $VALUE) if (($READING eq 'currentArtist') || ($READING eq 'currentTitle'))}
attr OG.ez.RA.Player.RG.Control valueIcon {'muteState.muted' => 'Volume_mute', 'muteState.unmuted' => 'Volume_on', 'playStatus.playing' => 'audio_stop@lightgray', 'playStatus.stopped' => 'audio_play@lightgray', 'Close' => 'control_x@lightgray' }
attr OG.ez.RA.Player.RG.Control valueStyle style="text-align:center;;"
attr OG.ez.RA.Player.RG.Control visibility hidden

define OG.ez.RA.Player.RG.Symbol readingsGroup OG.ez.RA.Player:!VolumeDown,!Details,!VolumeUp
attr OG.ez.RA.Player.RG.Symbol commands { 'VolumeDown' => 'set %DEVICE volumeDown', 'VolumeUp' => 'set %DEVICE volumeUp', 'Details' => 'set OG.ez.RA.Player.RG.Control visibility show' }
attr OG.ez.RA.Player.RG.Symbol fp_Esszimmer 517,670,0,,
attr OG.ez.RA.Player.RG.Symbol group Radio
attr OG.ez.RA.Player.RG.Symbol noheading 1
attr OG.ez.RA.Player.RG.Symbol nonames 1
attr OG.ez.RA.Player.RG.Symbol notime 1
attr OG.ez.RA.Player.RG.Symbol room Esszimmer
attr OG.ez.RA.Player.RG.Symbol style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Symbol valueIcon { 'VolumeUp' => 'rc_VOLPLUS@lightgray', 'VolumeDown' => 'rc_VOLMINUS@lightgray', 'Details' => 'audio_sound@lightgray' }
attr OG.ez.RA.Player.RG.Symbol visibility hideable


Ronny

Spartacus

Zitat von: justme1968 am 02 März 2015, 21:50:00
wenn die strings wirklich so aussehen:Start 03.03.2015 16:30:00 Uhr
Ende 02.03.2015 22:00:00 Uhr


ist 0 Start bzw Ende, 1 ist das datum, 2 ist die zeit, 3 ist Uhr...
Hallo andre,
Du hast natürlich recht! Ich habe Dir verschwiegen, das ich den String aus der readingsGroup kopiert habe und "Start" und "Ende" schon davor und "Uhr" dahinter geschrieben hatte. Der String besteht lediglich aus Datum und Uhrzeit.

Sorry für die Verwirrung und vielen Dank für Deine Hilfe!
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hi,
jetzt muss ich doch noch mal blöd fragen!
Ich habe zwei Readings:
timer_1_c1 und timer_2_c1
Warum funktioniert hier dieser Ausdruck nicht im ValueFormat-Attribut nicht??
{....., timer_.*=>(split(' ',$VALUE))[1],....}
Wenn ich das Reading gezielt angebe funktioniert der split-Befehl
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

justme1968

du kannst im key (links vom =>) nicht mit einer regex arbeiten und im teil rechts vom => fehlen die anführungszeichen um alles.

im log solltest du zumindest hinweise sehen das hier etwas nicht stimmt.

grus
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spartacus

Hi andre,
ok. dann muss ich die Readings halt einzeln aufführen, kein Problem!

Das mit den Anführungszeichen verstehe ich schon wieder nicht!
{ '60Minuten' => '60 Minuten', timer_1_c1=>(split(' ',$VALUE))[1]."Uhr"}
funktioniert!
Allerdings steht im Logfile eine Warnung!
2015.03.03 21:58:04 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 5086) line 1. Ist also nicht sauber!
Wenn ich rechts vom => die Anführungszeichen setze, gibt es einen Syntaxfehler
{ '60Minuten' => '60 Minuten', timer_1_c1=>'(split(' ',$VALUE))[1]."Uhr"'}
wie setzte ich die Dinger denn dann hier korrekt?
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

justme1968

du musst die Anführungszeichen richtig verschachteln. eine sorte ganz aussen. dazwischen die andere sorte. wenn du noch eine verschaltelungs ebene brauchst müsstest du diese dann mit \ maskieren:

{ '60Minuten' => '60 Minuten', 'timer_1_c1'=>'{(split(" ",$VALUE))[1]."Uhr"}'}

das 'Uhr' kannst du auch per valueSuffix anhängen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spartacus

Hallo andre,
danke, jetzt sind die Warnungen auch weg!
Vielleicht kappier´ich das auch irgendwann mal!

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

justme1968

#1224
das ist doch ganz einfach :)

das gleiche zeichen mit dem ein string anfängt beendet ihn auch wieder. d.h. er darf nur am anfang und am ende auftauchen sonst ist dein string vorzeitig zu ende und es kommt müll raus.

es gibt in perl zwei zeichen mit denen ein string anfangen kann. die kann man also eine ebene tief verschachteln.

in strings die mit ' anfangen werden variablen nicht ersetzt, in strings die mit " anfangen schon. aber erst in dem augenblick in dem der string ausgewertet wird. d.h. readingsGroup fall das was rechts von => steht mit ' beginnen lassen weil die auswertung erst zweiten schritt passiert.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spartacus

Hallo,
ja, es ist nicht leicht mit einem Programmier-DAU!

Ich probiere gerade Dropdown und Slieder in der rg aus.
commands:
{'Test1' => 'on-for-timer:0,10,20,30,40', 'Test2' => "on-for-timer:slider,0,5,30" }
Über das Dropdown und den Slider kann ich meinen Aktor schalten.
DropDown und Slider bleiben auf dem letzten eingestellten Wert stehen. Wenn ich den Wert auf dem Slider erneut anklicke, wird der Befehl on-for-timer erneut ausgeführt. Bei dem Dropdown habe ich aber keine Chance, hier muss ich erst wieder auf den Wert "0" gehen, oder einen Refresh ausführen.

Gibt es eine Möglichkeit,
a) immer den zuletzt eingestellten Wert (auch nach Refresh) zu erhalten um durch Klick auf den Wert den Befehl erneut auszuführen?
b) ohne Refresh direkt auf den Default zurückzuspringen.

Die erste Variante wäre für mich die Schönere, da man immer direkt sehen kann, welcher Wert zuletzt eingestellt wurde. Welche Ausfürung (Test1, Test2) ist hierfür die schönere Lösung?

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

moonsorrox

#1226
Zitat von: Spartacus am 04 März 2015, 12:29:51
Hallo,
ja, es ist nicht leicht mit einem Programmier-DAU!

das liegt aber nicht an dir, dass ist schon ne Wissenschaft für sich... :-\ ist es dann aber vollbracht sieht es eben gut aus.. ;)
Ich habe unzählige Versuche hinter mir und habe es bisher auch nicht geschafft und mir geht erst einmal nur um die "reine" Anzeige einer Readingsgroup für die Zeiten (timer_X_cX) aus einem DOIF (siehe mein Screenshot oben)

Ich hatte auch versucht an einem Beispiel aus dem Wiki etwas zu erreichen, aber auch nicht..

Wenn ich die Zahlen für die Wochentage ausblenden möchte was muss ich dann eingeben bei
Also Anzeige nur Datum und Uhrzeit
(split(' ',$VALUE))[1]

Bei mir sieht das mapping so aus:
{ 'timer_1_c1' => 'EIN - WochenTag', 'timer_2_c1' => 'EIN - WochenEnde', 'timer_3_c2' => 'AUS - Jeden Tag', 'timer_4_c3' => 'EIN - Nachtschicht', 'timer_5_c4' => 'AUS - Nachtschicht' }
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Spartacus

Hallo moonsorrox,
bin mir nicht sicher, ob ich Dich richtig verstanden habe!

Aber mit dem Ausdruck von andre klappt das bei mir jetzt ganz gut.
Ich habe zwei Readings in meinem DOIF (Einschaltzeit und Ausschaltzeit)
Im valueFormat steht dann dieses Mapping:
{ 'timer_1_c1'=>'{(split(" ",$VALUE))[1]."Uhr"}','timer_2_c1'=>'{(split(" ",$VALUE))[1]."Uhr"}'}
Damit wird die Uhrzeit der beiden Timer angezeigt. Wenn Du das Datum brauchst, dann musst Du die "1" durch die "0" ersetzten! Du musst aber jeden Timer separat aufführen. Ein "timer_.*" geht vor dem "=>" nicht!. Hilft Dir das?

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

moonsorrox

ja das hatte ich schon so, aber schau mal den screenshot...
so fehlt ja das Datum, dafür müsste ich jetzt eine weitere Spalte haben und es da eintragen können, dass weiß ich eben nicht wie das geht.. und die Tage sind immer noch hinten dran bei den Timern..!
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

RoBra81

Hallo Andre,

hast du dazu eine Idee?

Zitat von: RoBra81 am 03 März 2015, 08:58:59
Hallo,

ich habe folgendes Problem mit einer ReadingsGroup: Ich habe mir eine ReadingsGroup für die Bedienung meines Radios gebaut. Diese nutzt einen Slider zum Einstellen der Lautstärke. Das funktioniert alles soweit. Nun wollte ich jedoch in meinem Floorplan etwas Platz schaffen. Hierfür habe ich eine zweite, kleinere ReadingsGroup mit den wichtigsten Funktionen erstellt und diese in dem gleichen Raum in die gleiche Gruppe gesetzt. Mittels Kommando blenden sich die beiden ReadingsGroups nun gegenseitig ein (und sich selbst damit aus). Die ReadingsGroup mit dem Slider habe ich dafür auf "hidden" gesetzt.
Nun zu meinem Problem: Wenn ich die ReadingsGroup mit dem Slider das erste Mal nach dem Wechsel zum Floorplan einblende, zeigt der Slider den aktuellen Wert der Laustärke, steht jedoch ganz vorn. Wenn ich ihn nun versuche zu ziehen, steht zunächst NaN drin und dann wechselt die Lautstärke auf 100 (GANZ schön laut). Nun kann ich ihn normal ziehen und beim er funktioniert bis zum erneuten Wechsel des Floorplans...

Hat da jemand eine Idee?

Hier meine ReadingsGroups:

define OG.ez.RA.Player.RG.Control readingsGroup OG.ez.RA.Player:!Close,<> OG.ez.RA.Player:playStatus,volume OG.ez.RA.Player:<Favoriten>,<{LMSFavorites($DEVICE,"Esszimmer")}@favorites> OG.ez.RA.Player:<Künstler>,currentArtist OG.ez.RA.Player:<Titel>,currentTitle
attr OG.ez.RA.Player.RG.Control commands {'muteState' => 'set $DEVICE mute', 'playStatus.playing' => 'set $DEVICE clearPlaylist', 'playStatus.stopped' => 'set $DEVICE play', 'volume' => 'volume:slider,0,1,100', 'Close' => 'set OG.ez.RA.Player.RG.Symbol visibility show'}
attr OG.ez.RA.Player.RG.Control fp_Esszimmer 419,591,0,,
attr OG.ez.RA.Player.RG.Control group Radio
attr OG.ez.RA.Player.RG.Control nameStyle style="font-weight:bold;; color:yellow;;"
attr OG.ez.RA.Player.RG.Control noheading 1
attr OG.ez.RA.Player.RG.Control nonames 1
attr OG.ez.RA.Player.RG.Control notime 1
attr OG.ez.RA.Player.RG.Control room Esszimmer
attr OG.ez.RA.Player.RG.Control style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Control valueFormat { return (join " ", map {ucfirst} split / /, lc $VALUE) if (($READING eq 'currentArtist') || ($READING eq 'currentTitle'))}
attr OG.ez.RA.Player.RG.Control valueIcon {'muteState.muted' => 'Volume_mute', 'muteState.unmuted' => 'Volume_on', 'playStatus.playing' => 'audio_stop@lightgray', 'playStatus.stopped' => 'audio_play@lightgray', 'Close' => 'control_x@lightgray' }
attr OG.ez.RA.Player.RG.Control valueStyle style="text-align:center;;"
attr OG.ez.RA.Player.RG.Control visibility hidden

define OG.ez.RA.Player.RG.Symbol readingsGroup OG.ez.RA.Player:!VolumeDown,!Details,!VolumeUp
attr OG.ez.RA.Player.RG.Symbol commands { 'VolumeDown' => 'set %DEVICE volumeDown', 'VolumeUp' => 'set %DEVICE volumeUp', 'Details' => 'set OG.ez.RA.Player.RG.Control visibility show' }
attr OG.ez.RA.Player.RG.Symbol fp_Esszimmer 517,670,0,,
attr OG.ez.RA.Player.RG.Symbol group Radio
attr OG.ez.RA.Player.RG.Symbol noheading 1
attr OG.ez.RA.Player.RG.Symbol nonames 1
attr OG.ez.RA.Player.RG.Symbol notime 1
attr OG.ez.RA.Player.RG.Symbol room Esszimmer
attr OG.ez.RA.Player.RG.Symbol style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Symbol valueIcon { 'VolumeUp' => 'rc_VOLPLUS@lightgray', 'VolumeDown' => 'rc_VOLMINUS@lightgray', 'Details' => 'audio_sound@lightgray' }
attr OG.ez.RA.Player.RG.Symbol visibility hideable


Ronny