Autor Thema: [erledigt]Runden auf Ganzzahl mit ReadingsNum() funktioniert nicht  (Gelesen 7477 mal)

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1814
Antw:Runden mit ReadingsNum()
« Antwort #15 am: 29 Juli 2021, 11:10:23 »
Die https://wiki.fhem.de/wiki/DevelopmentModuleAPI müsste auch angepasst werden, da ist das runden gar nicht erwähnt.

Ich hab mich mal erbarmt.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17956
  • Stoppt den Unicode-Irrsinn!
Antw:Runden mit ReadingsNum()
« Antwort #16 am: 29 Juli 2021, 11:24:38 »
Ich hab mich mal erbarmt.

Prima. Wo Du gerade dabei bist: In der Syntaxbeschreibung steht "$value = ReadingsNum(...)"
Unter Rückgabewert steht dann plötzlich "$number" - vielleicht könnte man das noch so vereinheitlichen, dass an beiden Stellen das gleiche steht?
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1814
Antw:Runden mit ReadingsNum()
« Antwort #17 am: 29 Juli 2021, 11:37:46 »
Prima. Wo Du gerade dabei bist: In der Syntaxbeschreibung steht "$value = ReadingsNum(...)"
Unter Rückgabewert steht dann plötzlich "$number" - vielleicht könnte man das noch so vereinheitlichen, dass an beiden Stellen das gleiche steht?

Done.

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Antw:Runden auf Ganzzahl mit ReadingsNum() funktioniert nicht
« Antwort #18 am: 29 Juli 2021, 12:18:32 »
Wow, jetzt habe ich aber eine Lawine ausgelöst... 8)

Danke euch, dass ihr euch darum kümmert. :)
Das bestätigt, dass es sich lohnt, sich für etwas einzusetzten.

Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Antw:Runden mit ReadingsNum()
« Antwort #19 am: 29 Juli 2021, 15:05:10 »
Ich hab mich mal erbarmt.

Jetzt muss ich nochmal nachfragen, du hast als Bsp. das Runden auf Ganzzahl mitangegeben.
Wurde ReadingsNum() auch angepasst/korrigiert?
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline Beta-User

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 18032
Antw:Runden mit ReadingsNum()
« Antwort #20 am: 29 Juli 2021, 15:55:47 »
Jetzt muss ich nochmal nachfragen, du hast als Bsp. das Runden auf Ganzzahl mitangegeben.
Wurde ReadingsNum() auch angepasst/korrigiert?
Bisher noch nicht: https://svn.fhem.de/trac/log/trunk/fhem/fhem.pl
(Es scheint aber immerhin Einigkeit bei den hier Beteiligten zu geben, dass das ohne Ganzzahl-Rundung ein "unerwartetes Verhalten" ist, und es gut wäre, fhem.pl würde entsprechend angepaßt).

Vielleicht sollte man Rudi einen patch zukommen lassen...? (Incl. OldReadingsNum() und Klarstellung in den commandref-Abschnitten, dass das "nur" hinter dem Komma geht (Math::round kann auch vor dem Komma)). @frober: das wäre eine gute "Einsteiger-Übung" in "how to write a patch" ;) .

(Bitte dann nochmal einen Thread in "Sonstiges" eröffnen und dort anhängen. Das Thema war an sich da gut aufgehoben gewesen; es dürfte Rudi vermutlich nur durchgerutscht sein, und über (erneutes) "verschieben" bekommt Rudi keine Info).
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Antw:Runden mit ReadingsNum()
« Antwort #21 am: 29 Juli 2021, 17:22:51 »
Bisher noch nicht: https://svn.fhem.de/trac/log/trunk/fhem/fhem.pl
(Es scheint aber immerhin Einigkeit bei den hier Beteiligten zu geben, dass das ohne Ganzzahl-Rundung ein "unerwartetes Verhalten" ist, und es gut wäre, fhem.pl würde entsprechend angepaßt).

Vielleicht sollte man Rudi einen patch zukommen lassen...? (Incl. OldReadingsNum() und Klarstellung in den commandref-Abschnitten, dass das "nur" hinter dem Komma geht (Math::round kann auch vor dem Komma)). @frober: das wäre eine gute "Einsteiger-Übung" in "how to write a patch" ;) .

(Bitte dann nochmal einen Thread in "Sonstiges" eröffnen und dort anhängen. Das Thema war an sich da gut aufgehoben gewesen; es dürfte Rudi vermutlich nur durchgerutscht sein, und über (erneutes) "verschieben" bekommt Rudi keine Info).

Das ist jetzt eine Herausforderung, wo ich nicht weiß, ob ich das in Kürze hinbekomme.

Ich weiß noch nicht einmal, ob der Lösungsansatz von xenos1984 funktioniert. Ok, das kann ich testen...aber falls nicht, gibt es die fhemeigene Funktion round() überhaupt her?

Den Thread erneut öffnen und auf diesen verweisen, das kann ich schon.. ;) ;D
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline Beta-User

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 18032
Antw:Runden auf Ganzzahl mit ReadingsNum() funktioniert nicht
« Antwort #22 am: 29 Juli 2021, 17:45:09 »
Das ist ja jetzt nicht ultra-dringend...

Und mal ein {round(99.1,0)}in die Kommandozeile zu werfen (=> eigene Funktionen aus myUtils testen...), ist jetzt auch nicht sooo schwierig oder langwierig ;) .

@Christoph Morrison: Bei den Beispielen stellt sich die Frage, ob "Text" als default-Antwort glücklich ist. die ultimative Lösung für das Problem habe ich auch nicht, aber evtl. wäre eine wilde Mischung aus "42", 0, undef (? ausnahmsweise!) und "1000000" plakativ genug, um künftige Leser für das dahinterliegende Problem zu sensibilisieren?

