$IPS_* was gibt es alles?

Hallo,
ich möchte langsam mal meine „Bastel-/Versuchsscripte“ auf eine „ordentliche“ Programmierung umstellen. Deshalb die Frage, welche $IPS_-Variablen gibt es? Im Wiki sind sie ziemlich verteilt und in der „Online“-Hilfe gibt es keine ;).

Bekannt sind mir:



$IPS_SENDER    (VARIABLE, TIMER, ?)
$IPS_COMPONENT (Wert aus IPSSYMID oder Name des Objektes im Designer)
$IPS_VALUE     (Wert der Trigger-Variablen)

Gibt es noch mehr? Ist die Beschreibung richtig? Ich würde das auch im Wiki bei den Befehlsreferenzen ergänzen ;).

Habt ihr noch mehr Tipps zur „ordentlichen“ Programmierung? Z.B. __debug oder Ähnliches?

Habt ihr noch mehr Tipps zur „ordentlichen“ Programmierung?

Ich denke, diese Frage wird schwer zu beantworten sein, denn jeder muss alleine für sich entscheiden inwiefern er komplexe Skripte schreiben will.

In meinem Fall z.B liegt der Schwerpunkt auf FHTs und FS20 ! HiInzu kommt dann noch Mini-Alarmanlage für Nachtbewegungen im Haus.
Ich führe Logbuch, und protokolliere so zimlich alles was möglich ist.

Ich würde an deiner Stelle anfangen, mal genan festzulegen, wie weit du gehen willst, d.h alle Elemente die du hast.

Mal ein kurzes Beispiel:
Ich habe nur ein einziges FHT Modul, was ich eben 11 Mal aufrufe mit verschiedenen Globalen Variablen, wobei jeder Raum seine eigenen Variablen hat.
Anstelle jetzt im Skript BATH1_FHT_ACTUAL_TEMP aufzurufen und 11 gleiche Skripts zu schreiben, rufe ich nur $room.’_FHT_ACTUAL_TEMP’ auf, wobei dann alle Zimmer in einem Array aufgelistet sind. So sparst du viel Zeit und alles wird sehr übersichtlich !

mfG Franz


  IPS:
  $IPS_SENDER -> Variable, TimerEvent, Execute, Designer, WebInterface, SMSwitch….
  $IPS_SELF -> Scriptname (N/A bei SENDER = WebInterface!)
  
  Bei $IPS_SENDER = Designer
  $IPS_COMPONENT -> gesteuert per IPSYMID
  
  Bei $IPS_SENDER = Variabe
  $IPS_VARIABLE = Variable mit der Variable die getriggert hat
  $IPS_VALUE = Veriablenwert zum Zeitpunkt des Triggers
  $IPS_TRIGER = Art des Triggers z.B. OnUpdate, OnValue, OnChange…
  
  Bei $IPS_SENDER = TimerEvent
  Spezialfall durch Benutzung von IPS_RunScriptEx("Script", Array("TWZ_LASTTIMER"=>$lasttimer));
  $TWZ_LATTIMER ist dann der Zeitpunkt als UnixTimestamp des getriggerten TimerEvents

  Bei $IPS_SENDER = EventHandler
  $IPS_MESSAGETYPE - Typ der Nachricht
  $IPS_MESSAGESENDER - Sender der Nachricht
  $IPS_MESSAGE - Nachricht selbst

  Bei $IPS_SENDER = WebInterface
    'PHP_SELF'
    'PHP_AUTH_USER',
    'PHP_AUTH_PW',
    'REMOTE_ADDR',
    'REMOTE_HOST',
    'REMOTE_USER',
    'REQUEST_METHOD',
    'HTTP_COOKIE',
    'HTTP_USER_AGENT',
    'HTTP_CACHE_CONTROL',
    'HTTP_DATE',
    'HTTP_ACCEPT',
    'HTTP_FROM',
    'HTTP_HOST',
    'HTTP_CONTENT_ENCODING',
    'HTTP_CONTENT_VERSION',
    'HTTP_EXPIRES',
    'HTTP_CONNECTION',
    'HTTP_ACCEPT_LANGUAGE',
    'HTTP_ACCEPT_ENCODING',
    'DOCUMENT_ROOT',
    'REQUEST_URI',
    'SCRIPT_NAME',
    'QUERY_STRING'  

paresy

Ich hab auch noch etwas zu dem Variablen-Wust beigetragen:

[b]SMSWitch:[/b]
$SMSWitch_Sender: Absender der SMS
$SMSWitch_Content: Inhalt der SMS

