IPSLibrary

Derzeitige Module:

[ul]
[li]IPSLogger– Logging Handler[/li] [li]IPSComponent – Hardware Abstraktions Layer[/li] [li]IPSEDIP– Ansteuerung von eDIP Displays der Firma ASSEMBLY ELECTRONICS[/li] [li]Entertainment– Modul zur kompletten Entertainment Steuerung[/li] [li]NetPlayer– Player zum Abspielen von MP3s und WebRadios[/li] [li]IPSWatering– Bewässerungs Steuerung[/li] [li]IPSTwilight– Dämmerungsberechnung mit Visualisierung[/li] [li]IPSWeatherForcastAT– Wettervorhersage für Österreich[/li] [li]BusBahnInfo - Anzeige von Bus und Bahn Informationen[/li] [li]WithingsInfo - Einbindung von Withings Waage & Blutdruck[/li] [li]IPSWecker - Wecker und Zeitschaltuhr[/li] [li]IPSSchaltuhr - Zeitschaltuhr[/li] [li]IPSShadowing– Beschattungs Steuerung[/li] [li]Plugwise– Pugwise Energieverbrauchsmessung[/li] [li]IPSModuleManagerGUI– GUI zum Laden und Updaten von Modulen[/li] [li]IPSLight – Lichtsteuerung[/li] [li]IPSCam – Kamerasteuerung[/li] [li]AudioMax – Multiroom Steuerung von eServiceOnline[/li] [li]IPSHomematic – Anlegen und Überwachen von Homatic Komponenten[/li] [li]IPSHighcharts – Chart Visualisierung[/li] [li]IPSPowerControl – Energieverbrauchs Visualisierung [/li][/ul]

Weiters sind noch vorhanden:

[ul]
[li]IPSTools - .Net Programm zum Steuern und Abfragen diverser Windows Funktionalitäten (Bildschirmschoner starten, Mausposition abfragen, …)[/li] [li]eBusAdapter – IP-Symcon Delphi Extension zur Anbindung eines eBusAdapters[/li][/ul]

Die komplette IPSLibrary unterliegt der GPL (General Public License). Alle Source Files sollten einen kurzen Header haben, der darauf hinweist.

/**
* This file is part of the IPSLibrary.
*
* The IPSLibrary is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The IPSLibrary is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the IPSLibrary. If not, see http://www.gnu.org/licenses/gpl.txt.
*/

http://www.gnu.org/licenses/gpl.txt.

GNU General Public License

Ein Mitwirken bei der IPSLibrary ist auf vielfältige Weise möglich:

[ul]
[li]Erstellen von Konzepten für die Entwicklung neuer Module (welche Konfigurations Möglichkeiten würde ein geplantes Module benötigen, wie könnte die Visualisierungen aussehen, welche Schnittstellen bräuchte das Module, wie kann die jeweilige Hardware angesteuert werden, …).
[/li] [li]Entwicklung – Erstellen neuer Module, Erweiterung der bestehenden Module mit zusätzlichen Features,
[/li] [li]Dokumentation – Schreiben von User Dokumentation (Welche Möglichkeiten bieten die Module zur Konfiguration, wie kann man die Module untereinander verlinken, welche Dinge müssen manuell erledigt werden). Zusätzlich sind auch noch Beiträge im Wiki bzw. auch im Forum auf die man verlinken kann willkommen, wo man noch diverse Hintergrund Informationen bekommt (Hardware die man erfolgreich im Einsatz hat, Schaltpläne, Zusammenfassungen über diverse Themenbereiche der Hausautomatisierung und vieles mehr…)
[/li] [li]Testen – Testen von neuen Entwicklungen, Testen der Module nach neuen IP-Symcon Releases, Implementieren von automatisierten Tests, …
[/li] [li]Support – Hilfestellung bei Installations- oder Konfigurationsproblemen
[/li][/ul]

Um Änderungen im Code zu veröffentlichen, ist die Installation eines GIT Clients notwendig. Ein intuitiver Client wäre zum Beispiel:

Git Client - SmartGit

Vorhandene Code Repositories siehe weiter unten…

Zur Zeit gibt es das offizielle Release Repository und einige Development Repositories.

Release Repository:
IPSLibrary

5 Developer Repositories:
IPSLibrary Development Brownson
IPSLibrary Development 1007
IPSLibrary Development MCS-51
IPSLibrary Development MyFly
IPSLibrary Development Domizei

