Anfrage Erweiterung der Verzeichnisstruktur

Begonnen von CoolTux, 12 Mai 2020, 09:05:22

Vorheriges Thema - Nächstes Thema

Sidey

Hi,

Meine Meinung, die muss nicht korrekt sein muss es in ein Package httpmod.
Da wir noch nicht wissen was es da so alles gibt könnte man z.B. mit einem attr.pm starten:

./lib/FHEM/httpmod/attr.pm

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

Christoph Morrison

#76
Ich bin gerade sehr involviert darin, meinen ganzen Code umzustellen (MyUtils, aber auch die Module) - ich bin auch schon darüber gestolpert, dass ich nun Funktionen habe, die ich generell im FHEM-Namespace sehen würde und nicht im Modul-Namespace.

Ich würde so eine Funktion unter FHEM::Attributes::Utils (also lib/FHEM/Attributes/Utils.pm einsortieren, wenn es eine generelle Funktion sein soll. Ansonsten vielleicht in FHEM::WWW::HTTPMOD? HTTPMOD kann ohne FHEM ja nicht existieren, oder?

CoolTux

FHEM::Attributes::Utils
Finde ich Recht passend.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Sidey

Hi,

ich habe eine kleine Hilfsbibliothek für das verwalten von interen Timer erstellt.
Würde das Package wie folgt verorten: FHEM::Timer::Helper;

https://github.com/fhem/lib_timer/tree/master/lib/FHEM/Timer


Vielleicht gibt es ja auch noch Zukünftig weitere Packages unterhalb von Timer.

Würde das ganze dann auch gerne ins SVN committen, damit es zur Verfügung steht.

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

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

CoolTux

Zitat von: Sidey am 11 Juni 2020, 00:28:19
Hi,

ich habe eine kleine Hilfsbibliothek für das verwalten von interen Timer erstellt.
Würde das Package wie folgt verorten: FHEM::Timer::Helper;

https://github.com/fhem/lib_timer/tree/master/lib/FHEM/Timer


Vielleicht gibt es ja auch noch Zukünftig weitere Packages unterhalb von Timer.

Würde das ganze dann auch gerne ins SVN committen, damit es zur Verfügung steht.

Grüße Sidey

Wie wäre es mit

FHEM::Automation::Timer::Helper
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Sidey

Zitat von: CoolTux am 11 Juni 2020, 06:29:07
Wie wäre es mit

FHEM::Automation::Timer::Helper

Ginge natürlich auch, aber was bedeutet die Kategorie Automation. Was gibt es denn noch auf dieser Ebene und sind Timer immer eine Unterkategorie von Automation ?

Für mich im Moment noch wenig greifbar.

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

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

Christoph Morrison

Für was auch immer ihr euch entscheidet, ich hätte zwei Kandidaten, von denen ich glaube, dass sie reserviert sein sollten:

FHEM::MyUtils für den Code, den Benutzer aktuell in ihrer 99_MyUtils.pm haben
FHEM::Core für den Kern von FHEM, der aktuell in erster Linie in der fhem.pl schlummert.

Ich habe meine Sachen wie folgt einsortiert (WiP, deshalb mag sich das noch ändern):

FHEM::MyUtils, wie oben geschrieben liegt da nun der Code, der früher in 99_MyUtils lag.
FHEM::Test::Mock - Gemockte FHEM-Funktionen für meine Unit-Tests
FHEM::Weather::Buienradar, FHEM-spezifischer Teil von Buienradar
FHEM::WWW::Serienjunkies::Latest, FHEM-spezifischer Teil meines Testmoduls
FHEM::App::* - Kommandozeilen-Skripte wie der Modul-Generator, log2db, Generator für Control-Files, etc.
FHEM::Misc::FertilityCalendar - Fruchtbarkeitskalender für FHEM
etc. pp.

Aktuell überlege ich noch, was ich mit den Nicht-FHEM-spezifischen-Teilen mache. Hab mir jetzt mal einen PAUSE-Account beantragt und ggf. schiebe ich den dann direkt ins CPAN. Wir müssen dann die Nutzer dann halt dahin gehend erziehen, dass sie cpanm ausführen können bzw. legen ihnen einen Installer nahe, der notwendige Module installiert (so wie der von Loredo). Wenn wir diese Hürde mal genommen haben, könnte die Funktionalität von FHEM deutlich umfangreicher werden, denn es gibt im CPAN wirklich hunderte interessanter Module, die letztlich nur einen Wrapper für FHEM brauchen, z.B. Sendungsverfolgungen, die ganzen Google-Services, Wikidata, etc. etc.

Christoph Morrison

Beim Schreiben meines Postings eben habe ich noch mal über die Frage von Stefan nachgedacht und ich glaube, ich würde es eher unter FHEM::Core::Attributes::Utils einsortieren, aus den eben beschriebenen Gründen (Attribute sind ein Kernfeature von FHEM).

Die Timer-Lib von Sidey würde ich unter FHEM::Core::Timer::Helper einsortieren, denn - gleiche Argumentation - Timer sind Kernfeature von FHEM.

CoolTux

Stimme Dir zu, ist wirklich besser da aufgehoben.

@Stefan
Automation ist in meinen Augen sowas wie notify, DOIF oder auch für mich relevant AutoShuttersControl
https://git.cooltux.net/FHEM/mod-AutoShuttersControl
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Sidey

Zitat von: Christoph Morrison am 11 Juni 2020, 10:38:43

FHEM::Test::Mock - Gemockte FHEM-Funktionen für meine Unit-Tests

Ich habe die bislang immer in meine Testscript hinterlegt.
Das in ein Package packen ist sicher gut, gehört das aber in den FHEM oder in einen Test Namespace ?

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

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

Christoph Morrison

Zitat von: Sidey am 11 Juni 2020, 10:44:35
Ich habe die bislang immer in meine Testscript hinterlegt.
Das in ein Package packen ist sicher gut, gehört das aber in den FHEM oder in einen Test Namespace ?

Es gehört halt in einen Test-Namespace der exklusiv zu FHEM gehört (zumindest so lange z.B. ReadingsVal($#!%) noch in fhem.pl und nicht in FHEM::Core::Readings liegt ;-) )

Test::Mock ist außerdem ein CPAN-Modul und ggf. kollidiert hier etwas.

Christoph Morrison

( Ich habe übrigens im Github mal eine Doku angefangen, die dann später inschallah auch ins Wiki soll): Namespaces

Ihr seid natürlich eingeladen zu forken und PR'en)

Sidey

Zitat von: Christoph Morrison am 11 Juni 2020, 10:54:12
Es gehört halt in einen Test-Namespace der exklusiv zu FHEM gehört (zumindest so lange z.B. ReadingsVal($#!%) noch in fhem.pl und nicht in FHEM::Core::Readings liegt ;-) )

Ich war eher am Überlegen ob es nicht eher Test::FHEM::Mock anstelle FHEM::Test::Mock.

Wenn ich dann etwas außerhalb Fhem teste wäre das auch in Test::irgendwas::...


Gruß Sidey

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

KernSani

Hallo zusammen,
nachdem ich gerade eine kleine myUtils Routine schreiben wollte, dachte ich mir ich probiere das mal in der neuen Struktur. Funktioniert auch wunderbar, allerdings habe ich ein kleines Problem (wahrscheinlich stelle ich mich einfach dumm an):
* Beim erstmaligen "reload 99_myUtils" wird brav meine FHEM::myUtils::meineSub geladen
* nach einer kleinen Änderung von meineSub und erneutem "reload 99_myUtils" zieht die Änderung leider nicht
* Ein reload lib/FHEM/... geht nicht, weil reload slashes verbietet.
Wie bekomme ich jetzt meine geänderte sub ge-reloaded?
Danke,
Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

rudolfkoenig

Reload laedt nur "FHEM-Module" aus dem FHEM Verzeichnis.
Wenn diese wiederum andere Dateien laden, dann muss das reload dieser Dateien mit "eigenen" Mitteln passieren, z.Bsp. mit
{ do "lib/FHEM/myUtils/meineSub.pm" }


Das gilt auch fuer HttpUtils.pm, wenn man es erneut reinladen will, insofern gibt es keine Sonderbehandlung.