[98_Installer.pm] FHEM Installer Helfer-Modul

Begonnen von Loredo, 10 März 2019, 15:44:54

Vorheriges Thema - Nächstes Thema

Loredo

Ab morgen gibt es eine allererste Version eines Hilfsmoduls rund um die Installation von FHEM.


Es basiert auf dem ebenfalls noch in Entwicklung befindlichen Entwickler-Modul Meta.pm, welches der Datenlieferant für den Installer ist.


In der ersten Version kann man lediglich die einzelnen Informationen über ein FHEM Modul anzeigen lassen.
Ich habe ein paar Screenshots angehängt.




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

CoolTux

Das ist ja der Hammer. Cool Julian. Gefällt mir sehr.


Grüße
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

Thyraz

Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

chopsor

Hoi,


Die Idee mit der Abgängigkeitsanzeige finde ich super das sollte wohl vielen bei der Fehlerdiagnose helfen ;D .


Danke !
Hier könnte Ihre Werbung stehen !

Loredo

Zitat von: chopsor am 11 März 2019, 09:27:17
Die Idee mit der Abgängigkeitsanzeige finde ich super das sollte wohl vielen bei der Fehlerdiagnose helfen ;D .


Das ist der aktuelle Nutzen, ja.
Tatsächlich sollen Modulautoren aber selbst ihre Abhängigkeiten hinterlegen, auch über Perl hinaus. Der FHEM Installer soll dann gar anbieten die fehlenden Abhängigkeiten selbst zu installieren (sofern möglich). Modulautoren sollen außerdem die Möglichkeit bekommen, dass beim "define" eines Devices ebenfalls entsprechende Hinweise ausgegeben werden, um dann von dort aus auch per Klick die fehlenden Abhängigkeiten zu installieren. Bisher handhabt das ja jedes Modul "irgendwie" selbst.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

dancatt

Hi,

super Idee, vor allem das mit den Abhängigkeiten.

Habe jetzt öfters probiert mit
define fhemInstaller Installer
mir so ein Device zu erzeugen. Jedesmal beendet sich komplett fhem bei mir. Im Log kann ich auch nichts finden.

Hat den Fall noch jemand anderes?

Vielen Dank.

Gruß Daniel
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

marvin78

Ja, in meinem Testsystem

Log:

ZitatCan't use string ("generated/blank") as an ARRAY ref while "strict refs" in use at FHEM/Meta.pm line 1146.

sledge

Zitat von: dancatt am 11 März 2019, 14:35:22


Hat den Fall noch jemand anderes?

Hier auch - mit der gleichen Fehlermeldung im Log

PERL WARNING: Use of uninitialized value in string eq at FHEM/Meta.pm line 1126.
Can't use string ("generated/blank") as an ARRAY ref while "strict refs" in use at FHEM/Meta.pm line 1146.


FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

Loredo

#8
Da gab es wohl noch einen Tippfehler der nur auffällt, wenn man Module verwendet, über die keine Versionsnummer extrahiert werden konnte (kommt bei mir offenbar weder in PROD noch DEV vor). Dafür habe ich einen kleinen Fix eingecheckt:
https://svn.fhem.de/trac/changeset/18860/
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Ein wenig Detailarbeit - habe die Screenshots oben aktualisiert. Die korrekte Generierung des Datenfelds "Community Support" auf Grundlage der MAINTAINER.txt fehlt aktuell noch. Ansonsten ist der "Read-only" Modus nun glaube ich fast fertig :-)
Was auch noch kommt sind die nicht-Perl Abhängigkeiten, allen voran die Node.js Abhängigkeiten für alexa und Co.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

#10
Mal noch ein Ausblick auf den Installations bzw. Recovery Prozess, wenn man FHEM auf einem neuen Server in Betrieb nehmen will:

Angedacht ist, dass man FHEM in einem Installations-Modus startet, bei dem der FHEM Installer dann ausgeführt werden kann.
Diesen abgespeckten Modus kann man auch jetzt schon haben - auch wenn der Installer natürlich derzeit noch nichts anderes kann als auch im "Betriebsmodus".
Dafür kann man eine Datei /opt/fhem/fhem.cfg.install mit folgendem Inhalt anlegen:


