+ Antworten
Seite 1 von 4 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 36

Thema: IPSLibrary

  1. #1
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard IPSLibrary

    Ziel der Library ist es gemeinsam eine solide Sammlung an Scripts zu schaffen, die
    • von mehreren Usern gewartet werden können
    • eine möglichst große Auswahl an Hardware unterstützt
    • gut dokumentiert sind,
    • durch Installation Scripts auch von weniger versierten Usern installiert werden können
    • Möglichkeiten zur persönlichen Konfiguration und Erweiterung bieten (Motto: man muss nicht jede Code Zeile verstehen, man muss nur wissen wie man das jeweilige Module benutzt)
    • eine bequeme Möglichkeit zum Update auf eine aktuellere Version bieten
    • einen modularen Aufbau haben, sodass sie selektiv installiert werden können mit der Möglichkeit sie untereinander zu verlinken
    • Entwicklern aus den verschiedensten Gebieten (Web/HTML, PHP, Hardware) die Möglichkeit bietet gemeinsam an einem Projekt zu arbeiten mit der Möglichkeit sich permanent zu synchronisieren.


    Diskussionen und Kommentare zur IPSLibrary bitte hier.

    Aufbau der Library:



    Vorteile
    • Weniger Aufwand bei Versions Upgrades von IP-Symcon. Durch die gemeinsame Code Basis können Versions Sprünge von IP-Symcon leichter und schneller bewerkstelligt werden.
    • Scripts können von mehreren Personen gewartet werden, die Abhängigkeit von Einzelpersonen wird dadurch geringer.
    • Direktes Profitieren von Weiterentwicklungen der Gruppe


    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	IPSModulLibrary_Overview.png 
Hits:	14265 
Größe:	108.1 KB 
ID:	15376
    Geändert von Brownson (04.11.12 um 15:37 Uhr) Grund: Link zum Diskussions-Thread aktualisiert
    Gruß
    Andreas

  2. #2
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

  3. #3
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard Verzeichnis Struktur der IPSLibrary

    Die IPSLibrary enthält folgende Verzeichnisse:
    • app, enthält alle Module Skripte. Das app Verzeichnis untergliedert sich noch weiter in:
      • core -beinhaltet alle Scripts, die für die core Funktionalität nötig sind
      • modules - beinhaltet alle Scripts für Module der IPSLibrary
      • hardware - beinhalted Scripte zur Anbindung von diverser Hardware
    • config, enthält alle Konfigurations Dateien (INI Files, PHP Dateien in denen Konfigurationen abgelegt sind, PHP Dateien mit Callback Funktionen). Der Ordner hat die gleiche Struktur wie der app Folder und ist für die Konfiguration der Module und persönliche Anpassungen vorgesehen.
    • install, hier liegen alle Scripts, die für die Installation von Modulen benötigt werden.
    • webfront, enthält die Dateien, die normalerweise im IP-Symcon Ordner /webfront/user/ liegen.
    • tests, ist für automatisierte Tests der Library vorgesehen.


    Neben dem IPSLibrary Verzeichnis gibt es noch weitere Verzeichnisse:
    • tools, ist für externe Tools (diverse Helper Programme, alternative Clients, usw.) reserviert. Unterteilt sich in erster Linie in die verwendete Programmiersprache und dann noch weiter in src und bin.
    • extensions, Ablageort für IP-Symcon Module Erweiterungen (DLLs). Unterteilt sich ebenfalls in src und bin.




    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	IPSLibrary_FileStructure.png 
