eDip für alle die sich darunter nicht vorstellen können.

@NBA:

Vielen Dank für die Rückmeldung, das tut auch mal gut :slight_smile:

[b]***ANLEITUNG 1 ***

USB-Treiber fürs EDIP einrichten[/b]

Hier noch mal die step-by-step-Anleitung (irgendwelche USB Device Server würde ich erst später einrichten, zunächst das EDIP alleine einrichten!).

Es wird KEIN Programmerboard oder ähnliches benötigt, die USB-Version der von mir gelieferten EDIPs verhält sich nach dem Einrichten des Treibers wie ein ganz normal über RS232 angeschlossenen EDIP.

[b]1) vor dem Einstecken USB-Treiber installieren: Virtual COM Port Drivers

  1. Gerät an USB anstecken…wird nun erkannt. Das EDIP müsste eine Demo anzeigen.

  2. Im Gerätemanager unter COM-Ports die Nummer des neu eingerichteten COM sichten (z.B. COM3, „USB Serial device“)

  3. In der Verwaltungskonsole von IPS eine neue Instanz anlegen - einfach „alle Module anzeigen“ klicken und unter I/O den „Serial Port“ auswählen.

  4. Die neue Instanz „Serial Port“ ist nun in der logischen Baumansicht zu finden. In den Eigenschaften des Serial Port (Doppelklick auf die Instanz) nun einfach den neu eingerichteten COM Port auswählen (z.B. COM3) und 9600 Baud auswählen.

  5. Fertig! Die „hardwaremässige“ Einrichtung des EDIP ist damit abgeschlossen.[/b]

Ich liefere die EDIPs standardmässig mit der Touchdemo von EA (dem Hersteller) aus. Morgen gibts ne Step-by-Step-Anleitung, wie man aus IPS die ersten Zeichen auf das EDIP bekommt :slight_smile: Als Vorgriff könnt Ihr schon mal die EA-Tools installieren:

http://www.lcd-module.de/deu/disk/setup%20electronic%20assembly%20lcd%20tools.zip

Damit bringt man dann die Menüs etc. ins EDIP rüber.



***ANLEITUNG 2 ***

Programm zum EDIP per USB-TTL-Wandler übertragen

Die untenstehende Anleitung beschreibt, wie man mithilfe des EA-Tools ein Programm zum EDIP überträgt (in diesem Fall das Demo-Programm von EA):

[b]1) EA-Tools von Elecronic Assembly installieren: http://www.lcd-module.de/deu/disk/setup%20electronic%20assembly%20lcd%20tools.zip

  1. EDIP per USB anschließen (falls noch nicht geschehen), die „hardwaremäßige“ Einrichtung des Treibers muss bereits vorher geschehen sein - siehe Anleitung ein paar Posts zuvor.

2a) Falls Ihr in IPS bereits einen Serial Port für das EDIP eingerichtet habt, diesen in der Verwaltungskonsole schließen (da die COM-Schnittstelle sonst von IPS belegt wird).

  1. EA Kit-Editor öffnen. Über den „OPEN“-Button im Ordner DEMO z.B. das Demoprogramm auswählen: demo.kmc (siehe Bild 1)

  2. Nun seht Ihr das Beispielprogramm, was später ins EDIP geladen wird. Im oberen Bereich nun die richtigen Baudrateneinstellungen vornehmen. Den Eintrag „USB“ (Edip Programmer) am Anfang der Zeile mit einem „;“ versehen, der originale Programmer von EA wird ja nicht verwendet. Dafür entfernt Ihr den Eintrag „;“ vor der COM und tragt 9600 Baud ein - hinter COM muss die von Euch verwendete Portnummer stehen (z.B. COM8). (siehe Bild 2)

  3. Nun oben in der Menüleiste auf das Symbol ganz rechts („compile“)drücken. (siehe Bild 3)

  4. Die Abfrage, ob die Änderungen gespeichert werden sollen, mit JA bestätigen. (siehe Bild 4)

  5. Ein neues Fenster öffnet sich mit den Statusmeldungen, das Programm wird nun aufs EDIP übertragen. (siehe Bild 5)
    Ihr seht nun auch am EDIP selbst, wie das Programm übertragen wird (Ladefortschrittsbalken).

  6. Fertig, das Programm ist jetzt im EEPROM des EDIP gespeichert![/b]



[b]***ANLEITUNG 3 ***

