IPSF - IPS Framework

Hallo zusammen

Gerne stelle ich Euch meine IPSF Klasse zur Verfügung. Sie ist zwar noch lange nicht perfekt, aber sie tut schon richtig gut ihren Dienst.

Summary
IPSF ist eine Projekt Klasse um die IPS Events zentral abzufangen und zu steuern.

Der Grund für diese Entwicklung war, dass es mich gestört hat, „manuell“ verschiedene Konfigurationen zu erstellen und für jeden Event individuelle Skripte schreiben müssen. Diese Klasse zentralisiert ein Projekt und macht es ein wenig mehr OO (objekt orientiert). Es kann folgendes damit gemacht werden:

[ul]
[li] zentrale Deklaration von Variablen und Links[/li][li] „Binden“ von Variablen mit Events [/li][/ul]

Beispiel:
In der Projekt Datei erstellt man die init() funktion, dort deklariert man alles:


      self::createInteger("abfragevariable");
      self::createInteger("onChangeVara");
      self::createInteger("onChangeUpVara");
      self::createInteger("onChangeDownVara");


Dies erstellt nun 4 Integer Variablen im Projekt Verzeichnis
Nun „binded“ man die Variablen an Events:


      self::createOnChangeEvent("abfragevariable.id");
      self::createOnChangeUpEvent("abfragevariable.id",4);
      self::createOnChangeDownEvent("abfragevariable.id",2);

self::createOnChangeEvent - bei Variablen Änderung wird der Event getriggert
ruft die Funktion „onChange_abfragevariable“ auf

self::createOnChangeUpEvent- Wenn der Wert grösser als 4 ist…
ruft die Funktion „onConChangeUp_abfragevariable4“ auf

self::createOnChangeDownEvent- Wenn der Wert kleiner als 2 ist…
ruft die Funktion „angeDown_abfragevariable2“ auf

Nun erstellt man die Events:


	public function onChange_abfragevariable(){
		self::s("onChangeVara.value",self::g("onChangeVara.value")+1);
	}

	public function onChangeUp_abfragevariable4(){
		self::s("onChangeUpVara.value",self::g("onChangeUpVara.value")+1);
	}

	public function onChangeDown_abfragevariable2(){
		self::s("onChangeDownVara.value",self::g("onChangeDownVara.value")+1);
	}

Die jeweiligen Variablen werden mit +1 neu gesetzt.

Folgende Funktionen bietet das IPSF an:

// EINRICHTEN DES IPSF
// ------------------------------------------------------------
/*
1) Die IPSF class kann irgendwo zentral abgelegt werden
2) Für jedes Projekt empfiehlt sich ein eigenes IPSF Script zu erstellen
IPSF_meinprojekt → include muss auf die IPS class zeigen

3) init() function füllen     -> siehe Beispiel weiter oben
4) events schreiben ;-)       -> siehe Beispiel weiter oben

/*

// BASIS FUNKTIONALITAETEN
// ------------------------------------------------------------
/*
self::createButton(NAME,{PROFILE},{POSITION});
→ erstellt eine Boolean Variable im Verzeichnis „variables“
Wird Deklaration aus der init() wieder rausgelöscht,
löscht IPSF automatisch die Variable wieder aus dem
Verzeichnis „variables“
→ NAME: string
→ PROFILE: string/optional
→ POSITION: integer/optional, position das Variable

Beispiel
   self::createButton("meinBool","~switch");

//--------

self::createInteger(NAME,{PROFILE},{POSITION});
→ erstellt eine Integer Variable im Verzeichnis „variables“
Wird Deklaration aus der init() wieder rausgelöscht,
löscht IPSF automatisch die Variable wieder aus dem
Verzeichnis „variables“
→ NAME: string
→ PROFILE: string/optional
→ POSITION: integer/optional, position das Variable

Beispiel
   self::createInteger("meinInt");

//--------

self::createFloat(NAME,{PROFILE},{POSITION});
→ erstellt eine Float Variable im Verzeichnis „variables“
Wird Deklaration aus der init() wieder rausgelöscht,
löscht IPSF automatisch die Variable wieder aus dem
Verzeichnis „variables“
→ NAME: string
→ PROFILE: string/optional
→ POSITION: integer/optional, position das Variable

Beispiel
   self::createFloat("meinFloat");

//--------

[b]self::bind(NAME.object id);[/b]
--> erstellt eine Verbindung ausserhalb des Verzeichnisses
      Bei rauslöschen aus der init(), wird lediglich die
      Verknüpfung rausgelöscht.
		--> NAME: string  gewünschter Name mit (.) vorhandener object id
      
Beispiel
   self::bind("aktor_2OG.53241");    Homematic Device Switch

//--------

[b]self::link(NAME, TARGETID, PATH, {POSITION});[/b]
--> erstellt einen Link in ein Verzeichnis
		--> NAME: string - hier dürfen auch Namen mit Leerzeichen verwendet werden
		--> TARGET: objectid oder IPSF Object
		--> PATH: string, Pfad gemäss http://www.ip-symcon.de/forum/threads/7231-IPS-Variablenzugriffe-über-NAMEN
		--> POSITION: integer/optional


Beispiel
   self::createLink("Mein Link","abfragevariable.id","visu/alarm",1);

oder

   self::createLink("Mein Link",53241,"visu/alarm",1);

// GET / SET FUNKTIONALITAETEN
// ------------------------------------------------------------

[b]variant = self:g(Object (.) SUBTYPE);[/b]
--> liefert den Object Wert zurück
		--> TARGET: objectid oder IPSF Object
		--> SUBTYPE: (.id), (.value), (.type)

Beispiel
	echo self::g("abfragevariable.value");
      AUSGABE: 5
	echo self::g("abfragevariable.id");
      AUSGABE: 54222
	echo self::g(54222);
      AUSGABE: abfragevariable
	echo self::g("abfragevariable.type");
      AUSGABE: var

//--------

[b]self::s(Object (.) SUBTYPE, VALUE);[/b]
		--> TARGET: objectid oder IPSF Object
		--> SUBTYPE: (.value)
		--> VALUE: variant

Beispiel

  self:s("abfragevariable.value", 13);
     --> die variable wird mit 13 gesetzt

// EVENT TRIGGER
// ------------------------------------------------------------
// Soooo, jetzt wird es spannend!

self::createOnChangeEvent(„abfragevariable.id“);
→ Wenn sich die Variable verändert wird der IPSF Event aufgerufen

Folgendes wird versucht aufzurufen (sofern es existiert)
	public function onChange_abfragevariable(){
	   echo "Ja, Event ist angekommen"
	}

//--------

self::createOnChangeUpEvent(„abfragevariable.id“,50);
→ Wenn der Wert 50 erreicht hat, wird der IPSF Event aufgerufen

Folgendes wird versucht aufzurufen (sofern es existiert)
	public function onChangeUp_abfragevariable50(){
	   echo "Ja, Event mit 50 ist angekommen"
	}

//--------

self::createOnChangeDownEvent(„abfragevariable.id“,10);
→ Wenn der Wert unter 10 gefallen ist, wird der IPSF Event aufgerufen

Folgendes wird versucht aufzurufen (sofern es existiert)
	public function onChangeDown_abfragevariable10(){
	   echo "Ja, Event unter 10 ist angekommen"
	}

Viel Spass! :smiley:
Gruss aus Frankreich - Andi

IPSF.zip (5.09 KB)