Autor Thema: Funktion Value() ändern  (Gelesen 349 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16430
  • s/fhem\.cfg/configDB/g
Funktion Value() ändern
« am: 22 Juli 2020, 10:30:10 »
@Rudi: könnte man die Funktion Value() durch InternalVal(<device>,'STATE','') ersetzen und eine Logmeldung ausgeben, dass Value() zu hinterfragen ist?

Immer wieder fallen Anwender darauf rein, mit Value() und einem internal zu arbeiten, obwohl sie eigentlich ein reading abfragen wollen. Da im Internal und im reading nicht immer das gleiche stehen muss, kommt es regelmäßig zu Irritationen und Problemen durch unerwartete Ergebnisse und FHEM-Verhalten.

Man könnte mit der Logmeldung die Aufmerksamkeit des Anwenders wecken, darüber nachzudenken, ob er an der Verwendungsstelle von Value() wirklich das Richtige tut.
« Letzte Änderung: 22 Juli 2020, 12:25:50 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Zustimmung Zustimmung x 2 Liste anzeigen

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22642
Antw:Funktion Value() abschaffen!
« Antwort #1 am: 22 Juli 2020, 11:08:43 »
Ich habe nicht das Gefuehl, dass das Problem so schwerwiegend ist, dass es diese Anpassung (was etliche Installationen und 20+ Module betrifft) gerechtfertigt. Bin auch nicht sicher, dass der Vorschlag solche Probleme loest: wer den Unterschied zwischen Internal und Reading noch nicht verstanden hat, der wird nicht instinktiv die richtige Funktion verwenden.

Bin aber bereit, wenn "viele" das anders sehen, die Funktion umzustellen.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16430
  • s/fhem\.cfg/configDB/g
Antw:Funktion Value() abschaffen/ändern
« Antwort #2 am: 22 Juli 2020, 11:13:16 »
Ich habe nicht das Gefuehl, dass das Problem so schwerwiegend ist,

Es ist nicht schwerwiegend, tritt aber häufig auf.

Die Funktion Value() muss ja nicht komplett entfallen, insofern wären die Auswirkungen auf die bestehenden Installationen und die Module m.E. überschaubar.

Meinetwegen kann die Logmeldung auch in die bestehende Funktion Value() eingebaut werden, z.B. im Loglevel 4.
Anwender, die Probleme mit ihrem FHEM haben, kommen zumindest meistens noch auf die Idee, den verbose Level zu erhöhen und können dann zumindest den Hinweis finden.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1203
  • Ein paar Wochen afk
    • Private Website
Antw:Funktion Value() abschaffen/ändern
« Antwort #3 am: 22 Juli 2020, 11:30:45 »
Klassischerweise würde man sowas jetzt ankündigen und Value() mit einer entsprechenden Log-Ausgabe versehen. In einem nächsten Major Release (neue FHEM-Version / Feature-Set) würde dann die Funktion tatsächlich angepasst werden.

Dann könnten sich die Maintainer und User entsprechend vorbereiten ohne durch eine abprubte Umstellung nach einem update überrascht zu werden.
Maintainer von:
holidays · 59_Twilight · contrib/sacha_gloor · Buienradar

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 11227
  • eigentlich eher "user" wie "developer"
Antw:Funktion Value() abschaffen/ändern
« Antwort #4 am: 22 Juli 2020, 12:03:36 »
Es geht mir zwar auch so, dass ich Value() verdächtige, regelmäßig für Verwirrung zu sorgen, aber den radikalen Schritt, es auszubauen, den finde ich ehrlich gesagt sehr weitgehend.

Wer weiß, was er tut, kann die Funktion gerne nutzen. Vielleicht sollte man als erstes anfangen, die Doku zu durchforsten, ob sich da irgendwas mißverständliches bzw. erläuterungsbedürftiges findet? Es ist halt so, dass viele alte Beispiele ausgiebig Value() zu nutzen scheinen, das wird etwas dauern, bis die Botschaft in der Breite angekommen ist, dass Value() zweischneidig ist...

(Im Hinterkopf stelle ich mir die Frage, wie das mit set magic ist. Ich nutze das praktisch nicht, aber vermutlich ist "[device]" auch so ein "schillernder Kandidat"...?)
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16430
  • s/fhem\.cfg/configDB/g
Antw:Funktion Value() ändern
« Antwort #5 am: 22 Juli 2020, 12:25:32 »
Es geht mir zwar auch so, dass ich Value() verdächtige, regelmäßig für Verwirrung zu sorgen, aber den radikalen Schritt, es auszubauen, den finde ich ehrlich gesagt sehr weitgehend.

Um ein offenbar bestehendes Mißverständnis auszuräumen: Das mit dem "abschaffen" im Titel war nicht so radikal gemeint, wie es geschrieben stand (ich habe den Titel gerade geändert).

  • Primär ging es mir um den Einbau einer Logmeldung bei Verwendung der Funktion.
  • Beim Betrachten der Funktion in der fhem.pl fiel mir dann auf, dass diese intern mit InternalVal() arbeiten könnte.

Einen kompletten Wegfall der Funktion halte ich aus Kompatibilitätsgründen auch nicht für sinnvoll.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Zustimmung Zustimmung x 1 Liste anzeigen

 

decade-submarginal