#1 objektorientiertes Parametrieren ?
Verfasst: Mo 13. Sep 2004, 00:27
Etwas Theorie vorweg:
Da man die LCN-Module (noch?) nicht richtig programmieren kann, wie wäre es dann wenigstens mit einer "objektorientieren Parametrierung" ? Ein Prinzip der objektorientierten Programmierung ist ja, das nur jedes Objekt selber über seine Internas Bescheid wissen soll und von aussen (von anderen Objekten) nur über wohl definierte Interfaces (Methoden/Funktionen) angesprochen wird. Auf LCN übertrage ich das so, daß jedes Busmodul (UPP, SH, LU, ..) nur selber weiss, ob und wie es seine beiden Ausgänge nutzt und ob Relais (und welche Verbraucher/Aktoren) angeschlossen sind. (Gleiches für Sensoren ...)
Andererseits sollten alle Module (Objekte) bestimmte Funktionen (Methoden) ausführen können oder sie zumindest verstehen. Ich denke dabei an Funktionen/Zustände" wie "Alles ausschalten", "Es ist Nacht/dunkel" / "Es ist Tag/hell", "Es ist niemand zu Hause" / "Es ist jemand zu Hause" usw. Bestimmte, spezielle Funktionen/Zutände sind vielleicht nur für eine Teilmenge (eine Teilklasse) von Modulen relevant. "Es ist sehr windig" oder "die Sonne scheint in die Ostfenster / Südfenster / Westfenster".interessiert wahrscheinlich nur Module mit Rolladen, Jalousien oder Markisenanschluss. Eine gewisse Art von Objektverwandschaft (Objekt-vererbung kann man das wohl noch nicht nennen) haben LCN-Module durch die LCN-Gruppenbildung. Diese erlaubt sogar eine "multiple Verwandschaft", da ein Modul mehreren Gruppen angehören kann und somit dann jeweils deren gemeisame Funktionen unterstützen sollte.
Der Interfaceumfang eines Moduls besteht im wesentlichen aus den verschiedenen Tastenaufrufen. Einige werden durch Bewohner direkt ausgelöst (Taste A1-A8 kurz/lang/los) oder per Infrarot (A,B oder C Tasten) oder sonstige Sensoren/Ereignisse (B, C, D). Die Module untereinander können ebenfalls diese Funktionen/Methoden (Tasten) aufrufen. (Man könnte Kurz,Lang und Los als Parameter zu einem Funktions/Methoden-aufruf ansehen oder eben als 3 unterschiedliche Funktionen/Methoden.)
Dann gibt es wohl noch einen Haufen von Status- und Programmierfunktionen, die die LCN-Module verstehen, aber die nicht alle öffentlich dokumentiert sind und meist auch nicht "parametriert" werden können. (Ein Beispiel wäre sonst: "Modul X, sende mir bitte Deinen aktuellen Temperaturmesswert"). Ein bischen Rechen-/Regel-werte verschicken, das geht anscheinend schon.
Da die Tastenfelder A, B,C viel von anderen Sachen benutzt werden, kann man am ehesten im D-Tastenfeld eigene Funktionen/Methoden definieren, denn es gibt leider noch keine weiteren freien Tasten, die man mit "Sende Taste ,,," aufrufen kann.
Praktische Frage:
Gibt es Empfehlungen oder Konventionen, nach der man die D-Tasten mit bestimmten allgemeinen Funktionen belegt. (Z.B. Taste "D4 Kurz" für die Funktion "Alles ausschalten" ? Jedes Modul (in der Gruppe) muss dann bei "D4-Kurz" intern hinterlegen, was es denn alles bei sich selbst "ausschalten" will.
Theoretische Hoffnung:
Wenn man dieses objektorientierte Prinzip bei LCN durchhalten möchte, brauchte man für die vielleicht praktisch vorkommenden 20-40 allgemeinen Funktionen schon je eine eigene Tastenfunktion. Dazu noch die vielen speziellen Funktionen, die bestimmte Module (z.B. Rolladen) noch zusätzlich verstehen können sollen. Da reichen dann die A-D Tastentabelle auch nicht mehr aus und am liebsten möchte ich die Funktionen/Methoden auch mit Ihrer Bedeutung benennen können = also Funktion "Alles ausschalten" statt "D4 kurz". Allein für diese Zwecke könnte man schon mal 100 benambare Tasten/Funktionen/Methoden in LCN gebrauchen und so auch eine bessere Programm-Übersicht behalten statt der festen Kurznamen, die heute aus Platzmangel sicher auch mal in anderen Modulen mit anderer Bedeutung belegt werden müssen. (Naja, solche Programmierfreiheiten brauchten dann auch einen Compiler oder Interpreter).
---
Puuhhhh - hat wirklich jemand bis hierher gelesen ? = Danke
Da man die LCN-Module (noch?) nicht richtig programmieren kann, wie wäre es dann wenigstens mit einer "objektorientieren Parametrierung" ? Ein Prinzip der objektorientierten Programmierung ist ja, das nur jedes Objekt selber über seine Internas Bescheid wissen soll und von aussen (von anderen Objekten) nur über wohl definierte Interfaces (Methoden/Funktionen) angesprochen wird. Auf LCN übertrage ich das so, daß jedes Busmodul (UPP, SH, LU, ..) nur selber weiss, ob und wie es seine beiden Ausgänge nutzt und ob Relais (und welche Verbraucher/Aktoren) angeschlossen sind. (Gleiches für Sensoren ...)
Andererseits sollten alle Module (Objekte) bestimmte Funktionen (Methoden) ausführen können oder sie zumindest verstehen. Ich denke dabei an Funktionen/Zustände" wie "Alles ausschalten", "Es ist Nacht/dunkel" / "Es ist Tag/hell", "Es ist niemand zu Hause" / "Es ist jemand zu Hause" usw. Bestimmte, spezielle Funktionen/Zutände sind vielleicht nur für eine Teilmenge (eine Teilklasse) von Modulen relevant. "Es ist sehr windig" oder "die Sonne scheint in die Ostfenster / Südfenster / Westfenster".interessiert wahrscheinlich nur Module mit Rolladen, Jalousien oder Markisenanschluss. Eine gewisse Art von Objektverwandschaft (Objekt-vererbung kann man das wohl noch nicht nennen) haben LCN-Module durch die LCN-Gruppenbildung. Diese erlaubt sogar eine "multiple Verwandschaft", da ein Modul mehreren Gruppen angehören kann und somit dann jeweils deren gemeisame Funktionen unterstützen sollte.
Der Interfaceumfang eines Moduls besteht im wesentlichen aus den verschiedenen Tastenaufrufen. Einige werden durch Bewohner direkt ausgelöst (Taste A1-A8 kurz/lang/los) oder per Infrarot (A,B oder C Tasten) oder sonstige Sensoren/Ereignisse (B, C, D). Die Module untereinander können ebenfalls diese Funktionen/Methoden (Tasten) aufrufen. (Man könnte Kurz,Lang und Los als Parameter zu einem Funktions/Methoden-aufruf ansehen oder eben als 3 unterschiedliche Funktionen/Methoden.)
Dann gibt es wohl noch einen Haufen von Status- und Programmierfunktionen, die die LCN-Module verstehen, aber die nicht alle öffentlich dokumentiert sind und meist auch nicht "parametriert" werden können. (Ein Beispiel wäre sonst: "Modul X, sende mir bitte Deinen aktuellen Temperaturmesswert"). Ein bischen Rechen-/Regel-werte verschicken, das geht anscheinend schon.
Da die Tastenfelder A, B,C viel von anderen Sachen benutzt werden, kann man am ehesten im D-Tastenfeld eigene Funktionen/Methoden definieren, denn es gibt leider noch keine weiteren freien Tasten, die man mit "Sende Taste ,,," aufrufen kann.
Praktische Frage:
Gibt es Empfehlungen oder Konventionen, nach der man die D-Tasten mit bestimmten allgemeinen Funktionen belegt. (Z.B. Taste "D4 Kurz" für die Funktion "Alles ausschalten" ? Jedes Modul (in der Gruppe) muss dann bei "D4-Kurz" intern hinterlegen, was es denn alles bei sich selbst "ausschalten" will.
Theoretische Hoffnung:
Wenn man dieses objektorientierte Prinzip bei LCN durchhalten möchte, brauchte man für die vielleicht praktisch vorkommenden 20-40 allgemeinen Funktionen schon je eine eigene Tastenfunktion. Dazu noch die vielen speziellen Funktionen, die bestimmte Module (z.B. Rolladen) noch zusätzlich verstehen können sollen. Da reichen dann die A-D Tastentabelle auch nicht mehr aus und am liebsten möchte ich die Funktionen/Methoden auch mit Ihrer Bedeutung benennen können = also Funktion "Alles ausschalten" statt "D4 kurz". Allein für diese Zwecke könnte man schon mal 100 benambare Tasten/Funktionen/Methoden in LCN gebrauchen und so auch eine bessere Programm-Übersicht behalten statt der festen Kurznamen, die heute aus Platzmangel sicher auch mal in anderen Modulen mit anderer Bedeutung belegt werden müssen. (Naja, solche Programmierfreiheiten brauchten dann auch einen Compiler oder Interpreter).
---
Puuhhhh - hat wirklich jemand bis hierher gelesen ? = Danke