Hits:	13962 
Größe:	38.7 KB 
ID:	15377
    Geändert von Brownson (10.11.12 um 00:13 Uhr) Grund: Anpassung Attachment
    Gruß
    Andreas

  4. #4
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard IP-Symcon Struktur der IPSLibrary

    Die IPS Struktur ist im Root in folgende 3 Teile gegliedert:
    • Visualization, hier liegt die komplette Visualisierung. Dieser Zweig besteht de facto nur aus Links, Kategorien und Dummy Instanzen (zur Gruppierung). Die Links verweisen zu Variablen im Programm Ordner bzw. direkt in die Hardware Kategorie falls keine Programm Logik notwendig ist.
    • Programm, in diesem Ordner befindet sich die komplette Logik zur Steuerung der Module. Die Library ist in einem eigenem Ordner IPSLibrary beheimatet, um sie von persönlichen Programmen zu trennen. Dieser Zweig besteht de facto nur aus Kategorien, Skripten, Variablen und einigen Dummy Instanzen zur Gruppierung.
    • Hardware, Location für alle Hardware gebundenen Instanzen, die zur Kommunikation mit externen System benötigt werden (MediaPlayer, Homematic Devices, Register Variablen, ...).




    Visualization:
    Die Visualisierung unterteilt sich noch weiter in die einzelnen Frontents:
    • WebFront
    • Mobile
    • EDIP
    • Dashboard


    Programm:
    Die IPSLibrary unterteilt sich hier in folgende Hauptbereiche:
    • app, hier sind alle Programm Module abgelegt. Der Bereich unterteilt sich noch weiter in core (beinhaltet alle Kern Module, die Voraussetzung für die Installation fast aller anderer Module sind) , modules (beinhaltet alle anderen und in hardware (beinhaltet Skripte, die Teil der IPSLibrary sind und zur direkten Ansteuerung von Hardware benötig werden). Module, die optional installiert werden können).
    • config, Ablageort für Konfigurations Dateien. Ist für persönliche Anpassungen vorgesehen und wird von der Update Prozedur NICHT überschrieben.
    • data, beinhaltet die Daten der Module (Variablen). Wird von den Installations Scripts generiert, darf ebenfalls nicht manuell verändert werden, da es bei einem Update wieder überschrieben wird.
    • install, beinhaltet alles was zur autom. Installation bzw. für das Update bestehender Module benötigt wird.


    Hardware:
    Die genaue Unterteilung bleibt jedem letztendlich selber überlassen, für die Module der IPSLibrary erfolgt aber eine Aufteilung nach Art der Kommunikations bzw. nach Hersteller.
    • Homematic
    • 1-Wire
    • IPS868
    • MediaPlayer
    • Onkyo
    • EDIP


    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	IPSLibrary_IPSStructure.png 
Hits:	11217 
Größe:	61.2 KB 
ID:	19075
    Geändert von Brownson (10.11.12 um 00:37 Uhr)
    Gruß
    Andreas

  5. #5
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard Verwendete Konzepte

    Folgende Konzepte wurden bei der Implementierung der IPSLibrary …

    • IPSModuleManager – bietet die Möglichkeit zur Installation und zum Update von Modulen
    • IPSVersionHandler – bietet Möglichkeiten zur Versionskontrolle installierter Module
    • IPSComponent – stellt eine einheitliche Schnittstelle zwischen der Hardware und den verwendeten Modulen her
    • IPSMessageHandler – kümmert sich um die aktive Rückmeldung der Hardware und verteilt die Messages (Events) zu den diversen Modulen
    Gruß
    Andreas

  6. #6
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard IPSComponent

    IPSComponent
    IPSComponent bildet einen abstraction Layer zur Hardware, dieser stellt für alle Module ein einheitliches Interface zu den unterschiedlichen Hardware Komponenten her.

    Zur Zeit sind folgende Basis Komponenten vorgesehen:
    • IPSComponentShutter – Ansteuerung von Rollos,Markisen,Jalousien…
    • IPSComponentSwitch – Ansteuerung Schalter
    • IPSComponentDimmer – Ansteuerung Dimmer
    • IPSComponentRGB – Ansteuerung RGB Leds
    • IPSComponentPlayer – Ansteuerung von MP3/Webradio Playern
    • IPSComponentAVControl – Ansteuerung Audio/Video Geräten


    Von diesen Basis Klassen gibt es weitere Ableitungen, die die jeweilige Hardware Anbindung implementieren, hier eine Liste der Implementierungen für die Shutter Component:

    • IPSComponentShutter_Homematic
    • IPSComponentShutter_MoellerEaton
    • IPSComponentShutter_LCN
    • IPSComponentShutter_1Wire
    • IPSComponentShutter_FS20
    • IPSComponentShutter_Enocean
    • IPSComponentShutter_IPSShutterControl


    IPSModule
    IPSModule bildet die Schnittstelle zu den Modulen, um die Rückmeldung der Hardware Komponenten zu den Modulen zu realisieren. So gibt es zB zu der Komponente IPSComponentPlayer (realisiert durch die Klassen IPSComponentPlayer_Mediaplayer, IPSComponentPlayer_Sonos und IPSComponentPlayer_Squeezebox) die analoge Klasse IPSModulePlayer (implementiert durch die Klasse IPSModulePlayer_NetPlayer), die sich um die Rückmeldung der Player kümmert.



    Erzeugen eines Objektes:
    In der Basis Klasse IPSComponent (von dieser erben alle anderen Klassen) stehen einige Funktionen zur Verfügung, die es ermöglichen Objekte dynamisch anhand definierter Regeln zu erzeugen:

    Wichtig
    IPSComponents haben keine Persistenz (Variablen) sondern es handelt sich um Scripte (Klassen), die eine definierte Schnittstelle zwischen der Hardware und den Modulen bereitstellt.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	IPSLibrary_IPSComponentShutter.dot.png 
