IPSEDIP - Ansteuerung von Edip Displays

Hallo Leute,

Hier sind meine Scripts zum Ansteuern von eDIP Displays.

Bei den EDIP Displays handelt es sich um kleine Grafik Displays mit serieller Ansteuerung der Firma ELECTRONIC ASSEMBLY, die sich durch einen sehr geringen Stromverbrauch auszeichnen (< 1 Watt).

Zu Kaufen gibts die Displays unter anderem bei Reichelt (hier zB im Starter Kit mit USB Anschluss) StarterKit. Zugehörige Blende kann ebenfalls dort bezogen werden.

Es handelt sich bei IPSEDIP um Scripts, mit denen es möglich ist IPS Strukturen auf einem eDIP Display zu visualisieren. Das hat den Vorteil, dass man die Visualisierung komplett aus IPS steuern kann. Eine Änderung der EDIP Programmierung entfällt somit komplett und eine Anbindung neuer EDIP Displays kann praktisch per Plug and Play erledigt werden !

Beim Anschluss des Displays ist darauf zu achten, dass der Pin 17 auf Masse liegt (das deaktiviert das sogenannte „Small“ Protokol und ermöglicht es, dass das Display selbsttätig Antworten sendet, ohne dass man es pollen muss. Zwar werden dadurch keine Acknowlege Meldungen mehr vom Display versendet, in der Praxis zeigen sich dadurch aber keinerlei Probleme).

Angezeigt werden alle Variablen außer jene mit Profil „HTMLBox“, editieren kann man zur Zeit folgende (Voraussetzung ActionScript ist definiert):

[ul]
[li]Boolean
[/li] [li]Integer mit Prefix „%“
[/li] [li]Integer mit Assoziationen
[/li][/ul]

Zur Zeit unterstützt das Programm nur die Ansteuerung von Displays vom Type EDIPTFT43A (horizontale Montage).
Die Ansteuerung von alternativen Displays ist zwar prinzipiell vorbereitet, aber noch nicht implementiert.

Die Installation läuft im Prinzip folgendermaßen ab (ist in der Dokumentation auch nochmals detailiert beschrieben):

[ol]
[li]IO Instance und Register Variable müssen manuell angelegt werden
[/li][li]Konfiguration anpassen
[/li][li]Installations Script ausführen
[/li][li]ID des EDIP Empfangs Scriptes IPSEDIP_Receive.ips.php als Action Script der Register Variable(n) definieren.
[/li][li]Zum Testen kann man im File IPSEDIP.class.php die Instance ID eines Displays eintragen und durch ausführen des Scripts ein manuelles Refresh triggern
[/li][/ol]

ACHTUNG: Aktuelle Version des IPSInstallers ist Pflicht !

[Update 2012-02-10] Integration in die IPSLibrary
[Update 2013-05-30] Im Auslieferungszustand beinhaltet das EDIP normalerweise ein Demo Programm, dieses sollte man
um Problemezu vermeiden entfernen (siehe Attachments).

EDIPProgrammer.zip (852 Bytes)

IPSEDIP_Docu.zip (174 KB)

Hallo Andreas,

vielen Dank für deine Veröffentlichung. Das ist wirklich eine tolle Arbeit.
Ich habe dazu einige Fragen.

Ich benutze zurzeit Version 2.4 vom 17.08.2011

In der IPSEDIP_Configuration sind folgende Parameter aunzupassen? Was trägt man beim Root genau ein?

$EDIP_CONFIGURATION = array(

  • EDIP_CONFIG_NR1 =&gt; array(
    
*       EDIP_CONFIG_NAME              =&gt; 'Edip43Wohnzimmer', (Splitter?)
  •   EDIP_CONFIG_REGISTER          =&gt; 18893,(Register Variable?)
    
  •   EDIP_CONFIG_ROOT              =&gt; 24751,(Gateway oder Ser.Port ?)
    
  •   EDIP_CONFIG_REFRESHMETHOD     =&gt; EDIP_REFRESHMETHOD _NONE,
    
  •   EDIP_CONFIG_CLASSNAME         =&gt; EDIP_CLASSNAME_EDIP43));
    