Ein erstes „Hallo“ auf dem EDIP ausgeben[/b]

Einfach wie oben beschrieben, nachfolgendes Programm (nur den roten Teil per copy&paste in den Kit-Editor) ins EDIP laden (Minimalprogramm zur Ausgabe von „Hallo“ auf dem EDIP und Einstellen der Helligkeit von 25%). Ihr müsst nur die richtige COM-Portnummer anpassen (bei mir COM8):

eDIP240-7 "Testprogramm"	; define eDIP240-7, "Projectname" max. 30 character
 
COM8: 9600		; program eDIP on COMx with 9600 Baud
;------------------------------------------------------------------------------
; Charactercodes für Zeichenketten definieren
 
'€' = 128
'äöüÄÖÜß' = $84,$94,$81, $8E,$99,$9A, $E1
'°' = 248
;------------------------------------------------------------------------------
; allg. Konstanten definieren
 
ESC = 27
CR  = 13
LF  = 10
FF  = 12
 
AUS =  0
EIN =  1
 
XMAX = 239
YMAX = 127
 
; Verknüpfungsmodi
SET     = 1
DELETE  = 2
INVERS  = 3
REPLACE = 4
INVREPL = 5
 
; Blinkmodi
NOBLINK     = 0
BLINKONOFF  = 1
BLINKINVERS = 2
 
;-------------------------------
; Makro Nummern
 
MnPowerOn = 0
 
PowerOnMakro:		; wird nach dem Einschalten ausgeführt
	#MN MnPowerOn 
 
ResetMakro:		; wird nach einem externen Reset ausgeführt
	#MN MnPowerOn 
 
WatchdogMakro:	; wird nach einem Fehlerfall/Timeout >500ms ausgeführt
	#MN MnPowerOn 
 
BrownOutMakro:	; wird nach einem Spannungseinbruch <4V ausgeführt
	#MN MnPowerOn 
 
;=================================================  ============================
 
MAKRO: MnPowerOn            ; Power-On/Reset Makro
	#TA			; Terminal aus
	#YH 25			; Helligkeit auf 25%
	#ZL 1,1 "Hallo"	; Hallo an Position 1,1 ausgeben

Im unteren Bereich des Makros könnt Ihr nun etwas „spielen“. Mit welchen Befehlen man was auf dem EDIP ausgibt, steht im Datenblatt des EDIP.

1.JPG

4.JPG

5.JPG

Hallo dreamy1,

danke für Deine Anleitung, habe diese mal zu einem Beitrag zusammengefasst.:wink:
Anleitung

Hallo Thomas,

super - vielen Dank!

Hallo zusammen,

die Anleitung von dreamy1 hat es mir ermöglich an einem Sonntag das edip in Betrieb zu nehmen.

Ohne diese Hilfe, hätte das bei mir n i e geklappt.

Das Ding läuft mit dem Demo-Beispiel,
das „Hallo“ klappt und
ich habe auch aus IPS heraus auf Basis eines Forum-Scriptes (Newsreader) ein paar Zeilen auf das Display geschrieben.

Die meisten Beiträge zum „edip“ sind wahre Meisterstücke!

Gibt es denn auch ein paar Beispielspender, die es auf einem niedrigeren Niveau angehen lassen können?

Z.B.:

  • 2 bis 3 Menü-Punkte mit Absprung und „zurück zum Hauptmenü“
  • Lesen einer Touch-Auswahl
  • wenn ich am edip durch eine Menüstruktur blättere, woher weiss IPS von welcher Seite die Touch-Eingabe kommt?
  • wie schalte ich mit der edip - Eingabe eine Steckdose?
  • wie schreibe ich auswählbare Seiten mit zusätzlichen IPS-Daten?
  • edip-Beleuchtung ab- und anschalten, der Touch-screen soll aber aktiv bleiben
  • macht es Sinn aus IPS Menüs zu programmieren, oder ist der EA-Editor sinnvoller?

Gruss NBA

vor der Frage stehe ich auch gerade noch, nur aus IPS heraus finde ich später einfacher zu administrieren, mehr möglichkeiten wie ich gesehen habe hat man mit Makros direkt aus dem Display heraus

das ist doch eine der leichtesten Übungen - schau mal ins Datenblatt, da kannste die Beleuchtung schalten und auch dimmen, geht wunderbar.

Grüße,
Doc