Hits:	573 
Größe:	28.9 KB 
ID:	15379   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	IPSLibrary_IPSComponentPlayer.png 
Hits:	13213 
Größe:	1.3 KB 
ID:	15380  
    Gruß
    Andreas

  7. #7
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard IPSMessageHandler

    Dieses core Modul ermöglicht in der implementierten Basis Version die aktive Rückmeldung der Hardware zu den Modulen.

    Im Konfigurations File des MessageHandlers kann man eine VariableID definieren und jeweils eine Source und Destination Komponente. Dadurch erfolgt die Rückmeldung zu den Modulen auf die gleiche Weise wie die Ansteuerung und es kann in der jeweiligen Hardware Komponente die Umrechnung auf den Wertebereich der Schnittstelle erfolgen (zum Beispiel IPSComponentAVControl.SetVolume(0 – 100), IPSComponentAVControl.SetSource(0-x).

    Beispiel Konfiguration:
    Code:
    $eventConfiguration = array(
      39520 => array('OnChange','IPSComponentPlayer_MediaPlayer,24582','IPSModulePlayer_NetPlayer',),
      );
    Dieser Eintrag in der Datei IPSMessageHandler_Configuration.inc.php veranlasst den Installer des MessageHandlers ein Event auf die Variable 52123 (aktueller Titel des Mediaplayers) anzulegen. Bei jeder Variablen Änderung wird nun der MessageHandler aufgerufen, erzeugt 2 Objekte aus den angegeben Parametern und ruft auf dem ersten Objekt die Methode HandleEvent mit den Parametern Variable, Value und IPSModule auf.
    Später ist auch denkbar diese Konfiguration und Events automatisch anzulegen, sobald die entsprechende Hardware über ein Module einmal angesteuert wurde.


    Auf diese Art ist es zum Beispiel möglich jede Hardware, die einen IPSComponentPlayer implementiert mit jedem Modul, das einen IPSModulePlayer implementiert kommunizieren zu lassen.

    oder mit der Komponente IPSComponentSwitch in einem Modul etwas zu Schalten ohne irgend eine Rücksicht auf die Hardware zu nehmen

    oder Beschattungen unabhängig von einem Hersteller anzusteuern

    oder einen Helligkeits Sensor einzubinden ohne Rücksicht auf den Hersteller nehmen zu müssen …
    Geändert von Brownson (26.03.12 um 22:14 Uhr)
    Gruß
    Andreas

  8. #8
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard Version Handling

    Aufbau der Modul Versions Nummern:

    IPSMajorVersion.IPSMinorVersion.ModuleVersion.Modu leState

    • IPSMajorVersion und IPSMinorVersion bezeichnen die IPS Version, die für die aktuelle Entwicklung bzw. Erweiterung des Modules verwendet wurde. Diese Nummer kann im Prinzip frei gewählt werden, eine Empfehlung ist aber die Modul Nummer so zu wählen, dass es die erforderliche IP-Symcon Version für eine Installation wiederspiegelt.
    • ModuleVersion ist die eigentliche Versionsnummer des Modules.
    • ModuleState beschreibt den Status des Modules (Beta, Released, ...)


    Beispiele:
    IPSComponent 2.50.9
    IPSLogger 2.50.1
    NetPlayer 2.50.3.Beta


    Installations States:
    Alle Module durchlaufen folgende Installations Zustände:
    • Loading
    • Loaded
    • Installing
    • OK


    Version Checks
    Vor der Installation werden die Versionen aller benötigten Komponenten überprüft, im Minimum sind dies:
    • die installierte IPS Version wird überprüft, die für die Installation des Modules im mindesten benötigt wird
    • Version des IPSModuleManager wird überprüft
    • Core Module der Library werden überprüft (IPSComponent, IPSLogger)


    Eine Beschreibung der geforderten Version findet man in der Doku des jeweiligen Modules.
    Geändert von Brownson (27.11.12 um 23:05 Uhr) Grund: Anpassung der Versions Beschreibung
    Gruß
    Andreas

  9. #9
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard IPSModuleManager

    Der IPSModuleManager bildet das Herzstück des IPSLibrary Installers. Er beinhaltet diverse Konfigurations Möglichkeiten, die man in der Datei IPSModuleManager.ini verändern kann (Ablagerort: IPSLibrary\install\InitializationFile\).



    Der IPSModuleManager supportet die folgenden Möglichkeiten:
    • Initialer Download und Installation neuer Module
    • Update auf neuere Version von Modulen
    • Versionsverwaltung für Module
    • Backup Handler
    • Konfigurations Handler
    • Log Handler


    Initialer Download und Updates
    Siehe Beschreibung weiter unten.

    Versions Verwaltung
    Der IPSModuleManager beinhaltet eine interne Versionsverwaltung, der die aktuelle IPS Version überprüft und auch alle Module überprüft, die Voraussetzung des aktuellen Modules sind.

    Konfigurations Handler
    Der Konfigurations Handler bietet die Möglichkeit Installation Parameter (wie zum Beispiel WebFront Konfigurator ID, persönliche Icons, Namen usw.) in einem Initialisierungs File abzulegen und so die Installation der Module auf die persönlichen Bedürfnisse abzustimmen.

    Backup Handler
    Vor dem Download der neuen Skripte wird auch automatisch ein Backup der Skripte des betroffen Modules gemacht.
    Ablageort für Backups ist standardmäßig auf /backups/ gesetzt und kann über den Konfigurations Parameter „BackupDirectory“ jederzeit verändert werden. Das Backup des jeweiligen Update Vorgangs wird dann in einem Folder IPSLibrary_YYYY-MM-DD_HH:MI abgelegt.

    Log Handler
    Der LogHandler legt bei jedem Update oder Installations Vorgang ein Protokoll File an, wo man die einzelnen Schritte des Installations Ablaufes nachvollziehen kann.
    Standardmäßig ist das Output Verzeichnis auf „logs“ gesetzt, kann aber jederzeit über den Parameter „LogDirectory“ verändert werden.
    Output erfolgt in eine Datei mit dem Namen IPSModuleManager_YYYY-MM-DD_HHMI.log

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	IPSModuleManager_Overview.png 
Hits:	13823 
Größe:	55.5 KB 
ID:	15381
    Geändert von Brownson (04.11.12 um 15:40 Uhr) Grund: Anzeige Attachment angepasst
    Gruß
    Andreas

  10. #10
    Registriert seit
    Aug 2010
    Ort
    Österreich (Korneuburg)
    Beiträge
    4,110

    Standard IPSModuleManager – Konfiguration:

    Alle Konfigurations Einstellung, die für Installation von Modulen benötigt werden, sind in Initialisierungs Files abgelegt. Ablageort für diese Files ist „IPSLibray\install\InitializationFiles\“, die Files werden beim initialen Download des Modules aus den Files im „Default“ Verzeichnis generiert und bei späteren Updates nicht mehr verändert.
    Bei Problemen kann das File wieder mit der Version im Default Verzeichnis repariert werden. Im Verzeichnis „Examples“ finden sich noch weitere Files, die Beispiele für die jeweilige Konfiguration beinhalten.

    Eine kurze Beschreibung des jeden Parameters, ist im jeweiligen Initialisierungs File zu finden.

    Allgemeine Parameter sind im Konfigurations File des Module Managers abgelegt (Backup Directory, Logging Directory), spezielle Module Parameter sind dann im jeweiligen Ini File des Modules abgelegt.

    Teilweise werden Parameter auch in beiden Files gesucht. Zum Beispiel werden die diversen Parameter zur Installation des WebFronts (Enabled, Root, WFCId) zuerst im jeweiligen Module Ini File gesucht (zB IPSLogger.ini), ist es dort nicht definiert, wird im File IPSModuleManager.ini gesucht.

    Beispiel:
    Code:
    [WFC10]
    Enabled=true
    Path=Visualization.WebFront.Entertainment
    ID=
    TabName=
    TabIcon=Speaker
    TabOrder=20
    
    [Mobile]
    Enabled=true
    Path=Visualization.Mobile
    Name=Entertainment
    Order=20
    Icon=Speaker
    [] markiert immer eine Gruppe von Einstellungen, In der Gruppe “WFC10” werden die Einstellungen gesucht, die für die WebFront Installation benötigt werden. (WFC10 - WebFront mit 10 Zoll Optimierung). Analog gibt es eine Gruppe „Mobile“, die für das Mobile Interface (iPhone, iPad und Android) verwendet wird.

    Beschreibung der wichtigsten Parameter:
    • „Enabled“ definiert, ob das jeweilige Interface installiert wird
    • „Path“ bestimmt den Installations Pfad in IP-Symcon
    • „ID“ bezeichnet die ID des Webfront Konfigurators der verwendet werden soll, wenn nichts angegeben wird, verwendet die Installations Prozedure den erst Besten der gefunden wird.
    • “TabName“ definiert Namen im SplitPane des WebFronts
    • “TabIcon“ definiert Icon im SplitPane des WebFronts
    • “TabOrder“ definiert Position im SplitPane des WebFronts
    • “Name“ für Mobile Frontend Installation
    • “Order“ Position Mobile Frontend
    • “Icon“ Icon für Mobile Frontend


    Hinweis:
    Mit der aktuellen Version des Modules IPSModuleManagerGUI steht eine Möglichkeit zur Verfügung, diese Einstellungen auch bequem über einen kleinen Wizard im WebFront vornehmen zu können.
    Geändert von Brownson (27.11.12 um 23:17 Uhr) Grund: Hinweis IPSModuleManagerGUI
    Gruß
    Andreas

Ähnliche Themen

  1. Diskussions Thread zur IPSLibrary
    Von Brownson im Forum IPSLibrary
    Antworten: 215
    Letzter Beitrag: 26.12.16, 12:52