[b]Kalendarium:[/b]
$Kalendarium_Discription: Termin (Heikes Geburtstag)
$Kalendarium_Value: Wert (21.02.1975)
$Kalendarium_Date: Datum des Termins (21.02.2006)
$Kalendarium_Time: Uhrzeit des Termins (8:00 Uhr)

Es wird im Kalendarium noch einiges dazukommen und in meinem neuen Projekt wird es Weitere geben.

Edit:

Das Kalendarium läuft momentan in einem Beta-Test hier im Forum. Es wird bald eine öffentliche Version geben

Toni

Hallo Franz,

ich rufe anscheinend noch sehr „unkonventionell“ alle akt. Temperaturen per einzelner Scripte ab.

Hast du ein paar Anregungen (Beispiel-Script) für mich? Ich bin lerne gerne in php dazu. Bin mit IPS als absoluter php-n00b angefangen und immer noch blutiger Amateur :confused:

Gruß

Jimmy

Das ultimative Beispiel findest du im Wiki http://www.ipsymcon.de/wiki/index.php/SFHTs

Hallo Guy,
dieser Ansatz ist sehr praktisch. könntest Du mal ein paar php-Zeilen aus deinem script und dem array posten, damit ich es leichter übertragen kann?
Danke
TK

Ich werde das mal alles zusammenpacken und es in einen Post schreiben. Kuckst du hier !

mfG Franz

Wie kann ich die $IPS_MESSAGETYPE nutzen?
Ich kann die nirgenswo verknupfen… nich an eine variable (woruber ich ein script starten kann) und auch nicht als event im script…

Möchte gerne das innere leben des IPS anschauen im designer.
Deshalb möchte ich gerne die system-berichte in einer fur dem designer basierte variable (string mit wort "status : " davor) bekommen…

Fredje

Self hilfe n° 1: RTFM

Uber Eventhandler add-in ein script verknupfen die ausgefuhrt werden soll
Den rest von die parameter : siehe oben

Gibt es bei $IPS_Sender = „RunScript“ auch weiterführende Variablen? Z.B. wer das Script aufgerufen hat?

Gruß Marcel

Das haste da schon schon drin.

IPS_SENDER ‚Variable‘, ‚Designer‘ oder ‚Timer‘. Welche Variable es nun war kannst du dann ja per ‚Event‘ rausfinden

mfG Franz

Ne, wieso?

Wenn ich ein Script über das Timer_Event starten lasse, wird es von diesem über IPS_RunScriptEx aufgerufen. $IPS_SENDER ist dann = „RunScript“. Wenn ich mein Script nun auch noch aus dem Script „XYZ“ mit IPS_RunScriptEx aufrufe, wird doch $IPS_SENDER auch „RunScript“ sein. Daher wäre es interessant, wenn ich wüsste, von welchem Script aus aufgerufen wurde.

Mit weiterführenden Variablen meinte ich $IPS…, die gefüllt werden, wenn $IPS_SENDER = „RunScript“

Leider ist $IPS_SENDER = „RunScript“ auch in der Wiki nicht beschrieben.

Es geht hier nicht um eine Variable, über die getriggert wird. Dann wäre $IPS_SENDER doch auch „Variable“, oder?

Gruß Marcel

Stimmt !

Ich dachte das per RunScriptEx(„name“, parameter) die parameter mitgegeben werden können, aber ehrlich : habe noch nicht probiert und weiss eingentlich nicht ob du parameter mitgeben könntest.

@Marcel

Nein. IPS weiß nicht wer RunScript aufgerufen hat. Da gibt es nix.

paresy

@all Sorry… :o

wunschte mir so etwas

Hallo,

wenn man statt IPS_RunScript die PHP include-Anweisung verwendet, dann liefert $IPS_SELF den Namen des aufrufenden Skripts. Ein include-Skript kann also feststellen, ob es durch Execute oder include aufgerufen wurde. Im include-Fall weiß es dann auch von wem es aufgerufen wurde.

Natürlich ist es nicht in allen Fällen möglich IPS_RunScript durch include zu ersetzen.

Gruß
HJH

Also kann ich michselber nicht anrufen ?
hmm … und jetzt ? Hätte so gerne eine möglichkeit michselber an zu rufen aber in zeit versetzt und mit parameter… bis jetzt nicht weiter gekommen uber string botschafft (variable) die parameter mit zu geben.

include bringt mir hier wenig, da ich ja den IPS Timer verwende, der IPS_RunScript verwendet.

Ist ja auch kein musthave, sondern war nur nicetohave. Mache ich halt zwei Scripte.

Nur wenn es sowas gegeben hätte, und ich hätt es nicht gewusst, hätte ich mich nachher geärgert.

Gruß Marcel