Modul Astro, Fehler bei Anzeige des Mondphasenbildes

Begonnen von Franzel56, 14 Januar 2025, 10:49:54

Vorheriges Thema - Nächstes Thema

Franzel56

Hallo,

ich habe in meinem Astro-Modul in den Readings folgenden Fehler:

MoonPhasePic   

Error evaluating SonneMond userReading MoonPhasePic: syntax error at (eval 14182) line 1, near ")\"     

2024-12-14 10:30:48
Ich habe hier gelesen und gesucht, aber nichts gefunden.
Habt Ihr einen Tip?
Hier meine 99_myUtilss.pm dazu:
Hallo,

ich habe in meinem Astro-Modul in den Readings folgenden Fehler:

MoonPhasePic   

Error evaluating SonneMond userReading MoonPhasePic: syntax error at (eval 14182) line 1, near ")\"     

2024-12-14 10:30:48
Ich habe hier gelesen und gesucht, aber nichts gefunden.
Habt Ihr einen Tip?
Hier meine 99.myUtils.pm
[code]Moon picture

sub myUtils_Astro_Initialize($$)
{
  my ($hash) = @_;
}

sub moon_pics($)
{
 my ($name)    = @_;
 my $picNo     = ReadingsVal("SonneMond","MoonAge",0);
 my $picOrd    = "/opt/fhem/www/images/Phasenbilder/";
 my $picPath   = "";

  if(  $picNo < 180 ){
    $picNo = int($picNo/180*49+51);
  }else{
    $picNo = int(($picNo/180-1)*49+1);
  }

$picPath =  $picOrd.$picNo.".png";

return $picPath
}

sub Moon_to_html($)
{
   my($hash) = @_;
   $hash = $defs{$hash} if( ref($hash) ne 'HASH' );
   return undef if( !$hash );

   my $name = $hash->{NAME};
   my $scale = "100";
   my $state = $hash->{STATE};
   my $pathToPictures = ReadingsVal("SonneMond", "Mondbild", "");
   my $ret;

   $ret .= "<div style='width:".$scale."px; text-align: center;'>";
   $ret .= "<img src='$pathToPictures$\' width='$scale' height='$scale'>";
   $ret .= "</div>";

   $hash->{fhem}->{cached} = $ret;

   return $ret;
}

betateilchen

ZitatError evaluating SonneMond userReading MoonPhasePic

Der Fehler kommt doch aus einem userReading, dann zeig doch erstmal ein list des devices, in dem das userReading definiert wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Franzel56

define SonneMond Astro
setuuid SonneMond 671cfdb0-f33f-b680-ff9d-3df07f923b50b7ba
attr SonneMond altitude 220
attr SonneMond devStateIcon { '<div><img src='.ReadingsVal($name,"MoonPhasePic","0").' height="100" width="100">' }
attr SonneMond horizon 0.0
attr SonneMond icon weather_moon_phases_8
attr SonneMond recomputeAt NewDay,SunRise,SunSet,AstroTwilightEvening,AstroTwilightMorning,CivilTwilightEvening,CivilTwilightMorning,CustomTwilightEvening,CustomTwilightMorning
attr SonneMond room Astro
attr SonneMond stateFormat <embed src='fhem/Astro_moonwidget?name='SonneMond' width='18'> SunAlt SunSign
attr SonneMond userReadings Mondbild {moon_pics("myAstro")}\

attr SonneMond verbose 5

Franzel56


betateilchen

Die Fehlermeldung

Zitat von: Franzel56 am 14 Januar 2025, 10:49:54syntax error at (eval 14182) line 1, near ")\"     

beschreibt doch genau das, was man hier

Zitatattr SonneMond userReadings Mondbild {moon_pics("myAstro")}\

als Fehler sieht? Lass den backslash am Ende weg und wahrscheinlich ist dann alles gut.

Dass in dem userReading ein vernünftiger/sinnvoller trigger fehlt, lassen wir jetzt mal unbeachtet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

warum rufst Du die Funktion eigentlich mit einem Namen "myAstro" auf,

moon_pics("myAstro")
wenn dieser Name in der Funktion selbst überhaupt nicht verwendet wird?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Franzel56

Zitat von: betateilchen am 14 Januar 2025, 15:22:31Die Fehlermeldung

Zitat von: Franzel56 am 14 Januar 2025, 10:49:54syntax error at (eval 14182) line 1, near ")\"     

beschreibt doch genau das, was man hier

Zitatattr SonneMond userReadings Mondbild {moon_pics("myAstro")}\

als Fehler sieht? Lass den backslash am Ende weg und wahrscheinlich ist dann alles gut.

Dass in dem userReading ein vernünftiger/sinnvoller trigger fehlt, lassen wir jetzt mal unbeachtet.

Ich hatte gerade schon mal geantwortet, aber die ist weg.

