Autor Thema: Zu diesem Forumbereich und nützliche Links  (Gelesen 937 mal)

Offline Beta-User

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 16292
Zu diesem Forumbereich und nützliche Links
« am: 28 Juli 2021, 17:05:53 »
Hallo zusammen,

dieser Forenbereich ist für alle FHEM-User gedacht, die
  • "FHEM ist ein Perl Server" besser verstehen und etwas vertiefter "hinter die Kulissen" schauen wollen;
  • Fragen zu den unter "Perl-Specials" in der commandref beschriebenen Funktionen haben;
  • Lösungsansätze suchen, z.B. für eigene Funktionen, um "wiederkehrende Aufgabenstellungen" zu lösen (z.B. eigene stateFormat-oder devStateIcon-Anweisungen, userReadings-Routinen, ...);
  • (Schwierigkeiten mit englischen Rückmeldungen aus Perlcritic haben);
  • feedback zu ggf. noch "unfertigem" oder (vermutet) verbesserungsfähigem Code" haben möchten ("funktionsfähigen Code" bitte in "Codeschnipsel" posten). Das durchaus auch im Sinne eines "peer reviews" von User zu User - aber auch Perl-Cracks dürfen natürlich gerne Hilfestellungen geben (und sollen das bitte auch, wenn ein Lösungsansatz ggf. mal in die falsche Richtung geht).
Wobei "falsch" relativ ist: There's more than one way to do it!

Nach meinem Geschmack ist es allerdings sinnvoll, sich an gewisse Standards zu halten, daher ein paar allgemeine Hinweise:
  • Ganz allgemeine Perl-Fragen sind vermutlich in speziellen externen Foren besser aufgehoben. Es gibt z.B. ein deutschsprachiges unter https://www.perl-community.de/bat/poard/start;
  • Wer in die Tiefen einsteigen kann/will/muss, ist eventuell im Forenbereich FHEM Development besser aufgehoben; schreibenden Zugang haben dort auch "Tester";
  • Im Wiki in der Kategorie Development findet man neben Erläuterungen zum Aufbau von Modulen auch viele Infos zur Funktionsweise diverser Funktionen aus fhem.pl. Ein Blick speziell in die DevelopmentModuleAPI schadet in jedem Fall nicht;
  • Vor allem, aber nicht nur Perl-Kenner werden vermutlich Antworten zu einigen grundsätzlichen Fragen zu "FHEM und Perl" in der Perl-Ecke bei FHEM Development finden - bei Bedarf sollte es hier in diesem Bereich nicht mehr als einen (unemotionalen!) Thread zur Frage geben, ob "Prototypen schlecht" sind! (und wie  man es als Einsteiger denn nun handhaben sollte);
  • DIE Referenz schlechthin zur "Schnittstelle" FHEM - Perl sind die "Perl Specials" in der commandref. Manche Probleme lassen sich bereits dadurch lösen, dass man die zum Problem passende vorhandene Funktion auswählt (ich bin z.B. selbst erst vor relativ kurzem darüber gestolpert, dass ReadingsNum() ein <round>-Argument akzeptiert; ist vielleicht eine gute Wahl, wenn man eine Zahl zum Rechnen (oder für die Darstellung) sucht ;) ...);
  • Wer Code in FHEMWEB editiert (was z.B. für myUtils-Code bzw. auch notify-oneliner zu empfehlen ist), sollte "codemirror" aktiviert haben (siehe JavaScripts-Attribut bei FHEMWEB);
  • eigene Funktionen sollte man möglichst nach "myUtils" auslagern. Einen Einstieg hierzu findet man in https://wiki.fhem.de/wiki/99_myUtils_anlegen (das geht für ambitionierte User in die Nähe von "Pflichtlektüre"!).


Hier noch ein paar Links für allgemein an Perl Interessierte (vorherige Lektüre ist aber nicht Pflicht!) ohne Gewähr für die Qualität des jeweiligen Inhalts:
  • Eine (englischsprachige) Einführung wäre z.B. hier zu finden, noch etwas älter, dafür in deutsch der Perl-Kurs der FU Berlin (1999) oder (vermutlich aktueller) bei wikibooks.
  • Literaturtipps zu Perl sind z.B. in diesem, diesem oder diesem Thread (-beitrag) zu finden.
  • perlcritic ist ein script, um Perl-Programmcode auf Einhaltung der Perl Best Practices zu überprüfen. Manches ist nicht unumstritten, und wer weiß, was er tut, kann die dortigen Hinweise auch ignorieren. Für Gelegenheitsprogrammierer jedoch ein oft als hilfreich empfundener Weg, typische Fehler zu erkennen und zu vermeiden. Man kann es lokal installieren oder seinen Code nach perlcritic.com hochladen. Die-Online-Version verrät einem dann bei Klick auf die Fragezeichen auch, was man ggf. besser machen kann;
  • eine gewisse Grundvorstellung zu den "Daten-Typen in Perl" zu haben, ist auch nicht verkehrt.


Wenn etwas nicht läuft wie erhofft:
  • Ein Blick ins allgemeine FHEM-Log zeigt häufig, wo das eigentliche Problem (oder zumindest Verbesserungspotential) steckt. Bitte also ggf. neben den allgemeinen Posting-Hinweisen (auch zur Formatierung!) aus Unbedingt vor dem ersten Post lesen vor dem Posten checken, ob im Log was ggf. für andere verwertbares steckt!
  • Oft steht da, dass "fhem.pl schuld" wäre. Meistens ist das nicht der Fall, und ein aktiviertes "stacktrace" (siehe global) kann dann helfen, den eigentlichen Verursacher einzugrenzen ;) .
  • Ein Warning ist kein Fehler! Es ist aber kein Fehler, die Ursachen für das Warning zu beseitigen ;) .
  • Viele (Fehler-) Meldungen im Log erscheinen vielen erfahrungsgemäß "unleserlich" oder "unverständlich". Relativ häufig hatte aber schon mal jemand dieses (oder ein ähnliches) Problem, nur dann noch in einer anderen Zeile. Es ist daher erfahrungsgemäße eine gute Idee, die Suche im Forum (und anderswo) etwas weniger eng zu begrenzen.
In diesem Sinne: Viel Freude an "FHEM ist ein Perl Server..."

PS: Dieser Thread wird ausnahmsweise (!) geschlossen, wer hilfreiche Links oder Anmerkungen dazu hat, darf gerne einen Thread dazu eröffnen, wir werden das dann ggf. hierher übernehmen.
Server: HP-T620@Debian 10, 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:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}