attr global userattr cmdIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride
attr global logfile ./log/installer-%Y-%m-%d.log
attr global modpath .
attr global motd none
attr global title { return 'FHEM '.version->parse( FHEM::Meta::Get('global','version') )->normal . ' Installer' }
attr global verbose 3

define WEBINSTALL FHEMWEB 8083 global
attr WEBINSTALL defaultRoom FHEM Installer
attr WEBINSTALL hiddenroom Unsorted,Everything,Commandref,style,Edit files,Select style,Logfile,Remote doc,Event monitor,FHEM Installer,save
attr WEBINSTALL menuEntries Close Installer,cmd=shutdown,,,📖 Installation<br>& Setup Guide,https://wiki.fhem.de/wiki/FHEM_Installation
attr WEBINSTALL webname fhemInstall

define telnetInstall telnet 7072
attr telnetInstall comment Text access to FHEM Installer - only connections from localhost are allowed
attr telnetInstall prompt fhem-installer

define fhemInstaller Installer
attr fhemInstaller alias FHEM Installer Status
attr fhemInstaller devStateIcon fhem.updates.available:security@red:outdated fhem.is.up.to.date:security@green:outdated .*fhem.outdated.*in.progress:system_fhem_reboot@orange .*in.progress:system_fhem_update@orange warning.*:message_attention@orange error.*:message_attention@red
attr fhemInstaller group FHEM Installer
attr fhemInstaller icon system_fhem

attr fhemInstaller installerMode installattr fhemInstaller room FHEM Installer


Wenn man FHEM dann ähnlich wie den Demo Modus mit "cd /opt/fhem; perl fhem.pl fhem.cfg.install" startet, dann kann man auf den Port 8083 zugreifen und den Installer ausführen. Soweit, so eindruckvoll :-)
(naja, immerhin ist außer fhem.pl, FHEMWEB, telnet und 98_Installer nichts geladen und man kann trotzdem Infos über alles andere sehen, auch wenn ein Modul sich derzeit gar nicht ausführen ließe... ;-)).
Natürlich wünsche ich mir, dass eine solche fhem.cfg.install dann auch mit FHEM ausgeliefert wird - ich habe Rudi aber noch nicht gefragt, ob ich das dann auch machen darf. Derzeit gibts ja noch nicht viel zu erleben, daher...

Im nächsten Schritt soll der Installer nun die in fhem.cfg definierten Module auslesen und dann in einer Gesamtübersicht zeigen, ob all diese Module funktionieren würden, wenn man FHEM mit dieser Konfiguration starten würde. Im übernächsten Schritt soll der Installer auch anbieten die fehlenden Module zu installieren und abermals zu prüfen. Ziel soll dann sein, dass man auf "Installation beenden" klickt und der FHEM Installer sich beendet. Man soll dann FHEM mit der fhem.cfg starten und alles läuft wie es soll, auch bei bestehenden komplexeren FHEM Installationen. Ich stelle mir vor, dass entweder fhem.pl oder das Startscript des Betriebssystems, welches FHEM startet, dann auch erkennen kann, ob eine initiale Installation/Prüfung erfolgreich ausgeführt wurde und dann automatisch von der fhem.cfg.install auf die fhem.cfg wechselt. Sollte alles machbar sein.
Nicht berücksichtigt ist derzeit configDB - ich kenne das alles nicht und es ist mit zu viel das von Beginn an mit einzubauen. Sicherlich gibt es da Wege, aber einfacher ist das ganze erstmal ohne.

Über den Telnet Zugang soll das ganze auch scriptbar sein. Ziel ist dabei dann, dass man ein FHEM Docker Image haben kann, welches nur eine sehr rudimentäre Systemumgebung direkt mitbringt und beim ersten Start des Containers dann automatisch die fehlenden Pakete, die für die mitgebrachte fhem.cfg notwendig ist, installiert.

Als letzter Puzzlestein fehlt dann noch, dass bei einem "define" von neuen Devices, deren Modul das erste Mal verwendet wird, ebenfalls ein solcher Laufzeitcheck erfolgt und dann angeboten wird, die Abhängigkeiten automatisiert aufzulösen, damit anschließend dann das Gerät auch angelegt und gestartet werden kann. Hier ist noch nicht ganz klar, welche Änderungen ein Modulautor dann an seinem Modul dann dafür machen muss (oder nicht) oder ob gar Änderungen an der zentralen FHEM Datei 'fhem.pl' nötig sind. First things first... ;-)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Timmäää