Vielen Dank für die Rückmeldungen zu meiner Anleitung!

Ich versuche, alles möglichst einfach für Einsteiger zu formulieren, so fällt der Einstieg wesentlich leichter - das würde ich mir auch an anderer Stelle wünschen (Horst hat auch mal eine super Anleitung für „Dummies“ wie mich geschrieben - hat auf Anhieb funktioniert).

So, jetzt seid Ihr dran mit Beispielen :slight_smile:

In Hardwarefragen bin ich fit, bei der Software haperts leider noch :frowning:

Hallo zusammen,

ok, zu viele Fragen beim letzten Mal auf einmal - ja - ich habe ins Datenblatt geschaut und bekomme mittlerweile auch eine Textausgabe und einen Touch-Buton komplett aus IPS hin.

Wie kann ich einen Touchtastendruck komplett in IPS abfragen?

Also nicht das Tastaturmakro starten und #SB ‚xx‘ zurückgeben, sondern nur in IPS den Touchdruck erkennen?

Gruss NBA

Hallo NBA,

Du kannst ja im EDip mit AT (Taster) oder AK (Schalter) Bereiche definieren (Datenblatt Seite 15 oben) die einen entsprechenden Code über die Schnittstelle (USB, COM, xBee) senden, diesen kannst Du wie auch den #SB in IPS auswerten.

Vorteil der Taster/Schalter, Du kannst die auch von IPS aus aktivieren oder deaktivieren, d.h. sie zeigen entsprechend den Zustand einer Variable/Aktors an.

Als Beispiel hier mal ein Auszug meines Blogs

Kann Dir auch gerne mal meine EDip-Programme nebst IPS-Skripte zur Verfügung stellen, die sind aber mittlerweile so umfangreich das ich nach Wochen in denen ich nicht mehr am Edip gearbeitet habe selbst mir unverständlich verkommen.:smiley:

Hallo WGreipl,

kann ich mal bitte 3 Zeilen Code haben, wie man einen Schalter in IPS definiert und direkt in IPS wieder abfragt?

Ich möchte eigentlich in einem System bleiben und nicht mit EA arbeiten.

Also was schreiben auf den edip und Bilschirm an/aus kann ich - hat viele Stunden am Wochenende gedauert, wäre schön wenn ich einen Tipp bekommen könnte.

Gruss NBA

Hallo NBA

wenn Du schon was aufs edip geschrieben bekommen hast dann must Du für nen Taster eigentlich nur chr(27).chr(AT).chr(x1).chr(y1).chr(x2).chr(y2).chr(t1).chr(t2).„TEST“.chr(0)
an das edip schicken.
x1/x2/y1/y2 sind die Eckwerte des Tasters,
t1 ist die Nummer des Touchmakro welches das edip ausführen soll bzw. für Dich wichtiger das ist der Wert den das Edip sendet wenn kein Touchmakro mit der nummer existiert.
t2 das gleiche wie t1 nur das t1 beim drücken ausgeführt wird und t2 beim loslassen.
„TEST“ ist die Beschriftung des Tasters und chr(0) ist am ende zu setzten.

Das auslesen ist leider ne Nummer komplizierter, deshalb hier mal als Beispiel mein auslese skript.
Hast Du schon ne Registervariable fürs edip angelegt das die Werte ausm edip empfängt?
Bei dieser Registervariablen kannst Du dann dieses Skript anhängen (achtung sieht kompliziert aus isses aber nich wirklich)
Für Dich wäre eigentlich nur der Case 65 wichtig,der Case 66 ist für Bargraphen auslesen und 85 ist für Screenshots.

<?
$id_Register = 15719 /*[edip\Register Variable]*/;
$buf = RegVar_GetBuffer($id_Register); //Puffer einlesen
if ($IPS_SENDER == "RegisterVariable")
$buf .=  $IPS_VALUE; // neuen Wert hinzufügen
$id = ord(substr($buf,0,1)); //ersten wert auslesen

