Hallo zusammen,
ich habe hier im Forum Beispiele für RGB LED Lampen Icons gesehen, die sich entsprechend der eingestellten Farbe einfärben. Soweit ich das verstanden habe geht dies mit dieser Methode:
attr <device> devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
(siehe http://www.fhemwiki.de/wiki/Color ganz unten)
Meinem Verständnis zu folge geht dies aber nur bei SVG-Grafiken, die man global für FHEM einstellen muss. Dies geht mit dem Befehl:
attr WEB iconPath fhemSVG:openautomation:default:icons_small
Genau hier kommt meine Frage:
Kann man diese SVG Icons auch nur bei einem bestimmten Gerät verwenden? Welches Attribut müsste man dann setzen?
Danke!
Gruss
das iconPath attribut gibt nur an wo fhem nach den icons sucht.
ansonsten ist nichts global.
du setzt das devStateIcon attribut jeweils bei genau dem gerät bei dem du das icon haben möchtest.
gruß
andre
Zitat von: justme1968 am 18 Januar 2015, 17:00:58
das iconPath attribut gibt nur an wo fhem nach den icons sucht.
ansonsten ist nichts global.
du setzt das devStateIcon attribut jeweils bei genau dem gerät bei dem du das icon haben möchtest.
gruß
andre
Hallo Andre,
das Problem ist, wenn ich den iconPath wie oben setze, haben plötzlich alle meine Lampen das SVG-Icon. Genau das möchte ich nicht. Ich will dass diese weiterhin das "alte" Icon (Glühbirne) anzeigen. Nur für die LED-Leiste soll das "neue" Icon verwendet werden, welches dann auch die jeweilige Farbei annehmen soll. Wie wären da die richtigen Attribute?
Danke!
Gruss
dann musst du den icon path so setzen das zuerst die 'alten' icons gefunden werden:
attr WEB iconPath default:icons_small:fhemSVG:openautomation
und eine kopie der devStateIcon aus Color.pm in einer 99_myUtils.pm routine so ändern das statt der default icon namen die echten aus openautomation/iconalias.txt verwendet werden.
gruss
andre
Zitat von: justme1968 am 18 Januar 2015, 18:41:03
dann musst du den icon path so setzen das zuerst die 'alten' icons gefunden werden:
attr WEB iconPath default:icons_small:fhemSVG:openautomation
und eine kopie der devStateIcon aus Color.pm in einer 99_myUtils.pm routine so ändern das statt der default icon namen die echten aus openautomation/iconalias.txt verwendet werden.
gruss
andre
Hallo Andre,
ich glaube, ich habe die Funktionsweise der Funktion Color_devStateIcon missverstanden. Mein Verständnis war, dass diese Funktion in der Lage ist, SVN Icons dynamisch einzufärben. Heisst also, wenn ich ein SVG Icon habe, wie z.b. "light_led_stripe_rgb" aus dem openautomation Ordner, dass dieses Icon, wenn durch diese Funktion gejagt, mit der übergebenen Farbe gefüllt wird. Das scheint aber nicht so zu sein, zumindest nicht wenn ich den Code richtig verstanden habe. Es kann sein, dass ich da total falsch liege, aber kann man mit FHEM die von mir beschriebene Funktionalität überhaupt erreichen? Ansonsten müsste man ja für jede mögliche Farbe ein Icon anlegen, was nicht sehr sinnvoll wäre...
Danke!
Gruss
fhem kann jedes svg icon einfärben in dem du an den icon namen ein @farbe anhängst. das ist statisch bzw. auf die zuordnung zwischen STATE und icon die du in devStateIcon angibst beschränkt.
die Color_devStateIcon nimmt den mechanismus den es in fhem gibt und wählt das icon abhängig von der helligkeit des RGB wertes (anzahl lichtstrahlen) und setzt abhängig vom die farbe des icons auf die zu diesem farb wert gehörenden hellst möglichen farbton.
es vermeidet also genau von hand jede mögliche kombination anzugeben und für jede mögliche kombination ein eigenes icon haben zu müssen.
wenn du das ganze mit einem eigenen icon machen möchtest und ohne die helligkeit in der anzahl der strahlen abzubilden kannst du dir dafür eine eigene routine schreiben.
gruss
andre
Hallo Andre,
danke Dir für die Erklärung!
Demnach müsste ja etwas in der Richtung funktionieren, oder:
attr WZLED devStateIcon {"light_led_stripe_rgb.svg" . Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
Ich würde erwarten, dass dabei ein String raus kommt, der so aussieht:
light_led_stripe_rgb.svg@FARBTON
Mein Gedankengang ist aber wohl falsch, da es nicht funktioniert. Kannst Du mir einen Tipp geben, wo ich falsch liege?
Danke!
Gruss
Color_devStateIcon verwendet on/off/und die ganzen icons für die zwischenzustände mit der unterschiedlichen anzahl an lichtstralen.
was du brauchst ist einfach {"light_led_stripe_rgb@".ReadingsVal($name,"rgb","000000")}
aber achtung: dein icon wird unsichtbar sein wenn es die gleiche farbe wie der seiten hintergrund hat.
gruss
andre
Zitat von: justme1968 am 18 Januar 2015, 21:06:00
Color_devStateIcon verwendet on/off/und die ganzen icons für die zwischenzustände mit der unterschiedlichen anzahl an lichtstralen.
was du brauchst ist einfach {"light_led_stripe_rgb.svg@".ReadingsVal($name,"rgb","000000")}
aber achtung: dein icon wird unsichtbar sein wenn es die gleiche farbe wie der seiten hintergrund hat.
gruss
andre
Hallo Andre,
irgendwas scheint bei mir noch zu fehlen, es funktioniert weder das eine noch das andere. Hier ist meine WEB Konfiguration:
define WEB FHEMWEB 8083 global
attr WEB basicAuth VGFsa2Fib3V0Ok1pc2l1MTk4MA==
attr WEB hiddenroom Server,Unsorted,DashboardRoom
attr WEB longpoll 1
attr WEB room Server
attr WEB stylesheetPrefix dark
attr WEB iconPath default:icons_small:fhemSVG:openautomation
Hier ist die Konfiguration meiner LED-Beleuchtung:
define WZLED WifiLight RGB LW12:192.168.20.22
attr WZLED alias LED Beleuchtung
attr WZLED colorCast 0, -20, -20, -25, 0, -10
attr WZLED eventMap on:an off:aus
attr WZLED fp_Erdgeschoss 545,17,5,Power
attr WZLED group Licht
attr WZLED room Wohnzimmer
attr WZLED webCmd RGB
attr WZLED whitePoint 1, 0.75, 0.25
attr WZLED widgetOverride RGB:colorpicker,RGB
#attr WZLED devStateIcon {"light_led_stripe_rgb.svg@".ReadingsVal($name,"rgb","000000")}
attr WZLED devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
Hast Du vielleicht noch einen Tipp?
Danke Dir für die Mühe!
Gruss
was genau funktioniert nicht?
was gibt ein list auf das device um das es geht?
wie heisst das reading bei dir denn wirklich? rgb oder RGB? in der einen version verwendest du das eine und in der anderen das andere.
gruss
andre
Zitat von: justme1968 am 18 Januar 2015, 21:31:24
was genau funktioniert nicht?
was gibt ein list auf das device um das es geht?
wie heisst das reading bei dir denn wirklich? rgb oder RGB? in der einen version verwendest du das eine und in der anderen das andere.
gruss
andre
Ich hatte das RGB=>rgb geändert :) Beides funktionierte nicht.
Hier das list:
Internals:
CONNECTION LW12
DEF RGB LW12:192.168.20.22
IP 192.168.20.22
LEDTYPE RGB
NAME WZLED
NR 156
NTFY_ORDER 50-WZLED
PORT 5577
PROTO 1
SLOT 0
STATE an
TYPE WifiLight
Readings:
2015-01-18 21:16:22 RGB 0000FF
2015-01-18 21:16:22 brightness 100
2015-01-18 21:16:22 hue 240
2015-01-18 21:16:22 saturation 100
2015-01-18 21:16:22 state on
Helper:
COMMANDSET on off dim dimup dimdown HSV RGB
llLock 0
COLORMAP:
0
1
1
2
3
3
4
5
5
6
7
7
8
9
9
10
11
11
12
13
13
14
15
15
16
17
17
18
19
19
20
21
21
22
23
23
24
25
25
26
27
27
28
29
29
30
31
31
32
33
33
34
35
35
36
37
37
38
39
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
106
107
108
109
110
111
112
113
114
115
116
117
117
118
119
120
121
122
123
124
125
126
127
128
128
129
130
131
132
133
134
135
136
137
138
139
139
140
141
142
143
144
145
146
147
148
149
150
150
151
152
153
154
155
156
158
159
161
162
164
165
166
168
169
171
172
173
175
176
178
179
181
182
183
185
186
188
189
190
192
193
195
196
198
199
200
202
203
205
206
207
209
210
212
213
215
216
217
219
220
222
223
224
226
227
229
230
232
233
234
236
237
239
240
241
242
243
243
244
245
246
247
248
248
249
250
251
252
253
253
254
255
256
257
258
258
259
260
261
262
263
263
264
265
266
267
268
268
269
270
271
272
273
273
274
275
276
277
278
278
279
280
281
282
283
283
284
285
286
287
288
288
289
290
291
292
294
295
296
297
298
299
301
302
303
304
305
306
308
309
310
311
312
313
315
316
317
318
319
320
322
323
324
325
326
327
329
330
331
332
333
334
336
337
338
339
340
341
343
344
345
346
347
348
350
351
352
353
354
355
357
358
359
0
GAMMAMAP:
0
0.0837677640068292
0.243332430098219
0.45405621299892
0.70684316621699
0.996357952001595
1.31896324344069
1.67196720192944
2.05327034060355
2.46117402090514
2.89426612471675
3.35134791378444
3.83138472229589
4.33347131986342
4.85680675751166
5.4006755921087
5.96443354494847
6.54749632988109
7.14933080167485
7.76944783828119
8.40739654243209
9.06275946322968
9.73514861754315
10.4242021465521
11.1295814824596
11.8509689292396
12.5880655825711
13.3405895300298
14.1082742846809
14.8908674144572
15.6881293368749
16.499832254239
17.3257592089163
18.1657032417713
19.0194666396879
19.8868602603794
20.7677029245494
21.6618208669846
22.5690472394153
23.4892216590168
24.4221897972898
25.3678030047821
26.3259179677223
27.2963963931522
28.2791047195789
29.2739138505435
30.2806989088167
31.2993390092098
32.329717048222
33.3717195089492
34.4252362798567
35.4901604861718
36.5663883327847
37.6538189576659
38.7523542949095
39.8618989466026
40.982360062801
42.1136472289627
43.2556723602513
44.4083496021795
45.5715952371095
46.7453275961738
47.9294669762181
49.1239355614018
50.3286573491265
51.5435580799885
52.7685651714775
54.0036076551689
55.2486161171733
56.5035226416311
57.7682607570534
59.0427653853271
60.3269727932157
61.6208205462015
62.9242474645252
64.237193581289
65.5596001025013
66.8914093689478
68.2325648197832
69.583010957744
70.9426933158916
72.3115584257991
73.6895537871024
75.0766278383415
76.4727299290214
77.8778102928286
79.2918200219416
80.7147110423796
82.1464360903337
83.5869486894341
85.0362031289022
86.4941544425471
87.9607583885629
89.4359714300888
90.9197507164941
92.4120540653557
93.9128399450933
95.4220674582326
96.9396963252683
98.4656868690975
100
hlCmdQueue:
llCmdQueue:
Attributes:
alias LED Beleuchtung
colorCast 0, -20, -20, -25, 0, -10
devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
eventMap on:an off:aus
fp_Erdgeschoss 545,17,5,Power
group Licht
room Wohnzimmer
webCmd RGB
whitePoint 1, 0.75, 0.25
Problem ist, dass trotz allem bei dem Device das "alte" Icon (Glühbirne) angezeigt wird, nicht das "neue" Icon.
Gruss
Color_devStateIcon geht nicht wenn die SVG icons nicht vorne im pfad sind weil hier die normalen on/off/dim namen verwendet werden.
in deiner version musst du das .sag weg lassen. sorry. copy&paste fehler.
wenn es immer noch nicht geht nimm mal nur light_led_stripe_rgb als devStateIcon. siehst du dann etwas ?
gruss
andre
Zitat von: justme1968 am 18 Januar 2015, 21:49:25
Color_devStateIcon geht nicht wenn die SVG icons nicht vorne im pfad sind weil hier die normalen on/off/dim namen verwendet werden.
in deiner version musst du das .sag weg lassen. sorry. copy&paste fehler.
wenn es immer noch nicht geht nimm mal nur light_led_stripe_rgb als devStateIcon. siehst du dann etwas ?
gruss
andre
Hallo Andre,
Folgende Version funktioniert nicht:
define WZLED WifiLight RGB LW12:192.168.20.22
attr WZLED alias LED Beleuchtung
attr WZLED colorCast 0, -20, -20, -25, 0, -10
attr WZLED eventMap on:an off:aus
attr WZLED fp_Erdgeschoss 545,17,5,Power
attr WZLED group Licht
attr WZLED room Wohnzimmer
attr WZLED webCmd RGB
attr WZLED whitePoint 1, 0.75, 0.25
#attr WZLED widgetOverride RGB:colorpicker,RGB
attr WZLED devStateIcon {"light_led_stripe_rgb@".ReadingsVal($name,"RGB","000000")}
#attr WZLED devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
#attr WZLED devStateIcon .*:light_led_stripe_rgb
Folgende Version funktioniert, aber eben ohne Einfärbung:
define WZLED WifiLight RGB LW12:192.168.20.22
attr WZLED alias LED Beleuchtung
attr WZLED colorCast 0, -20, -20, -25, 0, -10
attr WZLED eventMap on:an off:aus
attr WZLED fp_Erdgeschoss 545,17,5,Power
attr WZLED group Licht
attr WZLED room Wohnzimmer
attr WZLED webCmd RGB
attr WZLED whitePoint 1, 0.75, 0.25
#attr WZLED widgetOverride RGB:colorpicker,RGB
#attr WZLED devStateIcon {"light_led_stripe_rgb@".ReadingsVal($name,"RGB","000000")}
#attr WZLED devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
attr WZLED devStateIcon .*:light_led_stripe_rgb
Gruss
sorry. ich bin eine schlafmütze. es muss natürlich noch der STATE drin stehen...
attr WZLED devStateIcon {".*:light_led_stripe_rgb@".ReadingsVal($name,"RGB","000000")}
der string ist genau so aufgebaut wie ein normales devStateIcon im regex format
gruss
andre
Zitat von: justme1968 am 18 Januar 2015, 21:59:56
sorry. ich bin eine schlafmütze. es muss natürlich noch der STATE drin stehen...
attr WZLED devStateIcon {".*:light_led_stripe_rgb@".ReadingsVal($name,"RGB","000000")}
der string ist genau so aufgebaut wie ein normales devStateIcon im regex format
gruss
andre
Hallo Andre,
SUPER, das funktioniert :)
Jetzt noch mal für mich zum Verständnis, die Standard-Icons (Vektor-Glühbirnen mit Lichtstrahlen) funktionieren deswegen nicht, weil dafür der Standard-Pfad (iconPath) erst die SVG-Grafiken auflisten muss, korrekt?
Danke!
Gruss
wenn du die fertige routine verwenden willst ja. wenn du dir selber eine mit den oben vorschlagenen änderungen baust geht es.
gruß
andre
Zitat von: justme1968 am 18 Januar 2015, 22:07:55
wenn du die fertige routine verwenden willst ja. wenn du dir selber eine mit den oben vorschlagenen änderungen baust geht es.
gruß
andre
Hallo Andre,
danke, habe ich verstanden.
Vielen Dank für Deine Geduld!
Gruss