@betateilchen: Danke für den Hinweis auf den "Val"-Lapsus.
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Antw:Runden auf Ganzzahl mit ReadingsNum() funktioniert nicht
« Antwort #23 am: 29 Juli 2021, 17:51:12 »
Das ist ja jetzt nicht ultra-dringend...

Und mal ein {round(99.1,0)}in die Kommandozeile zu werfen (=> eigene Funktionen aus myUtils testen...), ist jetzt auch nicht sooo schwierig oder langwierig ;) .

Ich meinte eigentlich das Erstellen des Patches, habe die Lösung aber, glaube ich, schon gefunden....

Das  Testsystem wird gerade geupdatet ;)
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1814
Antw:Runden mit ReadingsNum()
« Antwort #24 am: 29 Juli 2021, 18:25:40 »
Vielleicht sollte man Rudi einen patch zukommen lassen...? (Incl. OldReadingsNum() und Klarstellung in den commandref-Abschnitten, dass das "nur" hinter dem Komma geht (Math::round kann auch vor dem Komma)). @frober: das wäre eine gute "Einsteiger-Übung" in "how to write a patch" ;) .

Ich wollte heute abend einen Patch machen, aber wenn frober will, bitte gerne ;-)

Zitat
@Christoph Morrison: Bei den Beispielen stellt sich die Frage, ob "Text" als default-Antwort glücklich ist. die ultimative Lösung für das Problem habe ich auch nicht, aber evtl. wäre eine wilde Mischung aus "42", 0, undef (? ausnahmsweise!) und "1000000" plakativ genug, um künftige Leser für das dahinterliegende Problem zu sensibilisieren?

Mit Text ist wenigstens klar, dass es nicht zwangsweise eine Nummer ist, die zurück kommt. Deshalb hatte ich auch $number durch $value ausgetauscht.

(nota bene: Über das fake round müssten wir eigentlich auch noch mal diskutieren, so ist es nur ein roter Hering, weil round nicht rundet - hoffentlich rundet dann format nicht auch noch ...)

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Antw:Runden mit ReadingsNum()
« Antwort #25 am: 29 Juli 2021, 18:28:38 »
Ich wollte heute abend einen Patch machen, aber wenn frober will, bitte gerne ;-)

Mit Text ist wenigstens klar, dass es nicht zwangsweise eine Nummer ist, die zurück kommt. Deshalb hatte ich auch $number durch $value ausgetauscht.

(nota bene: Über das fake round müssten wir eigentlich auch noch mal diskutieren, so ist es nur ein roter Hering, weil round nicht rundet - hoffentlich rundet dann format nicht auch noch ...)

schon erledigt :)

https://forum.fhem.de/index.php/topic,122275.0.html
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Antw:Runden mit ReadingsNum()
« Antwort #26 am: 29 Juli 2021, 18:32:53 »
(nota bene: Über das fake round müssten wir eigentlich auch noch mal diskutieren, so ist es nur ein roter Hering, weil round nicht rundet - hoffentlich rundet dann format nicht auch noch ...)

Dann war es doch richtig, dass ich es mit int(0.5 + Wert) gelöst habe.

@betateilchen ich wusste, dass es einen Grund hatte....
« Letzte Änderung: 29 Juli 2021, 18:38:44 von frober »
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Rudi hat den Patch eingecheckt. :)

Danke nochmal an alle für die Unterstützung.

@Beta-User danke für den Stups mit dem Patch, irgendwie hat gestern alles gepasst und ich hatte einen Lauf... :D
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline Beta-User

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 18032
Thx!

Manöverkritik: Evtl. hätte man in der commandref noch klarstellen können, dass das nur bis zu Ganzzahlen bzw. hinter dem Komma klappt:
"Echtes runden" (mit Math::round, z.B.) müsste nach meinem Verständnis auch vor dem Komma greifen.
Ob der "Trick" mit sprintf nun "gut" ist, sei mal dahingestellt, das findet sich jedenfalls häufiger als Empfehlung für Rundungen.

@Christoph Morrison:
Dass man da auch einen Text zurückgeben kann, ist schon klar, und den "Königsweg" in der Darstellung kenne ich auch nicht. MAn. ist es nur auch nicht optimal, nur Text darzustellen, denn vermutlich kommt dann irgendwann wieder einer mit dem Hinweis, dass das ggf. Warnings verursacht, weil er einen nichtnummerischen Vergleich vornimmt...

Über "round" können wir gerne diskutieren (dto. für "min"&Co), aber das ist hier vermutlich nicht der richtige Ort...
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1095
  • Was man nicht kann, kann man lernen...
Manöverkritik: Evtl. hätte man in der commandref noch klarstellen können, dass das nur bis zu Ganzzahlen bzw. hinter dem Komma klappt:
"Echtes runden" (mit Math::round, z.B.) müsste nach meinem Verständnis auch vor dem Komma greifen.
Ob der "Trick" mit sprintf nun "gut" ist, sei mal dahingestellt, das findet sich jedenfalls häufiger als Empfehlung für Rundungen.

In meinem Eifer ist mir das durchgegangen. ::)

MMn wäre es wichtiger zu erwähnen, dass hier nicht grundet wird.
Sollte ein User die Funktion für "wichtige" Berechnungen verwenden, bekommt er teilweise falsche Ergebnisse.
Wenn ihr jedoch eine besssere Lösung für round() findet...
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

 

decade-submarginal