Ich bekomme folgende Fehlermeldungen:

<br />
<b>Warning</b>: include_once(IPSInstaller.ips.php) [<a href=‚function.include-once‘>function.include-once</a>]: failed to open stream: No such file or directory in <b>C:\IP-Symcon\scripts\88IPSEDIP_Installation.ips.php</b> on line <b>29</b><br />
<br />
<b>Warning</b>: include_once() [<a href=‚function.include‘>function.include</a>]: Failed opening ‚IPSInstaller.ips.php‘ for inclusion (include_path=’.;C:\php5\pear’) in <b>C:\IP-Symcon\scripts\88IPSEDIP_Installation.ips.php</b> on line <b>29</b><br />
<br />
<b>Fatal error</b>: Call to undefined function CreateCategoryPath() in <b>C:\IP-Symcon\scripts\88IPSEDIP_Installation.ips.php</b> on line <b>52</b><br />

Was mache ich falsch?

Root ist das was am EDIP angezeit werden soll (ähnlich iFront/WebFront), Du kannst dort zum testen einfach 0 angeben.

Name ist ein String, der am EDIP angezeigt wird.

Angabe von Splitter und IO Instance ist nicht erforderlich (Kommunikation läuft alleine über die Register Variable)

Die Fehlermeldung kommt vermutlich daher, dass der IPSInstaller bei der nicht vorhanden ist (einfach in Scripts Verzeichnis kopieren).

Der IPSLogger ist ebenfalls Pflicht (Installation siehe WIKI).

Habe die EDIP Scripts eigentlich für v2.5 geschrieben, Betrieb unter 2.4 ist zwar prinzipiell möglich erfordert aber sicherlich einige Anpassungen (IPSInstaller, IPSLogger in einer älteren Version downloaden und alle Aufrufe von IPS_GetObjectIDByIdent durch IPS_GetObjectIDByName ersetzen - ich empfehle 2.5 …).

Hallo Andreas,

Toll, momentan könnte ich mir vorstellen das ich meine IPS Anlage mit 1,2 Displays erweitere.
Momentan hänge ich aber noch in ein paar anderen Projekten fest, könntest du uns noch paar Infos geben, wo hast du das Display gekauft, und wer hat den schönen Rahmen gemacht.
Kann man nur bestimmte Sachen auf dem Display anzeigen oder hat das Display immer dasselbe Bild wir der Haupt TFT. Ich nutze das Dashbord.

Gruß Uwe

Hallo Uwe,

… den Holzrahmen hab ich wieder selber gebastelt - den Rest hab ich bei Reichelt bestellt. Hab die anderen Infos gleich direkt im Start Thread ergänzt…

Hallo Andreas,

ich habe jetzt alles unter 2.5 laufen und EDIP und den LOGGER installiert.
Beim testen gibt er aber noch Fehlermeldungen raus. Ich würde gerne den ALL3690 auf das Display bringen. Es muß unmittelbar mit der Root ID zusammenhängen. Da meckert er rum.
Muß ich jetzt irgendetwas wie im Webfront Konfigurator anlegen, also ist dann das Display praktisch so etwas wie das Webfront?

Das Skript darf nicht von Hand gestartet werden, steht doch dabei.

Dieses Skript wird von der Edipsteuerung aufgerufen.

Schreib in die ROOT_ID (=EDIP_CONFIG_ROOT) in der Konfiguration nochmals die ID des ALL3690 rein und lass das Installations Script nochmals laufen.

Danach sollte in ROOT_ID und CURRENT_ID 39141 stehen.

Ausführen des Scripts IPSEDIP.class.php ist schon in Ordnung sofern die ID am Beginn des Scriptes richtig gesetzt ist, in Deinem Fall also:


	if ($IPS_SENDER=='Execute') {
		$edip = new edip43(55180);
		$edip->RefreshDisplay();
	}

Hallo Andreas, das hat soweit geklappt.Die Varablen wurden angenommen und es wird was zum Display geschickt. Das sind aber immer noch Steuerzeichen,
Hast du einen Screenshot wie die Visualisierung aufgebaut sein muß?
Ich habe jetzt unter Hardware / Edip verlinkungen angelegt.