Hi Loredo,

ich habe das Modul installiert und schaue mir die laufenden Arbeiten täglich an.
Dein Ausblick und deine Ideen klingen sehr sehr gut und professionalisieren FHEM deutlich.

Vielen vielen Dank dafür bereits!

Ich bin gespannt und bewundere deine Arbeit,
Tim

Loredo

#12
Man sieht leider immer nicht so viel an der Oberfläche, wenn sich was tut - aber es tut sich eine ganze Menge :-)


Sichtbar ist mit dem gerade eingecheckten Update nun, dass auch außerhalb von FHEM gepflegte Module supportet werden.
Als Beispiel habe ich mal einen Screenshot vom DockerImageInfo Modul angehängt. Das Modul wird komplett außerhalb von FHEM Core entwickelt wird.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

#13
Guten Morgen,

mit dem heutigen Update erhält der Installer eine Art FHEM Suchmaschine.

Modulautoren können ihre Module verschlagworten (Keywords) und es werden auch einige Schlagworte automatisch auf Basis der vorhandenen Daten generiert (z.B. Support Forum Name). Dadurch gibt es eine ganze Reihe von Möglichkeiten sich in der hohen Anzahl von FHEM Modulen zurecht zu finden, ohne dass man in der CommandRef eine Volltextsuche über den Browser machen muss.
Die Schlagworte/Keywords (Neudeutsch: Tags) werden in der Modulübersicht angezeigt und können angeklickt werden. Man kann dadurch visuell im Browser durch die FHEM Modullandschaft navigieren.
Die Suche findet auch Device Namen, Modul Namen und Maintainer Namen.

Eine komplizierte Filtersuche so wie beim list-Befehl gibt es nicht, für das einfache auffinden von Modulen und Devices reicht das so und wer nach Readings, Attributen und INTERNALs eines Devices suchen möchte, der sollte weiterhin den list-Befehl verwenden.

Ich überlege noch, ob man noch einen FHEM-Command als Alias anlegt, so dass man auch in der FHEM Kommandozeile oben mit "search" schnell etwas suchen kann. Den Google Suchmaschinen Style einfach nur mit einem Suchwort loszulegen wäre natürlich bequem, ich bin aber nicht sicher, ob Rudi so einen "Fallback" zu einem Standard Befehl, wenn kein anderer gefunden wird, haben wollen würde.




EDIT:
Ein Bug hat noch dazu geführt, dass die Update Daten nicht richtig ausgewertet wurden und deshalb erscheinen alle Module als "local" bzw. es fehlen die besagten Tags aus der Forum Zuordnung. Ein Update von Meta.pm habe ich gerade eingecheckt, wer möchte kann es vorab aus dem SVN laden, ansonsten bis morgen warten.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Esjay

Guten Morgen Loredo,
das ist wirklich eine tolle Geschichte, welche du hier aufbaust. Ich bin am Wochenende mit meiner Installation von einem PI3 auf einen Nuc umgezogen und lasse fhem nun unter Proxmox in einem LXC laufen.
Gerade was Abhängigkeiten angeht ist die Installation schon sehr aufwendig, und unübersichtlich, da man sich viele Informationen zusammensuchen muss. Unter Abhängigkeiten verstehe ich die Perl Module, welche per apt oder cpan installiert werden müssen. Falls mein wording hier falsch ist,sry.

Wenn ich es richtig verstehe kann der Nutzer, in Zukunft, sich durch eine Drop-Down Liste klicken, und sich dann die Abhängigkeiten zum gewählten Modul installieren lassen.
Mein erster Gedanke ging dahin, ob es nicht möglich wäre einfach alle benötigten Abhängigkeiten auf einen Schlag installieren zu lassen. Dann müsste man bei einem Systemwechsel wirklich nur einmal den installer laufen lassen, und könnte dann sein Backup reinjagen. Das spricht zwar nicht gerade für ein schlankes System , wäre aber sozusagen das "All in one" Paket.
Oder etwas nach dem Motto --> "Ich klicke an welche Module ich nutze", und mit einem Klick werden die Abhängigkeiten installiert.

Just my two cents

Grüße