if ($id == "27")  //27 = 1B
	{
	switch (ord(substr($buf,1,1)))
	{
	
	case "65": //A befehle auslesen
   if ((strlen($buf))>3)  //Schauen ob alles empfangen wurde
		{
		$id = ord(substr($buf,3,1)); // 4 zahl ist die NR.
		print "erfolgreich ".$id;
		setvalue(35128 /*[edip\Taste]*/,$id);
		if ((strlen($buf))>4)
		{
		   RegVar_SetBuffer($id_Register,substr($buf,4,10));
		   IPS_SetScriptTimer($IPS_SELF,2);
		}
		else
		{
		RegVar_SetBuffer($id_Register,"");  // Puffer löschen
		IPS_SetScriptTimer($IPS_SELF,0);
		}
		}
	else
		{
		RegVar_SetBuffer($id_Register,$buf); // Puffer setzten
		IPS_SetScriptTimer($IPS_SELF,2);
      print "noch nicht alles empfangen";
      }
	break;
   case "66": //Bargrafen auslesen

		if ((strlen($buf))>4)  //Schauen ob alles empfangen wurde
		{
		$id = ord(substr($buf,3,1)); // 4 zahl ist die NR.
		$wert = ord(substr($buf,4,1));
		print "erfolgreich ".$id." Wert: ".$wert;
		setvalue(19564 /*[edip\Schieber]*/,$id);
		setvalue(51784 /*[edip\Wert]*/,$wert);
		if ((strlen($buf))>5)
		{   RegVar_SetBuffer($id_Register,substr($buf,5,20));
		   IPS_SetScriptTimer($IPS_SELF,2);
		}
		else
		RegVar_SetBuffer($id_Register,"");  // Puffer löschen
		}
		else
		{
		RegVar_SetBuffer($id_Register,$buf); // Puffer setzten
      IPS_SetScriptTimer($IPS_SELF,2);
		print "noch nicht alles empfangen";
      }
	break;
case "85":           //auslesen eines Screenshots des edips
	$breite = ord(substr($buf,5,1)); //breite der blh datei
	$hoch =ord(substr($buf,6,1)); //höhe
	$max = intval(($breite+7)/8)*$hoch; //formel ausm edip handbuch
	if ((strlen($buf))>($max+5))  //Schauen ob alles empfangen wurde
		{
		$buf= substr($buf,5,($max+2)); //ESC UL und startwerte abziehen

		$Pfad = "c:/test1.blh"; //Dateiname
		unlink($Pfad); //alte datei löschen
	  $Attribut = "ab";
     $open = fopen($Pfad,$Attribut);          //Öffnen
  		fwrite($open,$buf);                   //schreiben
   	fclose($open);                           //schließen
	   RegVar_SetBuffer($id_Register,"");  // Puffer löschen
		IPS_SetScriptTimer($IPS_SELF,0);
  		}
	else
		{
		RegVar_SetBuffer($id_Register,$buf); // Puffer setzten
       }
	break;
   default:
	if ((strlen($buf))==1)
		{RegVar_SetBuffer($id_Register,$buf); // Puffer setzten
		print "nur 1 empfangen";
		}
	else
		{
		RegVar_SetBuffer($id_Register,""); // Puffer rücksetzten
		IPS_SetScriptTimer($IPS_SELF,0);
      print "Fehler";
      }
	}
	}
else     // Sonstige Taste gesendet
	{ if ((strlen($buf))>1)
		{
		 RegVar_SetBuffer($id_Register,"");  // Puffer löschen
		 IPS_SetScriptTimer($IPS_SELF,0);
		print "Overflow";

		}
setvalue(38542 /*[edip\Befehl]*/,$id);
IPS_SetScriptTimer($IPS_SELF,0);
}

?>

des weiteren musst Du noch Variablen anlegen wo das Skript die Werte ablegen kann. Das wären einmal
Taste für die Rückgabewerte von Tastern
Schieber ist für Bargraphen damit man weiß welcher bewegt wurde und
Wert ist auch für Bargraphen diesemal der Wert :smiley:
Befehl ist für die 'SB werte vom edip

Dann kannst Du diese Werte in IPS weiterverarbeiten.

Hoffe das schreckt Dich nicht ab :smiley: is ja nich gerade ein 3zeiler

Gruß Jannis

P.S. wenn Du alles aus IPS aus steuern willst schau Dir vielleicht mal noch meine Function hier an hat mir das programmieren mitm edip erleichtert.

Hallo NBA,

so wie Du es machen willst hat ja bereits mein Vorgänger beschrieben, ich persönlich programmiere das Layout lieber im EDip per EA-Soft, habe aber auch nie getestet wie schnell der Grafikaufbau ist wenn ich es aus IPS bediene, muss ich doch auch mal testen.

Auch ein Abfrageskript hat Jannis bereits angezeigt stelle aber auch gerne mal meines ein das auf der Basis von RWN ist.