Also das Entfernen des Backslash hat nicht geholfen. Was meinst Du mit vernünftiger/sinnvoller Trigger?
Sorry, bin eben Anfänger.

Franzel56

Zitat von: betateilchen am 14 Januar 2025, 15:29:50warum rufst Du die Funktion eigentlich mit einem Namen "myAstro" auf,

moon_pics("myAstro")
wenn dieser Name in der Funktion selbst überhaupt nicht verwendet wird?

Auch hier weiß ich nicht genau, was Du meinst. Hatte mir das im FHEMWiki rausgesucht.

Prof. Dr. Peter Henning

ZitatAlso das Entfernen des Backslash hat nicht geholfen.
"hat nicht geholfen" ist keine Aussage, mit der hier jemand etwas anfangen kann. Tritt dieselbe Fehlermeldung weiter auf (===> Log-Auszug beifügen)? Ist der Backslash wirklich weg(==> List des Devices beifügen)
ZitatSorry, bin eben Anfänger.
Das waren wir alle mal. Dagegen hilft nur: Lesen, Testen.
ZitatWas meinst Du mit vernünftiger/sinnvoller Trigger?
Was steht denn in der CommandRef und der Anfängerdoku zu "userReadings"?

LG

pah

Franzel56

Ja, der Fehler tritt immer noch auf.
define SonneMond Astro
setuuid SonneMond 671cfdb0-f33f-b680-ff9d-3df07f923b50b7ba
attr SonneMond altitude 220
attr SonneMond devStateIcon { '<div><img src='.ReadingsVal($name,"MoonPhasePic","0").' height="100" width="100">' }
attr SonneMond horizon 0.0
attr SonneMond icon weather_moon_phases_8
attr SonneMond recomputeAt NewDay,SunRise,SunSet,AstroTwilightEvening,AstroTwilightMorning,CivilTwilightEvening,CivilTwilightMorning,CustomTwilightEvening,CustomTwilightMorning
attr SonneMond room Astro
attr SonneMond stateFormat <embed src='fhem/Astro_moonwidget?name='SonneMond' width='18'> SunAlt SunSign
attr SonneMond userReadings Mondbild {moon_pics("myAstro")}

attr SonneMond verbose 5

Franzel56


rabehd

#11
Zitat von: betateilchen am 14 Januar 2025, 15:29:50warum rufst Du die Funktion eigentlich mit einem Namen "myAstro" auf,

moon_pics("myAstro")
wenn dieser Name in der Funktion selbst überhaupt nicht verwendet wird?


Ohne reingeschaut zu haben, Du rufst moon_pics mit dem Parameter myAstro auf.
Wird der Parameter gebraucht/verwendet?
Auch funktionierende Lösungen kann man hinterfragen.

Jamo

Zitat von: Franzel56 am 14 Januar 2025, 17:11:30Ja, der Fehler tritt immer noch auf.
define SonneMond Astro
setuuid SonneMond 671cfdb0-f33f-b680-ff9d-3df07f923b50b7ba
attr SonneMond altitude 220
attr SonneMond devStateIcon { '<div><img src='.ReadingsVal($name,"MoonPhasePic","0").' height="100" width="100">' }
attr SonneMond horizon 0.0
attr SonneMond icon weather_moon_phases_8
attr SonneMond recomputeAt NewDay,SunRise,SunSet,AstroTwilightEvening,AstroTwilightMorning,CivilTwilightEvening,CivilTwilightMorning,CustomTwilightEvening,CustomTwilightMorning
attr SonneMond room Astro
attr SonneMond stateFormat <embed src='fhem/Astro_moonwidget?name='SonneMond' width='18'> SunAlt SunSign
attr SonneMond userReadings Mondbild {moon_pics("myAstro")}

attr SonneMond verbose 5

Habs gerade probiert, Du musst die Leerzeile im Userreading entfernen, dann tritt der Fehler nicht mehr auf. Das sieht man auch in deime list vom define SonneMond das da eine Leerzeile drin ist.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

betateilchen

Grundsätzlich hatte ich erwartet, dass mit Entfernen des backslash (weiß der TE eigentlich, welche Funktion der hätte, wenn er gebraucht würde?) auch die sinnfreie Leerzeile entfernt wird.

Zitat von: Franzel56 am 14 Januar 2025, 16:01:55Hatte mir das im FHEMWiki rausgesucht.

Man sollte auch versuchen zu verstehen, was man per copy&paste übernimmt.

Es wird langsam Zeit für Popcorn...
-----------------------
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: rabehd am 14 Januar 2025, 17:18:09Ohne reingeschaut zu haben, Du rufst mion_pics mit dem Parameter myAstro auf.
Wird der Parameter gebraucht/verwendet?

Nein, wird er nicht. Sieht man doch, wenn man sich den oben stehenden code anschaut.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!