Hauptmenü

Syntax Error userReadings

Begonnen von Cybers, 20 November 2024, 10:20:04

Vorheriges Thema - Nächstes Thema

Cybers

Hallo,
ich bekomme folgenden Fehler. Finde aber meinen Klammerfehler nicht. 🙈

Error evaluating tuya_local_bf9831c0ace9cc05d9bc6i userReading hue: syntax error at (eval 3409) line 1, at EOF syntax error at (eval 3409) line 1, near ";)"

attr tuya_local_bf9831c0ace9cc05d9bc6i userReadings hue {my $rgb=ReadingsVal($name,"colour_data_v2","0");;($rgb eq "FFFFFF")?"100":{my ($r,$g,$b)=(hex(substr($rgb,0,2)/255.0;;;;substr($rgb,2,2)/255.0;;substr($rgb,4,2)/255.0;;my ($h,$s,$v) = Color::rgb2hsv($r,$g,$b);;my $hue = int($h*100);;)})}
Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

betateilchen

Schreib das doch mal leserlich auf, dann siehst Du, wo die Probleme liegen.

hue {my $rgb=ReadingsVal($name,"colour_data_v2","0");
($rgb eq "FFFFFF")?"100":
{ my ($r,$g,$b) = (hex(substr($rgb,0,2)/255;substr($rgb,2,2)/255;substr($rgb,4,2)/255;
  my ($h,$s,$v) = Color::rgb2hsv($r,$g,$b);
  my $hue = int($h*100);
  )})}

  • die 255.0 habe ich wegen der Lesbarkeit auf 255 gekürzt.
  • Am Ende der Zeile "my ($r,$g,$b)" fehlt eine Klammer.
  • Dafür sind in der letzten Zeile Klammern zuviel, die da nicht hingehören.
  • Ob das mit Deiner hex() Umwandlung so überhaupt funktioniert, weiß ich nicht genau. Du möchtest ja letztlich drei Werte per substr() ermitteln, die eigentlich alle per hex() konvertiert werden müssten. Da Du als Ergebnis ein array mit drei Werten haben möchtest, sollten in der Rückgabe auch drei durch Komma (!) getrennte Werte geliefert werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Cybers

Ich habe es jetzt leserlich geschrieben. In meiner Welt würden am Ende von Zeile 3 sogar zwei Klammern fehlen, die dann am Ende in Zeile 6 zu viel sind. Aber egal was ich versuche, ich bekomme immer einen Error...
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

betateilchen

defmod tuya_local_bf9831c0ace9cc05d9bc6i dummy
attr tuya_local_bf9831c0ace9cc05d9bc6i userReadings hue:colour_data_v2.* { my $rgb=ReadingsVal($name,"colour_data_v2","0");; return 100 if ($rgb eq "FFFFFF");;;; my ($r,$g,$b) = (hex(substr($rgb,0,2))/255,hex(substr($rgb,2,2))/255,hex(substr($rgb,4,2))/255);;;; my ($h,$s,$v) = Color::rgb2hsv($r,$g,$b);;;; return int($h*100);;;;}

funktioniert bei mir einwandfrei.

setstate tuya_local_bf9831c0ace9cc05d9bc6i 2024-11-20 13:01:18 colour_data_v2 FF00FF
setstate tuya_local_bf9831c0ace9cc05d9bc6i 2024-11-20 13:01:18 hue 83
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: Cybers am 20 November 2024, 12:12:58In meiner Welt würden am Ende von Zeile 3 sogar zwei Klammern fehlen, die dann am Ende in Zeile 6 zu viel sind. Aber egal was ich versuche, ich bekomme immer einen Error...

Nun wissen wir ja nicht, WIE Du versuchst, den code für Dein userReading in FHEM einzubauen. Aber wenn Du den mit FHEM gelieferten Editor codemirror in dem Attributfeld verwendest, wird Dir doch automatisch angezeigt, wie die eingegebenen Klammern paarweise zusammengehören. Das hilft ungemein bei der Fehlersuche.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!