$Com = 12345;                         // bei dir deine $xbee-Instanz, wird hier nicht benötigt.
$daten = 18899;                      // Buffer der Register-Variable
$Dimmen = 120;       // Dimmzeit wann EDip Bildschirm abschaltet
 
// Buffer auslesen Dateneingang Register Variable
if (strlen (GetValue(18899 /*[.edip\eDip xBee\Buffer]*/)) != 4)
{
   SetValue(41151 /*[.edip\eDip xBee\Raum]*/, $daten);   // falls Raum per #SB gesendet wurde diesen zwischenspeichern
   $Raumwechsel = GetValueString(41151 /*[.edip\eDip xBee\Raum]*/);  // In welchen Raum befindet sich das EDip
}
else
{
   $eingabe = substr($daten, -1);
   SetValue(51905 /*[.edip\eDip xBee\Tastencode]*/, $eingabe); // gesendeten Tastencode zwischenspeichern
   echo $eingabe."
";
}
 

Zu beachten ist hier nur wenn die nach einem Raumkonzept arbeitest die IPS mitteilen in welchem Raum es sich befindet darf diese NIE 4 Zeichen lang sein, ansonsten kennt IPS nicht den Unterschied ob es sich beim gesendeten String um einen Raum oder eine Taste handelt.

Was macht diese Skript ersteinmal.

