Timer Event

Schöner Code, kostet mich jetzt sicher wieder 14 Tage meines Lebens bis ich ihn verstanden habe :slight_smile:

So, nun steht bei Daten 0 0 0 0 :confused:

Steht das immer dort? Auch wenn das Edip das macht was es soll?

Ich frage nach um herauszufinden ob deine Debugausgabe richtig funktioniert…

Ja, steht immer da.

Sorry, Fehler meinerseits…

Die eine Zeile muss heissen:


   $s = $s.intval(ord(substr($daten,$i,1)))." ";

Hmm,

es gibt hier Unstimmigkeiten zwischen den Zeiten. Com-Variable und debug stimmen überein.

Custom liefert teilweise gar nichts.

Und du hast deine Variable mit dem Event „OnUpdate“ (also NICHT „OnChange“ oder so) mit dem Skript verbunden?

soderle, jetz haben wir auch Daten :slight_smile:

27 65 1 68
27 65 1 79

usw. sind die Daten von den Tasten

Ändert aber an der Sache nicht´s.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Daten_Edip.ips.php
Trigger  : 
Interval : 
*/


  //Buffer auslesen
  $daten = GetValueString("edip_daten");
  $eingabe = substr($daten, -1);
  $s = "";
  for($i=0; $i<strlen($daten); $i++)
{
  $s = $s.intval(ord(substr($daten,$i,1)))." ";
}
   IPS_LogMessage("daten:", $s);
  //IPS_LogMessage("$daten", " ");
  //echo ("$eingabe");
  switch ($eingabe)

{
  //Touchtaste-Hauptmenü startet Runscript
 // case "M":
  //IPS_RunScript("edip_test");
  //break;
  //Touchfeld startet Runscript
  case "E":
  IPS_RunScript("edip_test");
  break;
  //Touchtaste Wetter startet TM-Wetter
  //case "W":
  //COMPort_SendText(40079, chr(27)."MT".chr(20));
  //break;
  //Touchtaste Heizung startet TM-Heizung
  //case "H":
  //COMPort_SendText(40079, chr(27)."MT".chr(21));
  //break;
  
}
?>

Hi Olli,

nur um Missverständnisse auszuräumen.

Es wird nicht´s getriggert.

der Code E ruft das Script auf, wenn es denn geht :slight_smile:

Siehe oben das letzte php

Die 27 65 1 sieht doch schonmal gut aus - das ist der Header den auch Paresy im Code hatte :slight_smile:

Die 68 ist ein grosses „D“ - das hast du nicht in deinem Code… und die 79 ist ein grosses „O“.

Beides Characters die du in deiner switch() Anweisung nicht behandelst… also ist es richtig das nicht’s passiert. Was sagt denn die Dokumentation zum Edip zu diesen Bytes?

Doch das stimmt schon.

Das ist der Tatstencode der zurückgeliefert wird.

Also das letzte byte. Angegeben in Dezimalzahl. E= 69

Kommt ja auch alles an, nur nicht im Kernel/custom

Und das Display startet nicht.

a) die Bytefolgen die du gepostet hast sind doch aus Kernel/Custum von der for() Schleife - oder?

b) deine Variable $eingabe besteht aus dem letzen Zeichen (Byte) des Strings von $daten und das ist in deinem Beispiel „D“ bzw. „O“

mach doch mal in deiner switch() Anweisung folgendes rein:


  case "D": IPS_LogMessage("Edip: ", "ich bin ein D!!"); break;
  case "O": IPS_LogMessage("Edip: ", "ich bin ein O!!"); break;

a) die Bytefolgen die du gepostet hast sind doch aus Kernel/Custum von der for() Schleife - oder?

Ja, als Beispiel was rein kommt.

b) deine Variable $eingabe besteht aus dem letzen Zeichen (Byte) des Strings von $daten und das ist in deinem Beispiel „D“ bzw. „O“

Eben als Beispiel. rein kommt, wenn was kommt im Moment nach letzten Stand des Scriptes 27 65 1 69, also letzter Buchtstabe „E“. ich könnte auch $45 verwenden.
Das alles ändert nichts an der Tatsache das die Daten nicht im Kernel/Custom ankommen

Die andere Seite ist, was ich mich frage, warum geht es bei anderen mit EDIP und bei mir nicht.

Fängt schon an mit EventTimer :confused:

Verstehe wer das will, ich nicht.

Hallo Ihr „Nachtarbeiter“:smiley:

bei mir läuft es prima mit dem eDip:)

Die Touch-Codes fange ich nach paresy Beispiel ab.

//Buffer auslesen
$event=GetValueString("LCDReg");

//Events auswerten
if(substr($event, 0, 3)==chr(27).chr(65).chr(1)) {
//Button gedrückt
switch(ord($event{3}))
{


    case 101:
   IPS_RunScript("eDipWetter");
   break;
   case 100:
   IPS_RunScript("eDipMain");
   break;
   
   case 102:
   IPS_RunScript("eDipHeizung");
   break;
   
   case 103:
   IPS_RunScript("LCDCall");
   break;

   case 104:
   IPS_SetScriptTimer("eDipAuto",10);
   break;

    case 105:
   IPS_SetScriptTimer("eDipAuto",0) ;
   break;

    case 106:
   IPS_SetScriptTimer("eDipAus",1) ;
   break;

Jürgen

dann bin ich jetzt auch ratlos… wenn nicht’s reinkommt ist es schwierig was auszuwerten. Merkwürdig: wenn Register Variable was brauchbares in der verknüpften Variable anzeigt dann muss diese Variable eigentlich die Daten auch an das dazu getriggerte Skript senden… es sei denn sie überschreibt sich direkt wieder…

@Jürgen
sieht gut aus :slight_smile: vieleicht sollte ich mir auch so ein Edip zulegen… aber das mit dem Gehäuse ist nicht so wirklich mein Fall :frowning:

]Hallo Ihr „Nachtarbeiter“

Einer muss ja Arbeiten, wenn es der PC ist :slight_smile:

Moin Jürgen, danke noch mal für den Tip mit dem Punkt :smiley:

Das ist ja alles schön und gut, deswegen sage ich ja, bei 100terten geht es, nur bei mir nicht.
Ob jetzt paresy´s eingabe besser ist mag ich im Moment noch nicht vernehmen.
Fakt ist aber das

substr($daten, -1)

den letzten Code schreibt.

Ob das nun Buchstaben oder Zahlen sind, ist wurscht. Es geht ja auch alles, halt nur nicht immer, nämlich dann, wenn keine Daten ankommen, obwohl sie vorhanden sind.

Das ist das, was ich nicht verstehe :confused:

Wie hast Du denn die Touch-Schalter „gezeichnet“

mit ESC AT oder ESC AK ??

Hast Du eine Radio Gruppe definiert, dann wird nur der downcode gesendet

Jürgen

Hi Jürgen,

weder noch.

Meine Schalter(Touch) sind alle mit AT, AJ, AU, oder AK direkt im Display hinterlegt.
Ich rufe eigentlich nur die TM`s damit auf, alles andere macht IPS, funzt ja auch, bis auf das Daten die vorhanden sind, nicht ausgewertet werden :mad: