Software-Architektur

Begonnen von ujaudio, 01 September 2018, 19:53:09

Vorheriges Thema - Nächstes Thema

ujaudio

Ich suche nach ein paar guten Hinweisen, wie man die FHEM-Software strukturieren sollte. Nachdem ich längere Zeit an meiner Heimautomatisierung gearbeitet habe, gibt es ein paar Stellen, wo es unübersichtlich ist. Natürlich habe ich das Attribut "room" verwendet, damit ich gleich weiß, welches Gerät wo zuzuordnen ist. Auch Funktionen sind einem Raum zugeordnet. Manchmal aber auch mehreren. Und so manches Licht wird dann doch von einigen notify/DOIF/... angesteuert und da wird es manchmal doch schwierig herauszufinden, warum es denn jetzt angeht oder nicht angeht.

Auf alle Fälle werde ich einiges umstrukturieren. Bevor ich damit anfange - ist ja doch eine größere Arbeit, außerdem sollte das System weitgehend lauffähig bleiben - würde mich interessieren, wo man da ein paar tiefer gehende Informationen bekommen kann. Vielleicht hat auch der eine oder andere von euch ein paar Tipps, was besonders clever ist und was richtig schlechte Konstrukte sind. Möglicherweise gibt es auch eine gute Information über Software-Architektur, so dass man sich auch ein wenig mit der Theorie auseinander setzen kann, bevor man alles umkrempelt.
Einen lieben Gruß
Jürgen

enno

Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

ujaudio

Naja, mit den Gerätenamen habe ich weniger Probleme.

Es geht mehr darum (Beispiel):
Der Rollladen ist im Schlafzimmer, Gerätenamen z.B. sz_rollo
Die Stellung ergibt sich aber aus ganz vielen Kriterien:
Ist jemand zu Hause?
Wie viel Uhr ist es?
Wie ist der Sonnenstand?
Wie ist die Innentemperatur?
Wie ist die Außentemperatur? usw.
Das kann man alles in eine DOIF oder notify packen - aber in welchen der vielen möglichen Räume gehört das notify hin?
Außerdem wird es immer komplizierter, dieses notify (oder DOIF) zu erstellen / zu testen.

Wenn man da immer eine gute Struktur hat, dann wird es bestimmt einfacher. Klare Schnittstellen sind ein Weiteres.
Einen lieben Gruß
Jürgen

fiedel

#3
Zu deinem Beispiel entsteht hier gerade etwas schönes Neues.

Ansonsten habe ich für mich erkannt, dass es am Informativsten ist ein möglichst übersichtliches Frontend z.B. mit Floorplan aufzubauen, bei dem so viel wie möglich auf einen Blick und an der richtigen Stelle ersichtlich und steuerbar ist. Das ist sehr intuitiv bei der Bedienung.
Die Notifys usw. habe ich alle in einem Zentralen Raum in der Gruppe "Programm". In diesem Raum ist auch sämtliches Zeugs (Cul, Aktoren, Sensoren, Wetter, also alles was man so definieren muss) in separaten Gruppen (Sensoren, Aktoren, usw.) untergebracht. Dieser Raum ist mein "FHEM- Motor". Hier mache ich auch die Weiterentwicklung und Fehlersuche. Für die Bedienung geht es dann nur um eine zentrale Floorplanseite mit kleinen Grundrissen von UG und OG mit entspr. Sensoranzeigen und Steuerelementen, sowie der Unterfloorpläne, die über Touch auf Buttons erreicht werden können (auch noch längst nicht fertig). Vermutlich würde ich das heute mit einem der modernen Frontends angehen, aber das gab es 2012 noch nicht.  ;)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

ujaudio

Zitat von: fiedel am 02 September 2018, 10:07:38
Zu deinem Beispiel entsteht hier gerade etwas schönes Neues.
Ja, das habe ich schon entdeckt, aber die nächsten Wochen habe ich keine Zeit mich damit zu beschäftigen. Da ich die ROOMMATE schon nutze, wird das interessant für mich.

Zitat von: fiedel am 02 September 2018, 10:07:38
Ansonsten habe ich für mich erkannt, dass es am Informativsten ist ein möglichst übersichtliches Frontend z.B. mit Floorplan aufzubauen, bei dem so viel wie möglich auf einen Blick und an der richtigen Stelle ersichtlich und steuerbar ist. Das ist sehr intuitiv bei der Bedienung.
Die Notifys usw. habe ich alle in einem Zentralen Raum in der Gruppe "Programm". In diesem Raum ist auch sämtliches Zeugs (Cul, Aktoren, Sensoren, Wetter, also alles was man so definieren muss) in separaten Gruppen (Sensoren, Aktoren, usw.) untergebracht. Dieser Raum ist mein "FHEM- Motor". Hier mache ich auch die Weiterentwicklung und Fehlersuche. Für die Bedienung geht es dann nur um eine zentrale Floorplanseite mit kleinen Grundrissen von UG und OG mit entspr. Sensoranzeigen und Steuerelementen, sowie der Unterfloorpläne, die über Touch auf Buttons erreicht werden können (auch noch längst nicht fertig). Vermutlich würde ich das heute mit einem der modernen Frontends angehen, aber das gab es 2012 noch nicht.  ;)
Ich unterscheide schon zwischen Programmierung (und damit auch debugging  :) ) und Bedienung. Wenn meine liebe Frau damit zurecht kommt, habe ich es richtig gemacht. Die kann zwar sehr gut mit Technik umgehen, aber das, was ich mir gedacht habe, kann sie ja gar nicht im Kopf haben. Ich bekomme von ihr sehr gute Hinweise in Bezug auf Bedienerfreundlichkeit. Ich realisiere das mit FLOORPLAN, nachdem meine Versuche mit TABLETUI nicht zielführend waren. Ich habe mich aber von Grundrissen komplett verabschiedet und habe eine Touch-Bedienoberfläche für Tablet / Smartphone erstellt.
Einen lieben Gruß
Jürgen