Es empfangt den Buffer der Register-Variable und prüft ob auf dem Edip eine Taste (#AT oder #AK) oder ein Raum (#SB) gesendet wurde und speichert diese in einer bestimmten Variable. Wenn Taste entweder „Tastencode“ oder wenn eine Raum gewechselt wurde in der Variable „Raum“. Die dritte im Screenshot sichtbare Variable Buffer ist die Buffervariable der Registervariable.

Oh Mann, ich hoffe das ist jetzt nicht zu starker Tobak, die Skripte des EDips sind teilweise schon aus der V1, manchmal checke ich sie selbst nicht mehr.:smiley:

Also nächstes kommen dann die Verweise auf das was IPS tun soll wenn am Edip was gedrückt wurde, wäre ja sonst sinnlos:rolleyes:


//================================================================
if ($IPS_VARIABLE  == 18899 /*[.edip\eDip xBee\Buffer]*/)
{
   XBee_SendText($Com, chr(27)."DE");              // Display einschalten
   XBee_SendText($Com, chr(27)."YL".chr(1));       // Beleuchtung ein
   IPS_SetScriptTimer(49774 /*[.edip\eDip Dimmen]*/, $Dimmen); // Dimmerskript in xx Sek.
   if (strlen (GetValue(18899 /*[.edip\eDip xBee\Buffer]*/)) != 4)
   {
      IPS_LogMessage("EDIP",
      $IPS_VARIABLE." / ".$Raumwechsel." / ".$Com." / ".$Dimmen);
      switch ($Raumwechsel)
      {
      // Touchtaste für Raumänderung
      case "Keller":
         IPS_RunScript("eDip_Keller_Init");
      break;
      case "Erdgeschoss":
         IPS_RunScript(44881 /*[.edip\Erdgeschoß\Erdgeschoß Initialisierung]*/);
      break;
      case "Obergeschoss":
         IPS_RunScript(58738 /*[.edip\Obergeschoß\Obergeschoß Init]*/);
      break;
      case "Dachgeschoss":
         IPS_RunScript("eDip_DG_Init");
      break;
      case "Status":
         IPS_RunScript("eDip_Status_Init");
      break;
      case "Haupt":
         IPS_RunScript(54620 /*[.edip\eDip Startbildschirm]*/);
      break;
      case "Wohnzimmer":
         IPS_RunScript(17819 /*[.edip\Erdgeschoß\Wohnzimmer\Wohnzimmer Initialisierung]*/);
      break;
      case "Terrasse":
         IPS_RunScript("edip_Terrasse_Init");
      break;
      case "Schlafzimmer":
         IPS_RunScript(10884 /*[.edip\Obergeschoß\Schlafzimmer\Schlafzimmer Init]*/);
      break;
      case "Taste-PV-Anlage":
         IPS_RunScript(36992 /*[.edip\Status\PV-Anlage\PV-Anlage Initialisierung]*/);
      break;
      }
   }
   else
   {
      IPS_LogMessage("EDIP",
      $IPS_VARIABLE." / ".$eingabe." / ".$Com." / ".$Dimmen);
      switch ($eingabe)
      {
      // Touchtaste für Variablenänderung
      case "1":
    IPS_RunScriptEx(50523 /*[Status\Heizungsanlage (zu löschen)\Heizungsteuerung\Warmwasser\Warmwasser Automatikübersteuerung]*/, Array("IPS_VALUE" => true));
      break;
      case "2":
    IPS_RunScriptEx(50523 /*[Status\Heizungsanlage (zu löschen)\Heizungsteuerung\Warmwasser\Warmwasser Automatikübersteuerung]*/, Array("IPS_VALUE" => false));
      break;
      case "3":
    IPS_RunScriptEx(14529 /*[Status\Heizungsanlage (zu löschen)\Heizungsteuerung\Heizung\Heizung Automatikübersteuerung]*/, Array("IPS_VALUE" => true));
      break;
      case "4":
    IPS_RunScriptEx(14529 /*[Status\Heizungsanlage (zu löschen)\Heizungsteuerung\Heizung\Heizung Automatikübersteuerung]*/, Array("IPS_VALUE" => false));
      break;
      case "5":
    IPS_RunScriptEx(38404 /*[Erdgeschoß\Wohnzimmer\Indirekte Beleuchtung\.Indirekte Beleuchtung schalten]*/, Array("IPS_VALUE" => true));
      break;
      case "6":
    IPS_RunScriptEx(38404 /*[Erdgeschoß\Wohnzimmer\Indirekte Beleuchtung\.Indirekte Beleuchtung schalten]*/, Array("IPS_VALUE" => false));
      break;
      case "7":
    IPS_RunScriptEx(59143 /*[Erdgeschoß\Wohnzimmer\Stehlampen\Deckenfluter schalten]*/, Array("IPS_VALUE" => true));
      break;
      case "8":
    IPS_RunScriptEx(59143 /*[Erdgeschoß\Wohnzimmer\Stehlampen\Deckenfluter schalten]*/, Array("IPS_VALUE" => false));
      break;
      case "z":
         SetValueBoolean("FB_Garten_Markise", true);
      break;
      case "{":
         SetValueBoolean("FB_Garten_Markise", false);
      break;
      case "x":
         SetValueBoolean("FB_Teich", true);
      break;
      case "y":
         SetValueBoolean("FB_Teich", false);
      break;
      case "d":
         SetValueBoolean("Fernbedienung_S20_-_2.Status", true);
      break;
      case "e":
         SetValueBoolean("Fernbedienung_S20_-_2.Status", false);
      break;
      case "f":
         SetValueBoolean("Fernbedienung_S20_-_3.Status", true);
      break;
      case "g":
         SetValueBoolean("Fernbedienung_S20_-_3.Status", false);
      break;
      case "h":
         SetValueBoolean("Wohnzimmer_FHT_edip_plus", true);
      break;
      case "i":
         SetValueBoolean("Wohnzimmer_FHT_edip_minus", false);
      break;
      case "j":
         SetValueBoolean("Wohnzimmer_FHT_edip_Senden", false);
      break;
      case chr(201):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => false, "EDIP_SZ" => 38255));
      break;
      case chr(200):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => true, "EDIP_SZ" => 38255));
      break;
      case chr(203):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => false, "EDIP_SZ" => 42691));
      break;
      case chr(202):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => true, "EDIP_SZ" => 42691));
      break;
      case chr(205):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => false, "EDIP_SZ" => 39574));
      break;
      case chr(204):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => true, "EDIP_SZ" => 39574));
      break;
      case chr(207):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => false, "EDIP_SZ" => 21442));
      break;
      case chr(206):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => true, "EDIP_SZ" => 21442));
      break;
      case chr(208):
    IPS_RunScriptEx(49833 /*[Obergeschoß\Schlafzimmer\Schalfzimmeraktoren schalten]*/, Array("IPS_VALUE" => true, "EDIP_SZ" => "SZ_ALLES_AUS"));
      break;
      }
   }
}

Dieser Part sollte eigentlich selbsterklärend sein.

Da dieser Teil auch im selben Skript liegt wie der Erste wird zuerst einmal gecheckt ob das Skript durch den Buffer der RegVar aufgerufen wurde.