Das Anlegen von links oder ariablen die sich auf das Powermeter ALL 3690 beziehen klappt nicht im Ordner EDIP_1.
Ich habe wohl ein Grundsätzliches Verständnisproblem, na ja Strippenzieher halt. :slight_smile:

Definiere „Steuerzeichen“ - das hört sich für mich mehr nach einem Problem mit der Baud Rate an!

Hallo Andreas,

ich habe alles auf 9600 Baud umgestellt. Der String wird jetzt länger.
Die Ereignisse habe ich erstellt. Es ging erst nach mehrmaligem Neustart des Dienstes. Die Variablen wurden nicht zur Auswahl angezeigt. In der Registervariable habe ich in der Konfiguration das Receive Script zugewiesen. Ist es das was du mit dem Action Script meinst. Wenn ich über Ereignisse versuche das Receive Sript aufzurufen läßt es sich nicht auswählen.
Der Sendescript reagiert nur auf den Timer und nicht auf Variablenänderung.

Wie heißt das so schön. Ich bin auf einem guten Weg :rolleyes:

Ahhh - vergiss die Ereignisse, die werden von den EDIP Scripts normalerweise selbst angelegt (wenn RefreshMethod auf EVENT gesetzt ist).

Der Register Variable das Script IPSEDIP_Receive zuweisen - richtig (habe glaube ich teilweise schlecht beschrieben).

Ich würde mich in erster Linie mal auf die reine Anzeige von Daten konzentrieren (also lass mal den Rückweg außen vor…).

Wie betreibst Du eigentlich Dein Display - RS232 - ich war ursprünglich der Meinung, dass ich keinen Pegelwandler auf TTL benötigen würde, weil mein RS232 Adapter eine 5V Betriebsspannung hat - ätsch, denkste, ich glaube, dass hatte auch so wilde Zeichen verursacht …

Ich gehe über zwei XBees Coordinator-Enddevice nach Vorgabe von Rainer auf die Platine von Andre. Auf der Platine sitzt das Enddevice. Die Platine wird mit einem 5V Netzteil betrieben. Das Smallprotokoll ist abgeschaltet.

http://www.ip-symcon.de/forum/f33/hilfe-xbee-edip-gesucht-16350/

OK, da kann ich Dir jetzt auch nicht mehr helfen - ich bin mir aber relativ sicher, dass das jetzt nur mehr ein Kommunikations Problem ist!

Ok, trotzdem vielen Dank für deine Geduld. Ich werde es morgen mal direkt über USB-Seriell versuchen und dann berichten.

Ich habe mich auch am EDIP versucht, hänge aber momentan an folgender Fehlermeldung:
Call to undefined function IPS_GetObjectIDbyIdent() in [Program\IPSEDIP\Scripts\IPSEDIP] on line 78
Das kann doch nicht mit dem EDIP zu tun haben, oder?
Gruß Jens

Mist, ich muß erst auf 2.5 updaten.
Vergessen, sorry

Hat das Teil eigentlich schon jemand zum laugen gebracht mit meiner Steuerung?

Nachdem ich die „IPS_GetObjectIDbyIdent“ mit „IPS_GetObjectIDbyName“ Version 2.50 #2236 ausgetauscht hatte, lief die Anzeige.

Leider komme ich z.Zt. nicht dazu, das weiterzuverfolgen, werde mich aber im Januar weiter drum kümmern.

Danke für deine Arbeit und frohe Weihnachten.

Nach Anfangsschwierigkeiten zeigt mein EDIP jetzt ganz oben den Namen der Root Kategorie. Mehr bekomme ich noch nicht draufgezaubert.

Bei der Installation liefert folgende Zeile immer false

	   if ($configData[EDIP_CONFIG_REGISTER]<>"" and $configData[EDIP_CONFIG_ROOT]<>"") {

Was mache ich da falsch, bzw. was habe ich vergessen?

Morgen geht’s weiter, und dann melde ich mich sicher mit vielen weiteren Fragen.
Gruß Jens

Habe derzeit massive Zeitprobleme und die Sache daher noch nicht weiter verfolgt. Bleibe aber dran und gebe laut.