98_Medialist überschreibt round Funktion von FHEM

Begonnen von Sidey, 05 Mai 2019, 22:30:15

Vorheriges Thema - Nächstes Thema

Sidey

Hallo TobiasFaust,

das Modul 98_Medialist überschreibt meiner Meinung nach die FHEM Funktion mit dem Namen round.

Folgender Aufruf, sollte als Ergebnis 1,1 bringen:
{round(527/500,1)}

Sobald ich dein Modul lade mittels einer minimal Definition `defmod MyMediaList MediaList /media/music/` ergibt round auf einmal nur noch als Ergebnis 1.

Dadurch funktioniert mindestens mal mein eigenes Modul nicht mehr, aber alle anderen Module, welche die FHEM Round Funktion verwenden, sind ebenfalls in ihrer Funktion beeinträchtigt.

Es wäre prima, wenn Du die Math::Round Funktionen nicht in main registrierst. Dazu könntest Du dein Modul in ein eigenes Package packen oder beim einbinden der Math::Round sub keine Funktionen importieren:

use Math::Round ();

Die einzigste Stelle an der ich die Verwendung von Math::round gefunden habe müsste dann leicht modifiziert werden:

$res = {"Artist" => $artist, "Title" => $title, "Album" => $album, "Time" => math::round($mp3info->{SECS}), "File" => $file, "Cover" => ""};


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

betateilchen

Zitat von: Sidey am 05 Mai 2019, 22:30:15
Es wäre prima, wenn Du die Math::Round Funktionen nicht in main registrierst. Dazu könntest Du dein Modul in ein eigenes Package packen oder beim einbinden der Math::Round sub keine Funktionen importieren:

was spricht denn dagegen, die in FHEM ohnehin vorhandene Funktion round() zu verwenden?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Sidey

Zitat von: betateilchen am 06 Mai 2019, 15:42:24
was spricht denn dagegen, die in FHEM ohnehin vorhandene Funktion round() zu verwenden?

Das überlasse ich dem Autor des Modules. Ich habe nur bemerkt, dass das überschreiben der round Funktion in meinen Modulen zu Fehlern führt. Vermutlich reicht die FHEM round Funktion auch aus und die MATH lib ist nicht notwendig.

Ich bin schon am überlegen, ob ich in mein Modul einen check einbauen soll, ob die round Funktion das korrekte Ergebnis liefert.  Gibt ja auch genügend Hinweise im Forum die dieses Problem schon beschreiben. Da muss man halt erst mal drauf kommen, dass es an round liegt.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Tobias

die aktuelle Version aus meinem GIT ist jetzt im FHEM Repo
Das ist der Patch von Sidey

Ich muss später nochmal schauen warum ich nicht die FHEM Round Funktion genommen habe....
Alelrdings ist mir auch schleierhaft warum beide funktionen so unterschiedlich funktionieren :(
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter