Instanz-id gezielt definieren

Hallo,

alsooooooooooo:

Da ich alles in allem 11 Zimmer steuere, sei es FHT oder RST, ich habe nur 2 Scripts, einmal FHT_MODUL und einmal RST_MODUL. So, durch einen Loop bearbeite ich jetzt alle Zimmer nacheinander ab. Dabei kriegt das „Modul“ je nach Zimmer eben andere Variablen zugeteilt. Mein RST_MODUL ist auf zwei Rolläden abgestimmt, also 2 Instanz-Id’s. Manche Zimmer haben aber nur 1 Rollade. So, und hier habe ich in den Global_Define Variabeln für Rollade #2 als Instanz-Id einfach 00000 eingegeben. Nur, nun meckert IPS kräftig, so eine Instanz würde es nicht geben. Klar, diesen Teil des Programmes wird normalerweise ja auch nicht bearbeitet, da diese Rollade ja auch nicht existent ist.

So, dazu meine Frage:
1.Kann ich nicht eine Instanz erstellen und dann irgendwo dir Id auf 00000 setzen?
2.Oder andersrum gefragt: Kann man nicht in IPS eine Dummy-Instanz integrieren, so à la Print „…“ > dev/nul ?? (Ausgabe NULL)

Naja, da ich sicherlich der einzige wieder bin der das braucht, wäre sicherlich Frage 1 mehr angebracht !

mfG Franz

  1. Variante: $variable mit der ID leer lassen und in diesen Fall die Aktion nur bei !empty($variable) ausführen.

Tommi

Danke dir für deine immer hilfreichen Vorschläge!

Mein Problem ist eben PHP. Ich wusste gar nicht dass es einen Befehl „empty“ gibt. Ich werde das mal irgendwie einbauen.

Nochmals danke

mfG Franz

errmm, tommi,

das geht nicht! Wenn ich bei der Variable das Feld einfach leer lasse, meckert der Parser "Unexpected „;“ in line …

Wie kann ich also eine Variable „leer“ lassen ?

hier ein Auszug aus meinem Script lobal_Defines :

// RST VARIABLES
$shutter_enabled    = GetValueBoolean("BATH1_HMI_ENABLE_SHUTTER");
$RST_trigger        = GetValueString("BATH1_RST_TRIGGER");
$status_RST_1       = GetValueBoolean("BATH1_FS20RST_1");
$status_RST_2       = GetValueBoolean("BATH1_FS20RST_2");
$RST_1_id           = 52678;
$RST_2_id           = 00000;
$shutter_1_manual   = GetValueInteger("BATH1_FS20RST_SHUTTER_1_MANUAL");
$shutter_2_manual   = GetValueInteger("BATH1_FS20RST_SHUTTER_2_MANUAL");

wenn ich jetzt die Nullen wegmache bei RST_2_id, dann geht es nicht mehr !

mfG Franz

Ich würde die Zeile einfach auskommentieren und mit isset($RST_2_id) prüfen.

Grüße, paresy

leerlassen: $variable=""; bzw. wie paresy vorschlägt, gar nicht erst definieren und dann mit isset() testen.
Wenn Du die Variable aber schon auf 0 gesetzt hast, kannst Du aber genausogut auf ($RST_2_id>0) testen(dann aber die Variable ohne Anführungsstriche definieren, sonst wird es ein String!). Das setzt voraus, das es keine Instance mit <=0 gibt.

Tommi

Ja, ich denke mal, ich habe es jetzt begriffen. Da gibt es mehrere Varianten, mehr als ich habe wollte.

Ich habe jetzt die „is_numeric“ version gewählt. Im normalfall steht ja eine Ziffer drin, falls nicht benutzt, dann schreibe ich einfach „n/a“ drin (not available). Das klappt auch

Auf jedenfall, danke Jungs für den Denkanstoss !

mfG Franz