Habe 4 Buttons die bei anklicken eine Zahl schreiben sollen

Hallo!
Habe mal ein „Problemchen“!

Ich möchte mit dem Designer Standby, Komfort, Nacht und Frostschutz schalten.
Dazu habe ich 4 Buttons eingefügt.
Bei der Betätigung des Buttons „Komfort“ soll eine 1 in das untenstehende Script eingetragen werden.
Bei der Betätigung des Buttons „Standby“ soll eine 2 in das untenstehende Script eingetragen werden.
usw…

Also die 1 im Script soll jeweils durch die Zahl die im Button hinterlegt ist ausgetauscht werden.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Konnexumschaltung.ips.php
Trigger  : 
Interval : 
*/
  // 1= Komfort
  // 2= Standby
  // 3= Nacht
  // 4= Frostschutz
  
  EIB_DimValue(10396,1);

?>

Das Script funktioniert wenn ich Execute betätige und jeweils eine andere Zahl von Hand eingebe.

Wer kann helfen?:confused:

Schönen Tag noch Egon

Das Handbuch :smiley:

http://www.ipsymcon.de/~hjh/HelpStudio/html/IPS-Designer-Manual/Das%20Feld%20IPSYMID.html

Ansonsten gibt die Forumsuche zur IPSYMID noch ein paar Beispiele :slight_smile:

paresy

Hallo Paresy!
Das verweisen auf ein Handbuch nützt mir so nichts.:frowning:

Ich habe das Designerforum rauf und runter gesucht.:smiley:
Schönen Tag
Egon

Hallo Egon,

geht das nicht ganz einfach durch:

  1. Anlegen einer Variable „Buttonvar“
  2. Dein Script nutzt diesen Variableninhalt
  3. Deine Buttons starten jeweils ein Script, welches dann die Buttonvar setzt.

Oder geht das so nicht?

Gruss Torro

Nein. Der eleganteste Weg ist:

  • 1 Script (z.B. Konnexumschaltung)
  • 4 Buttons, mit jeweils der Zahl (1-4) in der Property IPSYMID und unter Events OnClick = Konnexumschaltung

Das Script wird dann durch klicken auf den Button gestartet und hat in der Variable $IPS_COMPONENT den Wert von IPSYMID.

Das IPS Script sieht dann so aus:


if($IPS_SENDER == "Designer") {
 EIB_DimValue(10396,$IPS_COMPONENT); 
}

paresy

Naja… aber wenn du dem Hinweis folgend nach IPSYMID gesucht hättest, hätte die Forensuche dich hierhin geführt… Das ist genau das was du suchst. Ersetze winamp durch EIB - fertig :wink:

Gruß,

Toni

Hallo Toni, Paresy!
Danke euch alle für die Hilfe.
Da tut sich nichts.
Wie kann ich auslesen ob der Wert im Script „ankommt“?
Hab das mal von Toni probiert, Fehlermeldung.
Was könnte da falsch sein?


$id=10396; //ID von Eib_Adresse Konnexumschaltung

switch ($IPS_COMPONENT) // enthält die in IPSYMID hinterlegte Kennung
      {
      case "1": EIB_DimValue($id);
      break;
      case "2": EIB_DimValue($id);
      break;
      case "3": EIB_DimValue($id);
      break;
      case "4": EIB_DimValue($id);
      break;
      }

Vielen Dank im Voraus Egon

Dort steht sehr wahrscheinlich drin woran es liegt. Wenn du sie nicht selbst interprätieren kannst, so verrat sie uns ruhig.

Lesen bildet ja bekanntlich. Hier hab ich Futter für dich… :wink:
echo oder print gibt Variablen/Text/Zahlen aus. mit IPS_Logmessage kannst du auch etwas ins Kernel-Fenster schreiben.

Gruß,

Toni

moment…

EIB_DimValue erwartet mehr parameter… machs doch so wie du es schon ausprobiert hattest…

case "komfort": EIB_DimValue($id, 1);

und wenn du die 1 gleich durch die Variable ersetzt und alles dadurch überflüssig gewordene kürzt, landest du bei dem Code, den Paresy, wie ich grad sehe, mit mir zeitgleich gepostet hat :rolleyes:

Gruß,

Toni

Hallo Toni!
Ich habe eine Variable Buero_Konnexmodus.
Ich weiss nur nicht wo ich die hintun soll??
Fehlermeldung:
<b> Notice</b>: Undefined Variable:IPS_COMPONENT in <b> usw…
Das mit echo ist bekannt
echo $IPS_COMPONENT; geht aber nicht :frowning:
Schönen Gruß
Egon

Hallo!
Vielen Dank an alle!:slight_smile: :slight_smile:


if ($IPS_SENDER == "Designer")
    //{
     switch ($IPS_COMPONENT)
             {
              case "1"    : EIB_DimValue(10396,1);
                                break;

              case "2"      : EIB_DimValue(10396,2);
                                break;

              case "3"      : EIB_DimValue(10396,3);
         //    echo $IPS_COMPONENT;
       }

Schönen Tag noch Egon::slight_smile:

Hallo,

nur mal noch eine Bemerkung dazu: Diese Variante mag sicher sauber funktionieren, aber der Fall des Neustarts von IPS wird so sicher nicht abgedeckt, oder? Wie steht denn nach einem Neustart von IPS das dann?

Gruss Torro

Ich kenne die Feinheiten des EIB-Moduls nicht, aber beim FS20 zum Beispiel werden die InstanzIDs ja auch in den Settings gespeichert… Sollte also gehen.

Oder was genau meinest du?

Toni

Also feststeht, wenn du IPS_COMPONENT benutzt, kannst du das Skript nicht per ‚Execute‘ probieren, sonst wirst du diese Fehlermeldung kriegen.
Das Kannst du aber fein aussbügeln mit

if (isset($IPS_COMPONENT))

Für das ‚es tut sich nichts‘, kann es nicht sein, dass du zwar IPSSYMID definiert hast, dennoch bei den Buttons bei ‚OnClick‘ vergessen hast, den Namen des Skriptes anzugeben, den IPS ausführen soll beim drücken eines Tasters?

mfG Franz

Hallo Franz!
Ich schrieb;
Problem gelöst.:smiley:
Ich hab erst rauskriegen müssen wie IPSYMID funktioniert.
Und was dann im Script wo wie hinkommt…

Hallo Torro!
Mit diesen Zahlen 1-4 verändere ich die „Zustände“ des EIB-Raumtemp.reglers.
D.h. die Zustände-Tag-Nacht usw. bleiben so lange drin bis ich diese wieder ändere(Mit den Buttons oder Timer_Wizard). Oder eben vor Ort:)

Schönen Gruß
Egon

:confused: Welches Problem soll’s bei dem Skript mit einem Neustart von IPS geben? Ich komme bei dieser Überlgung jetzt nicht ganz mit…

Für die Funktion würde ich dann aber eher EIB_Scale() verwenden und nicht EIB_DimValue()… DimValue ist halt eher für Dimmer (auch wenn’s damit geht wegen gleichen Datentypen).

Gruß
Olli