In der neuesten Version des IPSModuleManagers ist auch ein Support mehrerer Repositories implementiert.

Durch das Ausführen des BaseLoader Skriptes wird der ModuleManager aus dem Release Repository heruntergeladen, dieser beinhaltet auch eine Liste der bevorzugten Repositories (zu finden im Config Verzeichnis mit dem Namen KnownRepositories.ini).
Die GUI bietet dann jeweils das Modul mit der höchsten Versionsnummer zum Download an.

Zusätzlich oder andere Repositories kann man durch das File KnownUserRepositories.ini einbinden.

Ansicht eines Repositories im WebBrowser

Sinn und Zweck von Coding Guidelines sollten wohl allgemein bekannt sein
Programmierstil

Anbei einige Links zu PHP Projekten und deren Guidelines:
PHP Coding Standard - Regeln und Empfehlungen
PHP Coding Standard
Manual :: Coding Standards
http://www.buxaprojects.com/de/php_coding_guidelines.htm

Bitte um aktive Diskussion, welche Coding Guidelines für IPS und das IPSLibrary Projekt wohl am praktikabelsten sind, insbesondere über folgende Punkte:

[ul]
[li]File Naming Conventions
[/li] [li]Geschweifte Klammern (Allman-Stil oder nicht)
[/li] [li]Kommentare in Englisch oder Deutsch
[/li] [li]Dokumentation / Fileheader
[/li] [li]Benennung von Variablen, Funktionen
[/li] [li]Benennung von Konstanten
[/li][/ul]

Stand der Dinge
Derzeitiges Naming von Dateien:
.class.php für Dateien mit Klassen
.inc.php für Dateien, die man inkludieren kann
.ips.php für Dateien, die direkt von IPS getriggert werden (ActionScript, …)

Geschweifte Klammern werden zur Zeit im Java/Linux Stil gesetzt
Einrückungsstil

Konstanten in Großbuchstaben

Die Dokumentation unterteilt sich in folgende Kategorien

[ul]
[li]Wiki Artikel[/li] [li]Diskussions Thread im Forum[/li] [li]Source Code [/li][/ul]

Zu den meisten Modulen ist ein WIKI Artikel vorhanden, wo folgende Dinge zu finden sind:

[ul]
[li]Allgemeine Funktionsbeschreibung des Modules[/li] [li]Übersicht zur Installation und Konfiguration[/li] [li]API Beschreibung[/li] [li]Beschreibung der Callback Funktionen[/li] [li]Screenshots [/li][/ul]

Eine Übersicht über alle Wiki Artikel ist hier zu finden.

Im Diskussions Thread ist eine kurz Vorstellung des Moduls zu finden, sowie diverse Posts zu Problemlösungen und Erweiterungen.

Im SourceCode ist die „technische“ Dokumentation der Module zu finden, zur Formatierung wird Doxygen verwendet.
Details zur Konfiguration bzw. die Beschreibung der Callback Funktionen befindet sich grossteils nur im Source Code.

PHP Manual
PHP: PHP-Handbuch - Manual
PHP: Sprachreferenz - Manual

GIT
Git - Fast Version Control System
Pro Git - Table of Contents

GIT Client
Git Client - SmartGit

GIT Repository
IPSLibrary
IPSLibrary Development Brownson
IPSLibrary Development 1007

Doxygen
Doxygen
Doxygen Manual
Doxygen DocBlocks
Dokumentationswerkzeug Doxygen
Doxygen Commands

GPL
http://www.gnu.org/licenses/gpl.txt.
GNU General Public License

Als erstes stellt sich die Frage über die Art des Modules – handelt es sich um eine reine Hardware Anbindung oder um ein allgemeines Module, das eine allgemeine Aufgabe löst und mit verschiedenster Hardware kommunizieren kann.
Je nach dem ist die Platzierung in der IPSLibrary zu wählen, eventuell sollte man auch über eine Aufteilung in Hardware und Module Teil nachdenken.

Vor der Entwicklung/Implementierung eines neuen Modules wäre eine aktive Diskussion hier im Forum sicher wünschenswert, um möglichst viele Anforderungen bereits im Design zu berücksichtigen.
Anbindung neuer Hardware sollte möglichst über IPSComponent/IPSMessageHandler erfolgen (siehe auch Post weiter oben).

Um neue Hardware in bestehende Module zu integrieren, sollte es in Zukunft reichen, eine IPSComponent Klasse der jeweiligen Hardware zu implementieren

Detailierter Installations Ablauf:

Module gliedern sich in einen Installations- und einen Application Teil. Der Applikations Teil gliedert sich wiederum in Konfiguration, Daten und die eigenliche Programm Logik (das spiegelt sich auch in der verwendeten Struktur wieder.

Die Installation wird mit dem IPSModuleManager gesteuert, dieser benötigt für die Installation eines Modules 3 Files:

[ul]
[li]DownloadList File, beinhaltet alle Dateien, die zur Installation eines Modules nötig sind.[/li] [li]Installations INI File, beinhaltet alle Parameter, die bei der Installation angepasst werden können (WebFront, Mobile …).[/li] [li]Installations Script File, dieses Script erledigt die eigentliche Installation (Anlegen der Variablen, Events, …). [/li][/ul]

Nach dem Starten von LoadModule wird zuerst eine aktuelle Version des DownloadList Files geladen und danach alle darin aufgelisteten Files. Für alle aufgelisteten „Default“ Files wird beim erstmaligen Laden eine „Working Copy“ angelegt, die bei späteren Updates aber nicht mehr überschrieben wird.
Beim erstmaligen Laden des Modules erfolgt auch die Registrierung der Scripts in der IP-Symcon Baum Struktur.

Mit dem Starten von InstallModule wird das Installations Script ausgeführt. Dort wird als erstes die Version aller benötigten Sub-Module überprüft und danach startet die eigentliche Installation, die alle benötigten Objekte angelegt (Variablen, Events, …).

Ein Beispiel zur Entwicklung eines eigenen Modules ist im WIKIzu finden

Da man die meisten Module auch ohne entsprechende Hardware betreiben kann, ist es möglich eine Demo Installation der IPSLibrary zu installieren und die Funktionen der diversen Module zu testen.

Zu diesem Zweck liegen in den Example Verzeichnissen Konfigurations Files, die man benützen kann um ein Modul zu installieren.

Zur Zeit sind folgende Module in der Demo Version enthalten:

[ul]
[li]IPSModuleManager
[/li] [li]IPSModuleManagerGUI – WebFront Interface zu Installation und Update von Modulen
[/li] [li]IPSLogging – Logging und Error Handler der IPSLibrary
[/li] [li]IPSComponent – Hardware Abstraktions Layer der IPSLibrary
[/li] [li]IPSMessageHandler – Rückmeldung der Hardware zu den Modulen
[/li] [li]IPSShadowing – Beschattungssteuerung
[/li] [li]IPSWatering – Bewässerungssteuerung
[/li] [li]IPSLight – Lichtsteuerung
[/li] [li]IPSMessageHandler – Rückmeldung der Hardware zu den Modulen
[/li] [li]NetPlayer mit dem IPS eigenen MediaPlayer (Musik Verzeichnis muss danach noch gesetzt werden)
[/li] [li]AudioMax – Ansteuerung des MultiRoom Systems von eServiceOnline
[/li] [li]Entertainment Steuerung
[/li][/ul]

Der Code zur Installation der Demo Version ist im WIKIzu finden.

Voraussetzung ist, dass das BaseLoader Script bereits ausgeführt wurde.

Hinweis:
Die Installation benötigt ungefähr 500 Variablen

Module Erweiterungen 2012-02-10

[ul]
[li]Initialer Library Release 2.5 beta
[/li][li]Anpassung der Entertainment Steuerung an IPS 2.5
[/li][li]Verbesserte Installation des IPSLoggers (Autom. Installation InfoWidget und PHP-ErrorHandler )
[/li][li]Neues Module NetPlayer
[/li][/ul]

edit 2015-11-16
Link zur Doku entfernt …

Neue WIKI Artikel:

[ul]
[li]Step by Step Anleitung für Modul
[/li][li]IPSModuleManager Funktionen
[/li][li]Development Environment
[/li][/ul]

IPSLibrary Release

[ul]
[li]IPSModuleManager - neue Funktion DeleteModule, ermöglicht die Deinstallation von Modulen
[/li][li]Doxygen Build File und Screenshots in die Library aufgenommen, bietet nun für jeden die Möglichkeit die Doku zu generieren
[/li][/ul]

Development Environments:

[ul]
[li]1007 - Withings-Waage, Einbindung der Withings Waage
[/li][li]1007 - BusBahnInfo, Anzeige von Bus und Bahn Informationen
[/li][li]Brownson - IPSWatering, Bewässerungssteuerung
[/li][li]Brownson - IPSTwilight, Dämmerungsberechung
[/li][li]Brownson - IPSWeatherForcastAT, Wettervorhersage Österreich
[/li][/ul]

Neue WIKI Artikel:

[ul]
[li]Versionsverwaltung mit GIT (besten Dank an dieser Stelle an 1007)
[/li][/ul]

IPSLibrary Release:

[ul]
[li]IPSModuleManger - diverse kleinere Bug Fixes
[/li][li]Alle Module im IPSLibrary Release supporten jetzt eine Deinstallation
[/li][/ul]

Wir dürfen einen neuen IPSLibrary Entwickler begrüssen - Welcome MCS-51

Development Repository:
MCS-51 - Wecker/Zeitschaltuhr
MCS-51 - Erweiterung von IPSEDIP

Habe auch die Modul Übersicht mal auf den aktuellsten Stand gebracht und mit den zugehörigen Threads im Forum verlinkt.

Neuer WIKI Artikel:

[ul]
[li]Dokumentation IPSShadowing[/li][/ul]

Neue Entwickler:
Auch einen neuen Entwickler dürfen wir begrüßen - Welcome Domizei385 (implementiert einige Erweiterungen für die Entertainmentsteuerung)

Neue Module

[ul]
[li]IPSSchaltuhr - eine Zeitschaltuhr[/li][li]IPSShadowing - eine Beschattungssteuerung[/li][li]Plugwise Energieverbrauchsmessung[/li][/ul]

ModuleManager

[ul]
[li]Erweiterung IPSModuleManager – Support mehrerer Repositories[/li] [li]BaseLoader – Überarbeitetes BaseLoader Script[/li] [li]IPSModuleManagerGUI– GUI zum Laden und Updaten von Modulen[/li][/ul]

WIKI
Zahlreiche neue Wiki Artikel stehen zur Verfügung

Neue Module

[ul]
[li]IPSModuleManagerGUI– GUI zum Laden und Updaten von Modulen[/li] [li]IPSLight – Lichtsteuerung[/li] [li]IPSCam – Kamerasteuerung[/li] [li]AudioMax – Multiroom Steuerung von eServiceOnline[/li] [li]IPSHomematic – Anlegen und Überwachen von Homatic Komponenten[/li] [li]IPSHighcharts – Chart Visualisierung[/li] [li]IPSPowerControl – Energieverbrauchs Visualisierung [/li] [/ul]

Demo Installation
Neues Demo Installations Script ist verfügbar

WIKI

Habe einen WIKI Artikel geschrieben, wie das prinzipielle Vorgehen bei einer Erweiterung von IPSComponent ist

Entwickler

Wir dürfen auch wieder einen neuen Entwickler begrüssen, der einige Zwave Anbindungen beisteuern wird. Ein herzliches Willkommen an Skeal.

Hallo,

könnt ihr bitte die Links in den Posts hier aktualisieren (404) oder sonst die Artikel aus dem Forum nehmen.

Danke Paul

Es sollte jetzt alle Links passen, falls noch was fehlt, bitte um Angabe des Posts …

Guten Abend!
heute habe ich bemerkt das IPSLibrary nicht mehr funktioniert.
Habe nun Alles gelöscht und wollte neu installieren (BaseLoader). Hier das Ergebnis:

IP-Symcon 5.0, Raspberry Pi, 19.09.2018, a73d830a649

Hier nochmal die Fehlermeldung die beim Skriptausführen erstellt wird:

Fatal error: Uncaught Exception: script /var/lib/symcon/scripts/IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php could NOT be found! in /var/lib/symcon/scripts/IPSLibrary/app/core/IPSUtils/IPSUtils.inc.php:38
Stack trace:
#0 /var/lib/symcon/scripts/__autoload.php(4): IPSUtils_Include(’/var/lib/symcon…’, ‚IPSLibrary::app…‘)
#1 /usr/share/symcon/scripts/__autoinclude.inc.php(30): require_once(’/var/lib/symcon…’)
#2 {main}
thrown in /var/lib/symcon/scripts/IPSLibrary/app/core/IPSUtils/IPSUtils.inc.php on line 3

Danke für die Hilfe!
lg