Nun folgt wieder eine Abfrage ob ein Raum geändert wurde oder eine Taste mit Funktion gedrückt wurde.

Nach dieser Entscheidung werden verschiedene Skripte aufgerufen oder Variablen geändert die wiederrum andere Skripte triggern.

EINFACH! Nach Jahren des bastelns schon :cool:

Hallo Jannis, Hallo WGreipl,

super, vielen Dank!!!

An der Registervariable habe ich etwas geknobelt, das Einlesescript konnte ich mit Anpassung der ObjektIDs 1:1 übernehmen.

Und nach 2h war das fertig:

  
// Tasten / Schalter setzen
$x3 = "Zeile1"."\x7C"."Zeile2" ;
edip("DL"); 	//Bildschirm löschen
edip("AL,0,1"); 	//Touchbereiche löschen
edip("AE,11") ;      //Touch Rahmenform definieren = abgerundet
edip("AI,1") ;        //Touch invertieren ein
edip("AT,50,50,110,80,105,106, $x3, 0") ; //Touch Taste definieren

zur weiteren Übung:


// Bar-Touch definieren
edip("DL"); 	//Bildschirm löschen
edip("AL,0,1"); 	//Touchbereiche löschen
edip("AE,11") ;      //Touch Rahmenform definieren = abgerundet
edip("AI,1") ;        //Touch invertieren ein
edip("BR,1,50,50,220,80,0, 100, 1,1") ; //Bar-Touch definiert
edip("BA,1,60") ; 	//Bar Startwert definiert
edip("AB,1") ; 	//Bar-Touch definiert
edip("AQ,1") ; 	//Bar-Wert senden


die „edip“-Funktion ist genial. Nochmals vielen Dank an Euch beide!

Gruss NBA

Sagt mal,

wie macht ihr das, wenn ihr Werte mit Komma usw. sendet wie z.B. Temperaturwerte.
Irgendwie hat mein eDip Probleme wenn da Kommata oder Punkte mit drin sind.

Kleiner Hinweis würde mir genügen …

Grüße,
Doc

z.B. so.

RegVar_SendText($XBee, chr(27)."ZZ".chr(2).chr(2).chr(0));
   $Temp = GetValue(35017 /*[Wetterstation\Wetterstation Nidda\Temperatur]*/);
   $Temp = number_format($Temp, 1, ".", ".");
   if ($Temp <= 3)
   RegVar_SendText($XBee, chr(27)."ZR".chr(55).chr(11)."~$Temp~".chr(0));
   else
   RegVar_SendText($XBee, chr(27)."ZR".chr(55).chr(11)."$Temp".chr(0));

Hallo Rainer,

was machst du da?
Formatierst du da von Float nach String?

Mit senden von Punkten ist nun klar aber wie bekommt man das Grad (°) Symbol mit, das eDip lässt das immer weg.
Gibt es dafür auch einen Trick oder muss das im eDip irgenwie noch hinterlegt werden.
Versuche gerade das alles aus IPS heraus zu machen. Merke aber gerade, dass das eDip dann doch etwas langsam wird, wenn es etwas komplexer wird.

Grüße,
Doc

Formatierst du da von Float nach String?
Wo?

aber wie bekommt man das Grad (°) Symbol mit,
.chr(248) wenn es nicht geht musst Du es im eDIP definieren. Unter Charatercodes ‚°‘ = 248 eintragen.

Merke aber gerade, dass das eDip dann doch etwas langsam wird, wenn es etwas komplexer wird.

Das wird noch viel langsamer wenn Du Bilder überträgst, zumindest wenn sie größer sind.

Hallo Jungs,

Das wird noch viel langsamer wenn Du Bilder überträgst, zumindest wenn sie größer sind.

deswegen sollte man auch alles ins EDIP packen was nur geht. Ich sende nur Variablen und spreche Grafiken an die sich auf dem EDip befinden, aber das brauche ich ja Rainer nicht erzählen (dessen EDIP 64kB hat) :smiley:

(dessen EDIP 64kB hat)

Ich auch :stuck_out_tongue:

Hallo zusammen,

nach einer Stromunterbrechung verbindet sich der Rechner automatisch mit dem Silex. IPS erzeugt jedoch Fehlermeldungen.

Wenn ich den seriellen Port in der edip-Instanz schliesse und wieder öffne funktioniert alles wieder.

Gibt es einen Befehl, um das im Script prophylaktisch zu machen?

Gruss NBA