13.07.2015 Aufrufe

Download - IP-Symcon

Download - IP-Symcon

Download - IP-Symcon

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

16. August 2013


© <strong>Symcon</strong> GmbH 2013www.ip-symcon.de


Einführung<strong>IP</strong>-<strong>Symcon</strong> ist eine Software zur Steuerung und Automatisierung für Haustechnik und Industrie.Viele heute am Markt angebotenen Hausautomationssysteme haben den Nachteil einer zu engen Produkt- oderHerstellerbindung. Nur Komponenten eines bestimmten Herstellers lassen sich einsetzen. Produkte anderer Her​kunftsind häufig inkompatibel, und daher nicht verwendbar. Die Überwindung solcher Unverträglichkeiten ist nicht seltenunmöglich, ist aber bestenfalls mit hohen Kosten oder Einschränkungen im Funktionsumfang verbunden. <strong>IP</strong>-<strong>Symcon</strong>dagegen ist eine Software, die nicht von proprietären Bindungen abhängig, und damit in der Lage ist, dieunterschiedlichsten Systeme unter einer ge​meinsamen Oberfläche zu vereinen.Die Steuerungssoftware <strong>IP</strong>-<strong>Symcon</strong> ermöglicht es dem Anwender, z.B. mit den Daten einer Wetterstation beiaufkommendem Sturm rechtzeitig die Markise einzufahren. Schaltbefehle einer Funkfernsteuerung des Herstellers Alassen eine Lampengruppe des Herstellers B als Bestandteil eines Lichtszenarios des Her​stellers C erstrahlen. Geräte, dienormalerweise zueinander inkompatibel sind, können durch <strong>IP</strong>-<strong>Symcon</strong> erfolgreich zusammenarbei​ten.Eine ständig wachsende Bibliothek von Modulen versetzt <strong>IP</strong>-<strong>Symcon</strong> in die Lage, mit den unterschiedlichsten Geräten zukommunizieren. Die Module bil​den die Funktionen dieser Geräte auf eine spezielle Abstraktionsebene ab: die <strong>IP</strong>-<strong>Symcon</strong>typischeEntwicklungsumgebung. Statt einer unüberschauba​ren Menge von herstellerspezifischen Details, sieht derAnwender nur noch die auf das Wesentliche reduzierte Entwicklungsumgebung. Sie erleichtert die Einarbeitung, und istauch von Neueinsteigern schnell zu erfassen.In der Entwicklungsumgebung kann ein Skript direkt selbst geschrieben werden. Hierfür kommt die weit ver​breiteteSkriptsprache PHP zum Einsatz. Einem so erzeugten Skript sind praktisch keine Grenzen gesetzt.Fertige Skripte arbeiten vollständig unsichtbar im Hintergrund. Sie kommuni​zieren über spezielle Variablen undEreignisse mit ihren zugehörigen Modu​len, treten aber auf dem PC nach außen hin nicht in Erscheinung. Um nun auf einGerät oder eine Steuerung Einfluss nehmen zu können oder Informatio​nen darüber zu erhalten, wurde das Dashboardgeschaffen. Mit sei​ner Hilfe ist es möglich, eine für eine be​stimmte Aufgabe maßgeschneiderte Benutzeroberfläche zuerzeugen. Hierfür stehen Windows-typische Tools zur Verfügung, wie z.B. Buttons, Edit-Felder, Labels, DropDown-Listen uvm. Über das Image Tool sind auch grafische Ausgaben möglich. So lassen sich Be​nutzeroberflächen belie​biggestalten, die dann evtl. auch von Laien bedient werden können.


SystemvoraussetzungenHardwareFür den Betrieb von <strong>IP</strong>-<strong>Symcon</strong> ist ein IBM kompatibler PC mit mindestens 256 MB Arbeitsspeicher und 500 MB freierFestplattenspeicher erforderlich.Bei einfachen Steuerungsaufgaben ist ein alter ausrangierter PC völlig ausreichend. Mit steigender Funktionalität - z.B. wieeiner Soundausgabe oder mehreren Grafik-Funktionen - muss die Hardware entsprechend angepasst werden.Für ihren Heim-Server empfehlen wir den Einsatz von energiesparenden Prozessoren, wodurch ihr System dieStromkosten nur geringfügig belastet.SoftwareBetriebssystemWindows 95/98/MEWindows 2000Windows Server (diverse)Windows XPWindows MCEWindows Home ServerWindows VistaWindows 7Windows 8Windows Embedded (diverse)Windows CE / MobileMac OS XLinuxlauffähigneinnein*jajajajajajajanein (nicht getestet)neinnein**ja**** Seit <strong>IP</strong>-<strong>Symcon</strong> 2.5 ist PHP 5.4 enthalten, welches nicht mehr mit Windows 2000 Kompatibel ist. PHP Bugtracker** Sie können <strong>IP</strong>-<strong>Symcon</strong> in einer VM in z.B. Parallels/VMWare betreiben.*** <strong>IP</strong>-<strong>Symcon</strong> läuft nicht nativ unter Linux, kann aber mit Wine emuliert werden. Mehr Informationen


NutzungsrechteEine <strong>IP</strong>-<strong>Symcon</strong> Lizenz berechtigt Sie, <strong>IP</strong>-<strong>Symcon</strong> beliebig oft in Ihrem Privathaushalt zu installieren. Fürgewerbliche Installationen wird für jeden im Betrieb befindlichen Server/Rechner eine separate <strong>IP</strong>-<strong>Symcon</strong> Lizenzbenötigt. Für eine Online-Installation wird eine gültige Subskription benötigt. Erstellen Sie bitte unbedingt BackupsIhrer Installation, falls Sie <strong>IP</strong>-<strong>Symcon</strong> nach Ablauf Ihrer Subskription auf einem Rechner installieren wollen.Für die Dauer Ihrer Subskription, sind Sie berechtigt Updates vom <strong>IP</strong>-<strong>Symcon</strong> LiveUpdate zu beziehen. Sobald IhreSubskription abgelaufen ist, können Sie diese im <strong>IP</strong>-<strong>Symcon</strong> Shop verlängern lassen. Bei einer abgelaufenenSubskription wird der erworbene Zeitraum ab dem Kaufdatum des Updates gerechnet. Sollte die Subskription nochgültig sein, wird der Zeitraum hinzuaddiert.Das Ablaufdatum Ihrer Subskription können Sie im zweiten Schritt des LiveUpdates ablesen.Die <strong>IP</strong>-<strong>Symcon</strong> Management-Konsole (inkl. Dashboard) können Sie ohne <strong>IP</strong>-<strong>Symcon</strong> lizenzfrei vom <strong>IP</strong>-<strong>Symcon</strong>Server herunterladen und automatisch durch das integrierte LiveUpdate aktualisieren.


SchnelleinstiegBevor wir uns näher mit den vielen Möglichkeiten der Hardwareauswahl beschäftigen, wollen wir uns an dieser Stelleeinigen typischen Anwendungsbereichen zuwenden, die mit <strong>IP</strong>-<strong>Symcon</strong> umsetzbar sind und keine weiteren Gerätevoraussetzen.Beispiel 1: E-Mail BenachrichtigungFalls Sie per E-Mail benachrichtigt werden wollen, wenn beispielsweise in Ihrem Smart-Home die Haustür oder einFenster (Sensoren vorausgesetzt) geöffnet werden oder wenn eine bestimmte Person anwesend ist (Anwesenheits-Kontroll-Modul vorausgesetzt), ist dies recht einfach zu bewerkstelligen. Dies kann einerseits für eine erhöhte Sicherheit(z.B., wenn sich ein Einbrecher an einem Ihrer Fenster zu schaffen macht) oder aber andererseits auch für eine Steigerungdes Komforts (z.B. dadurch, dass Sie wissen, wann Ihre Frau abends zu Hause ist) sorgen. Auch eine Benachrichtigung aneinem bestimmten Zeitpunkt (z.B. als Erinnerung) ist umsetzbar.<strong>IP</strong>-<strong>Symcon</strong> bietet Ihnen die Möglichkeit, sich eine E-Mail schicken zu lassen, um Sie auf verschiedenste Dinge oderVeränderungen hinzuweisen.1. E-Mail zur bestimmten ZeitInstanz erstellenUm sich als Erinnerung eine E-Mail zu einem bestimmten Zeitpunkt senden zu lassen, müssen Sie zuerst eine sogenannte Instanz erstellen. Instanzen repräsentieren z.B. Geräte, die an <strong>IP</strong>-<strong>Symcon</strong> angeschlossen sind. Diese könnensowohl konfiguriert werden als auch Befehle erhalten.Sie können neue Instanzen anlegen, indem Sie auf der Startseite der Konsole unter “Objekte erstellen” auf “Instanzhinzufügen” klicken oder unter “Objektbaum” in der “logischen Baumansicht” per Kontextmenü den Punkt “Instanzhinzufügen” auswählen. Die zweite Möglichkeit hat den Vorteil, dass die Instanz direkt unterhalb des von Ihnenausgewählten Objekts erstellt wird und nicht erst hinterher einsortiert werden muss.Im Menü “Instanz hinzufügen” klicken Sie nun auf “(Sonstige)”, dann auf “E-Mail senden (SMTP)” und bestätigenzweimal mit “Weiter” und einmal mit “OK”.Im Menü “E-Mail senden (SMTP)” müssen Sie nun Ihre persönliche Daten eintragen.


Bei Provider wählen Sie den Provider aus, den Sie für Ihre E-Mail-Adresse nutzen. “Host”, “Port” und “Benutze SSL”(Verschlüsselung) werden nun automatisch konfiguriert und bedürfen keiner weiteren Einstellung mehr. Sollte IhrProvider nicht auswählbar sein, bleiben Sie bei “(benutzerdefiniert)” und erkundigen sich bei Ihrem Provider nach denkorrekten Einstellungen (Stichwort: SMTP) und tragen diese dann ein. Unter “Benutze Authentifizierung” müssen nunBenutzername und Passwort Ihres E-Mail-Postfaches eingetragen werden. Der “Absender-Name” kann frei gewähltwerden. Er wird später bei E-Mail-Eingang in Ihrem Postfach als Absender angezeigt. Bei “Absender-Adresse” und bei“Empfänger” können Sie nun Ihre E-Mail-Adresse eintragen.Auch das Eintragen von zwei verschiedenen E-Mail-Adressen ist hier möglich. Achten Sie jedoch darauf, dass dieEinstellungen des Providers der Absender-Adresse korrekt sind (siehe oben). Bei der “Absender-Adresse” handelt essich um die Adresse, die später bei E-Mail-Eingang als Absender-Adresse angezeigt wird, während “Empfänger” dieAdresse darstellt, an die <strong>IP</strong>-<strong>Symcon</strong> eine Nachricht verschickt.Nachdem Sie alles korrekt ausgefüllt haben klicken Sie auf “Übernehmen”. Jetzt können Sie sich im unteren Feld von <strong>IP</strong>-<strong>Symcon</strong> eine Testnachricht zu Ihrer E-Mail-Adresse schicken. Kommt diese in Ihrem E-Mail-Postfach an, bestätigen Sieim Menü “E-Mail senden (SMTP)” mit “OK”.Ereignis erstellenNun erstellen Sie ein sogenanntes Ereignis. Ereignisse können bestimmte Vorgänge bei bestimmten Bedingungen oderZeitpunkten starten. In diesem Beispiel soll zu einem bestimmten Zeitpunkt zur Erinnerung eine E-Mail versandt werden.Sie können neue Ereignisse anlegen, indem Sie auf der Startseite der Konsole unter “Objekte erstellen” auf “Ereignishinzufügen” klicken oder unter “Objektbaum” in der “logischen Baumansicht” per Kontextmenü den Punkt “Ereignishinzufügen” auswählen. Die zweite Möglichkeit hat den Vorteil, dass das Ereignis direkt unterhalb des von Ihnenausgewählten Objekts (in unserem Fall die E-Mail-Instanz) erstellt wird und nicht erst hinterher einsortiert werden muss.Jetzt erscheint das Menü “Ereignis hinzufügen”. Hier wählen Sie in unserem Fall “Zyklisches Ereignis”, denn Sie wollenja stets eine E-Mail zu einem bestimmten Zeitpunkt erhalten.


Nun müssen Sie genau eintragen, wann die Erinnerung per E-Mail erfolgen soll. Dies ist sinnvoll, wenn Sie beispielsweisewährend der Arbeit im Büro (Montag bis Freitag) per E-Mail daran erinnert werden wollen, nach der Mittagspause (um14:20 Uhr) ein bestimmtes Medikament einzunehmen. Klicken Sie danach auf “Weiter”.Sie wählen dann bei “Aktion” “Gerät ausführen” und bei “Ziel” die zuvor erstellte Instanz (siehe 1.) aus. Jetzt ist es vonentscheidender Bedeutung, dass Sie bei “Funktion” “SMTP_SendMail” auswählen, da ansonsten keine E-Mail gesandtwerden kann. Bei Parameter haben Sie nun die Möglichkeit die Nachricht einzugeben, die Sie zum ausgewähltenZeitpunkt per E-Mail erhalten wollen. Bestätigen Sie nun mit “Weiter” und danach mit “OK” und schon erhalten Siebeispielsweise unter der Woche täglich eine E-Mail ins Büro, die Sie daran erinnert, Ihre Medikamente einzunehmen.2. E-Mail bei bestimmtem EreignisVariable und Ereignis erstellenDas Versenden einer E-Mail an ein bestimmtes Ereignis zu knüpfen, geht ganz einfach.Sie wollen z.B. im Büro eine E-Mail erhalten, wenn Ihre Frau zu Hause eingetroffen ist, damit Sie wissen, wann SieFeierabend machen und nach Hause zum Abendbrot fahren können. Dafür benötigen Sie zusätzlich z.B. entweder eineninstallierten Türsensor an der Haustür oder aber ein Anwesenheits-Kontroll-Modul, das Ihre Frau bei sich trägt.Zum Bewerkstelligen dieses Projekts erstellen Sie eine Variable. Variablen sind im Grunde Datenhalter, die es erstmöglich machen, dass ein An- bzw. Ausschalten (z.B. des Türsensors) funktioniert und im WebFront zu erkennen ist. Inunserem Beispiel stellt die Variable einen imaginären Türsensor dar.


Sie können neue Variablen anlegen, indem Sie auf der Startseite der Konsole unter “Objekte erstellen” auf “Variablehinzufügen” klicken oder unter “Objektbaum” in der “logischen Baumansicht” per Kontextmenü den Punkt “Variablehinzufügen” auswählen. Die zweite Möglichkeit hat den Vorteil, dass die Variable direkt unterhalb des von Ihnenausgewählten Objekts erstellt wird und nicht erst hinterher einsortiert werden muss. Im Menü “Variable hinzufügen”entscheiden Sie sich bei “Typ” nun für “boolean”, denn Sie wollen ja eine E-Mail erhalten, wenn der Türsensor aktiviertwird.Danach klicken Sie auf “Weiter” und wählen dann bei “Eigenes Profil” “~Presence” aus, da die Anwesenheit einerPerson im Haus angezeigt werden soll. Dann klicken Sie zweimal auf “Weiter” und nun geben Sie einen Namen für IhreVariable ein (z.B.: Frau ist zu Hause) und klicken abermals auf “Weiter”.Jetzt müssen Sie nochmals ein Ereignis (siehe 1.) erstellen. Diesmal wählen Sie “Ausgelöstes Ereignis”, klicken auf“Weiter” und wählen bei “Variable” die eben erstellte Anwesenheitsvariable aus.“Auslöser” ist in unserem Beispiel “Bei bestimmtem Wert”, “Wert” ist “True” (True=An; False=Aus) und bei“Nachfolgende Ereignisse ausführen” gehört ein Häkchen hin.


Sie wählen dann bei “Aktion” “Gerät ausführen” und bei “Ziel” die zuvor erstellte Instanz (siehe 1.) aus. Jetzt ist eswieder von entscheidender Bedeutung, dass Sie bei “Funktion” “SMTP_SendMail” auswählen, da ansonsten keine E-Mailgesandt werden kann. Bei Parameter haben Sie nun die Möglichkeit die Nachricht einzugeben, die Sie zum ausgewähltenZeitpunkt per E-Mail erhalten wollen. Bestätigen Sie nun mit “Weiter” und danach mit “OK” und schon erhalten Sieunter der Woche täglich eine E-Mail, die Sie daran erinnert, Feierabend zu machen und nach Hause zu fahren, um dasAbendessen nicht zu verpassen. Allerdings natürlich nur, wenn Sie den Türsensor zuvor gekauft, eingebaut und mit <strong>IP</strong>-<strong>Symcon</strong> verbunden haben. Gleiches gilt natürlich für das Anwesenheits-Kontroll-Modul.


Video-TutorialsFür den schnellen Einstieg in <strong>IP</strong>-<strong>Symcon</strong> finden Sie hier einige nützliche Video-Anleitungen:<strong>IP</strong>-<strong>Symcon</strong> Installation<strong>IP</strong>-<strong>Symcon</strong> Live UpdateDer ‘Klassiker’: die FS20 SteckdoseDer ‘Nachfolger’: HomeMatic AktorAndere Systeme: z.B. 1-WireWozu dienen ‘übergeordnete Instanzen’?Mein erstes SkriptEreignis: WeckerEreignis: TriggerFenster verschieben und andockenPraxis: Befehl hinzufügenWeitere Beispiele finden hier Sie in unserem Forum.


InstallationDie Installation über den Live-Installer ist nur mit einer gültigen Subskription möglich. Ohne gültige Subskriptionkönnen Sie die Installation von der CD aus ausführen oder Ihre vorhandene Datensicherung der Software wiedereinspielen. Siehe: VerschiebenInstallation<strong>IP</strong>-<strong>Symcon</strong> ist eines der wenigen Programme, das sich sehr sauber installieren und auch wieder rückstandsfreideinstallieren lässt, da es keine Unmenge von Einträgen in der Windows-Registry vornimmt. Letztendlich wird nur derLizenzkey gespeichert. Um <strong>IP</strong>-<strong>Symcon</strong> installieren zu können, benötigen Sie den Live-Installer: <strong>Download</strong>HinweiseUm <strong>IP</strong>-<strong>Symcon</strong> installieren zu können, benötigen Sie eine Internetverbindung. Falls auf dem Ziel-Rechner keineVerbindung vorhanden sein sollte, müssen Sie <strong>IP</strong>-<strong>Symcon</strong> auf einem anderen Rechner installieren und es hinterherauf den Ziel-Rechner kopieren.Ihr Live-Installer überprüft automatisch, ob eine neue Version verfügbar ist. Erlauben Sie bei Bedarf den <strong>Download</strong>einer neuen Version.Erste SchritteStarten Sie den Live-Installer. Folgendes Fenster sollte erscheinen:Wählen Sie “Installieren” und bestätigen Sie mit “Weiter”.Falls <strong>IP</strong>-<strong>Symcon</strong> bereits gestartet oder installiert sein sollte und Sie eine Neuinstallation durchführen möchten,müssen Sie den erscheinenden Dialog zum Beenden/Deinstallieren bestätigen.Akzeptieren Sie die Lizenzbedingungen.Wählen Sie einen geeigneten Pfad aus (z.B. C:\<strong>IP</strong>-<strong>Symcon</strong>) und bestätigen Sie mit “Weiter”.Unter Windows Vista und Windows 7 wird empfohlen, <strong>IP</strong>-<strong>Symcon</strong> nicht in den Programme-Ordner zu installieren,um Probleme mit virtuellen Pfaden zu umgehen. Es vereinfacht die Administration, da Benutzerdaten nicht imProgramData-Ordner abgelegt werden.Lizenzdaten angebenGeben Sie bitte Ihren Benutzername und die Lizenzdatei an, die Sie in einer E-Mail von uns erhalten haben. DerBenutzername entspricht normalerweise Ihrer E-Mail-Adresse, die Sie beim Bestellvorgang angegeben haben.


Ihre Subskription wird nun überprüft.Bedenken Sie bitte, dass Sie nur mit einer gültigen Subskription die neuste Version von <strong>IP</strong>-<strong>Symcon</strong> installieren können.Falls die Subskription abgelaufen ist, können sie im Shop ein Update bestellen: ShopFalls Sie keine Verbindung zum Server herstellen können, überprüfen Sie bitte Ihre Internetverbindung oder dieProxyeinstellungen.Im folgenden Schritt werden alle verfügbaren Pakete angezeigt. Standardeinstellung ist, alle Pakete zu installierenWenn Sie genau wissen, dass Sie bestimmte Pakete nicht benötigen, können Sie diese hier gezielt abwählen.Der <strong>Download</strong> kann je nach Verbindugsgeschwindigkeit einige Minuten in Anspruch nehmenInstallation abschliessenDer <strong>Download</strong> ist beendet. Nach einem Klick auf OK ist die Installation auf Ihrem System fertiggestellt. Abhängig davon,welche der Optionen aktiviert sind, kann nach dem Klick der <strong>IP</strong>-<strong>Symcon</strong> Dienst und/oder das <strong>IP</strong>-<strong>Symcon</strong> Tray gestartetwerden.


UpdateUm <strong>IP</strong>-<strong>Symcon</strong> aktualisieren zu können, benötigen Sie eine gültige Subscription. Sofern Sie diese haben, können Sie dasLiveUpdate aus dem Kontextmenü des Tray-Icons starten. Sobald das LiveUpdate gestartet ist, müssen Sie auf “Weiter”klicken, um zum nächsten Dialog zu gelangen.Der <strong>IP</strong>-<strong>Symcon</strong> Dienst kann gestartet bleiben. Nach dem <strong>Download</strong> werden Sie explizit aufgefordert, diesen zu beenden.HinweiseUm <strong>IP</strong>-<strong>Symcon</strong> aktualisieren zu können, benötigen Sie eine Internetverbindung sowie Administratorrechte.Ihr Live-Installer überprüft automatisch, ob eine neue Version verfügbar ist. Erlauben Sie bei Bedarf den <strong>Download</strong>einer neuen Version.Mögliche Aktualisierungen abrufenZur Aktualisierung muss der <strong>IP</strong>-<strong>Symcon</strong> Server kontaktiert werden, um die neusten Pakete anzufordern. Sollte diesfehlschlagen, so gibt es mehrere mögliche Ursachen:Ihre Subscription ist abgelaufen. Erwerben Sie bitte eine im Shop.Die Proxyeinstellungen sind falsch.Ihre Internet-Verbindung ist nicht aufgebaut.Klicken Sie bitte auf “Weiter”, um zur Paketauswahl zu gelangen.Wenn Sie keine besonderen Pakete abwählen möchten, klicken Sie erneut auf “Weiter”, um mit dem Updatevorgang zubeginnen.Es werden nun die neusten Updates heruntergeladen.Gestartete Programme beendenFalls zu aktualisierende Programme gestartet sind, werden Sie aufgefordert, diese zu beenden. Erst dann kann der Update-Vorgang fortgeführt werden.Aktualisierung abschließenNun werden die Updates installiert. Bitte haben Sie einen Moment Geduld. Abschließend können Sie den Dienst und dieTray-Applikation wieder starten.


VerschiebenAuf demselben Rechner verschiebenFolgen Sie bitte den Deinstallations-Anweisungen, ohne den letzten Schritt “<strong>IP</strong>-<strong>Symcon</strong> löschen” auszuführen.Nun können Sie den <strong>IP</strong>-<strong>Symcon</strong> Ordner an eine beliebige Stelle Ihres Systems verschieben. Sobald Sie die Tray-Applikation starten, müssen Sie den Installationsdialog bestätigen, um den <strong>IP</strong>-<strong>Symcon</strong> Dienst wieder im System zuinstallierten.Auf einen externen Rechner migrierenFalls auf Ihrem neuen Windows-System das VCRedist 2008 noch nicht installiert ist, laden Sie bitte die folgende Dateizusätzlich herunter und installieren diese Vor-Ort manuell. <strong>Download</strong>Um <strong>IP</strong>-<strong>Symcon</strong> auf einen andere Rechner zu migrieren, reicht es, dass Sie den kompletten Ordner auf das Ziel-Systemkopieren. Ein Aufruf der Tray-Applikation (ips_tray.exe) wird Sie auffordern, Ihren Benutzernamen/Lizenzdateianzugeben. Anschließend müssen Sie den Dialog bestätigen, der <strong>IP</strong>-<strong>Symcon</strong> als Dienst im System installiert.Folgende Dinge sollten Sie hinterher überprüfen und ggf. anpassen:Absoluten Pfade bei Skripten und MediendateienSchnittstellenbelegungen (z.B. Com-Ports) auf dem neuen System<strong>IP</strong>-Adressen, wie z.B. ‘Ereignisserver’ bei der HomeMatic CCU oder ‘WebServer’Notwendige Zusatzprogramme, Treiber oder Dienste (z.B. BidCOS) installieren


DeinstallationBevor Sie <strong>IP</strong>-<strong>Symcon</strong> deinstallieren, müssen Sie den Dienst anhalten. Dies können Sie über das Kontextmenü der Tray-Applikation unter dem Menüpunkt “Dienst anhalten” erledigen.Als nächstes müssen Sie über das Kontextmenü den Dialog “Informationen” öffnen. Folgendes sollte zu sehen sein:Drücken Sie “Deinstallieren“, um den Dienst von Ihrem System zu entfernen.<strong>IP</strong>-<strong>Symcon</strong> löschenUm die Deinstallation zu beenden, müssen Sie den kompletten <strong>IP</strong>-<strong>Symcon</strong> Ordner löschen oder in den Papierkorbverschieben.


Lizenz ändernKunden, die z.B. im Zuge einer Update-Verlängerung oder eines Lizenz-Upgrades eine neue Lizenz erhalten haben,können diese in <strong>IP</strong>-<strong>Symcon</strong> einrichten, indem sie im Kontextmenü der Tray-Applikation den Menüpunkt “Information”öffnen.Über den Button “Lizenz ändern” können sie den Dialog öffnen, in dem sie ihren neuen Benutzernamen angeben und dieneue Lizenzdatei auswählen können. Nach dem Bestätigen wird ihre neue Lizenz gespeichert. Bitte beenden Sie den <strong>IP</strong>-<strong>Symcon</strong> Dienst und starten ihn erneut, um die neue Lizenz zu aktiveren.


DatensicherungVor Erstellung einer Datensicherung von <strong>IP</strong>-<strong>Symcon</strong>, ist es erforderlich den <strong>IP</strong>-<strong>Symcon</strong> Dienst zu beenden. Dies könnenSie über das Kontextmenü der <strong>IP</strong>-<strong>Symcon</strong> Tray-Applikation erledigen. Sobald der Dienst beendet wurde, können Sie denvollständigen <strong>IP</strong>-<strong>Symcon</strong> Ordner kopieren und/oder ihn mit einem beliebigen Archivierungsprogramm packen. SofernSie in eigenen Skripten nicht auf externe Ressourcen zugreifen, befinden sich alle wichtigen Dateien innerhalb des <strong>IP</strong>-<strong>Symcon</strong> Ordners. Zur Wiederherstellung einer gesicherten Installation folgen Sie bitte den Anweisungen für dasVerschieben auf ein anderes SystemAutomatische Sicherung der KonfigurationIn <strong>IP</strong>-<strong>Symcon</strong> werden alle wichtigen Einstellungen in der Datei “settings.json” innerhalb vom <strong>IP</strong>-<strong>Symcon</strong> Ordnergesichert. Diese Datei ist also das Herzstück ihrer Konfiguration. Damit Sie, im Fehlerfall, auf eine Sicherungzurückgreifen können, speichert <strong>IP</strong>-<strong>Symcon</strong> bei jedem Start und täglich um 00:00 Uhr eine aktuelle Kopie derEinstellungen im Ordner “backup”. Die maximale Anzahl von Sicherungen beträgt 25 Stück. Sofern dieses Limitüberschritten wird, wird eine alte Sicherung gelöscht.Die Sicherungen werden automatisch mit dem Namen “settings1234567890.json” abgespeichert, wobei "1234567890"durch die aktuelle Unix-Timestamp ersetzt wird. Die höchste Zahl ist somit die aktuellste Sicherung.Die automatische Sicherungen der Konfiguration ersetzen nicht die Erforderlichkeit regelmäßiger Datensicherungen.Einstellungen im Fehlerfall wiederherstellenEin Fehlerfall kann mehrere Ursachen haben z.B.:Ungewollte Änderungen (z.B. falsche Instanzen, Variablen gelöscht,...)Die Einstellungen sind unerwartet “verschwunden”, “gelöscht” oder “leer”. (Dies bei 99 Prozent der Fälle, auf einunerwartetes Beenden der Software zurückzuführen, wie z.B. einen Stromausfall.)Nutzen Sie im einfachsten Fall Ihre vorhandene vollständige Sicherung, die Sie z.B. manuell oder mit einer externenBackup-Software erstellt haben. Dadurch ist auch die Konsistenz zu den vorhandenen Skripten und Medien vollständiggewährleistet. Sofern diese nicht vorhanden sein sollte, können Sie auf eine der oben genannten automatischen Sicherungzurückgreifen. Führen Sie dazu die folgenden Schritte ausSichern Sie vorab den “Backup”-Ordner vollständig.Beenden Sie den <strong>IP</strong>-<strong>Symcon</strong> Dienst.Kopieren Sie eine beliebige (z.B. die mit der höchsten Zahl im Dateinamen) "settings1234567890.json" in denHauptordner.Entfernen Sie die aktuelle "settings.json".Benennen Sie die kopierte "settings1234567890.json" in "settings.json" um.Starten Sie den <strong>IP</strong>-<strong>Symcon</strong> Dienst.Bitte beachten Sie, dass bei jedem Start eine neue automatische Sicherung angelegt wird, die aufgrund des Limits vonmaximal 25 Sicherungen, eine alte löscht. Es ist somit essenziell, dass Sie den “backup”-Order sichern, bevor Sieanfangen alte Sicherungen einzuspielen oder zu testen.Falls Ihre aktuelle Wahl der Sicherung nicht korrekt funktioniert, können Sie eine andere Sicherung probieren. Solltekeine der Sicherungen korrekt funktionieren, erstellen Sie bitte ein Hilfe-Thema im Forum. Hilfeersuche müssendabei mindestens ein Logfile im Anhang haben. Anfragen ohne Logfile können nicht bearbeitet werden.


Migration (V1.0->V2.0)FeatureänderungenGenerelle ÄnderungenServer/Client Design, Windows Dienst + Netzwerkfähige ClientapplikationAlle Objekte (Instanzen, Variablen, Skripte, Events, Medien) haben eine eindeutige ID.Designer (jetzt Dashboard) direkt in die Clientapplikation eingebettetServerseitige ÄnderungenMehr PHP Befehle zum Eingreifen/Konfigurieren von <strong>IP</strong>-<strong>Symcon</strong>Pro Skript können mehrere Timer (jetzt: Ereignisse) erstellt werden.Ereignisse können zu bestimmten Zeitpunkten gestartet werden (Timer Wizard Ersatz!, Kein Importer!).SOAP Schnittstelle (Entwicklerbereich)Bei Fehlern (<strong>IP</strong>S Funktionen) werden diese direkt in PHP Fehlermeldungen ausgegeben.Clientseitige ÄnderungenClientanwendung funktioniert über das Netzwerk/InternetGrafische Instanzenansicht durch Baumansicht ersetztMultilingual (Deutsch/Englisch)Wizards zum Einrichten der ObjekteMehr Drag&Drop MöglichkeitenDocking der einzelnen FensterQuickfilter an den meisten Stellen vorhandenWebFront (Screenshots)WebInterface, welches automatisch vorhandene Geräte visualisiert/schalten lässtEine Variante im iPhone / iTouch Design erlaubt schnellen ZugriffModulspezifische ÄnderungenNative LCN ModuleHomeMatic ModuleProJet/LevelJet ModuleSiLabs USBXpress I/O ModulSiemens S7 SPS ModuleFS20TX/RX zusammengelegt; Das FS20 Modul kann nun senden/empfangen und die Timer emulieren.Aus FS20RX wird FS20EX. Es erlaubt komfortabel eine Mehrkanalfernbedienung einzurichten.Alle WAGO Adressen werden als einzelne Instanzen erstellt. Ermöglicht vernünftige Namensvergabe und Anzeigeim WebInterfaceI/O Module reconnecten sich automatisch solange, bis Sie eine Verbindunge bekommen.WebServer bietet SSL-VerschlüsselungMediaPlayer Modul als Ersatz für das WinampControl. Unterstützt mehrere Soundkarten mit direkterSoundkartenauswahl.ISDN Modul kann nun mehrere Anrufe gleichzeitig bedienen. Beachten Sie bitte die neue Funktionsweise. (SieheISDN Beispiel)Das FS20MS Modul ist jetzt nicht mehr an FS20 gebunden, sondern kann für fast alle Systeme verwendet werden.Link: Shutter ControlWegefallende ModuleDirectX MediaPlayer (eignes MediaPlayer Modul als Ersatz)COM/LAN (SerialPort/ClientSocket als Ersatz)memPIOM34 USBRedLabBTKit<strong>IP</strong>PowerWeggefallende/Geänderte Funktionen (nur die wichtigesten Funktionen angegben)TWZ_ItemExists (Ersatz: Ereignissfunktionen)


TWZ_DeleteItem (Ersatz: Ereignissfunktionen)TWZ_CreateItem (Ersatz: Ereignissfunktionen)<strong>IP</strong>S_UnregisterScript (Ersatz: Skriptfunktionen)<strong>IP</strong>S_RegisterScript (Ersatz: Skriptfunktionen)<strong>IP</strong>S_ScriptExists (Ersatz: Skriptfunktionen)<strong>IP</strong>S_CreateVariable (Ersatz: Variablenfunktionen)<strong>IP</strong>S_VariableExists (Ersatz: Variablenfunktionen)<strong>IP</strong>S_GetVariableType (Ersatz: s.u.)<strong>IP</strong>S_GetVariables (Ersatz: s.u.)LOC_GetLocation_Variable (Ersatz: s.u.)<strong>IP</strong>S_GetInstanceIDs (Ersatz: s.u.)<strong>IP</strong>S_GetModuleInstance (Ersatz: s.u.)SYS_Ping (2. Parameter entfällt)IMGP_SendEvent (Ersatz: <strong>IP</strong>S_SendMediaEvent)SNDP_SendEvent (Ersatz: <strong>IP</strong>S_SendMediaEvent)TTS_Speak (Syntaxänderung + Hinweise: TTS_Speak)MigrationFühren Sie bitte ein Backup von Ihrem alten <strong>IP</strong>-<strong>Symcon</strong> durch.Installieren Sie bitte <strong>IP</strong>-<strong>Symcon</strong> 2.0 in einen neuen Ordner.Stellen Sie sicher, dass der <strong>IP</strong>-<strong>Symcon</strong> Dienst beendet ist. Dies können Sie am grauen TrayIcon erkennen. Einengestarteten Dienst können Sie durch die Funktion „Dienst anhalten“ beenden.Sobald der Dienst gestoppt ist, müssen folgende Dateien aus Ihrem alten <strong>IP</strong>-<strong>Symcon</strong> Ordner in den neuen <strong>IP</strong>-<strong>Symcon</strong>Order kopieren.scripts*web* (für WI<strong>IP</strong>S)web_data* (für WI<strong>IP</strong>S)settings.xmlbricks*php.ini (Pfade anpassen!)Alle PHP Extension DLLs, wenn Sie welche installiert haben (z.B. GD2)Nun können Sie <strong>IP</strong>-<strong>Symcon</strong> starten. Alle Variablen, Skripte, Instanzen sollten mit allen Einstellungen importiert werden.Zum Abschluss der Migration sollten Sie Ihre Skripte auf in der neuen Version von <strong>IP</strong>-<strong>Symcon</strong> nicht mehr vorhandeneFunktionen überprüfen. Ferner müssen Sie alle Zugriffe über Namen durch Zugriffe über IDs ersetzen. Solange Sie aberkeine Geräte umbenennen, können Sie diese Aktion auch bei Bedarf durchführen.KompatibilitätsfunktionenDiese Funktionen sollten nur übergangsweise genutzt werden und so schnell wie möglich gegen die neuen, IDbasierten Funktionen ausgetauscht werden, um die neuen Möglichkeiten ausnutzen zu können.function <strong>IP</strong>S_GetVariableType( $varid ){if(!is_numeric($varid))


$varid = <strong>IP</strong>S_GetVariableID($varid);$var = <strong>IP</strong>S_GetVariable($varid);}switch($var['VariableValue']['ValueType']){case :return "Boolean";break;case 1:return "Integer";break;case 2:return "Float";break;case 3:return "String";break;default:return "Unknown";break;}function <strong>IP</strong>S_GetUpdateTime($id){$v = <strong>IP</strong>S_GetVariable($id);return $v['VariableUpdated'];}function FS20_SetPosition($id, $pos){SC_Move($id, $pos);}function <strong>IP</strong>S_GetVariables(){$result = Array();$varids = <strong>IP</strong>S_GetVariableList();foreach($varids as $varid){$var = <strong>IP</strong>S_GetVariable($varid);$obj = <strong>IP</strong>S_GetObject($varid);}$result[] = Array("name" => $obj['ObjectName'],"type" => <strong>IP</strong>S_GetVariableType($varid),"value" => GetValue($varid),"updated" => (int)$var['VariableUpdated']);}return $result;function LOC_GetLocation_Variable($varid){if(!is_numeric($varid))


$varid = <strong>IP</strong>S_GetVariableID($varid);}return '<strong>IP</strong>-SYMCON\\'.<strong>IP</strong>S_GetLocation($varid);function <strong>IP</strong>S_GetInstanceIDs(){return <strong>IP</strong>S_GetInstanceList();}function <strong>IP</strong>S_GetModuleInstance($instanceid){$instance = <strong>IP</strong>S_GetInstance($instanceid);return Array("instanceid"=> $instance['InstanceID'],"instancestatus" => $instance['InstanceStatus'],"moduleguid"=> $instance['ModuleInfo']['ModuleID'],"packetsreceived" => ,"packetstransmitted" => ,"packetsaccepted" => ,"packetsdropped" => ,"packetsbuffered" =>);}function <strong>IP</strong>S_GetModuleInfo ( $mguid ) {$marray = <strong>IP</strong>S_GetModule( $mguid );$m = Array();$m['name'] = $marray['ModuleName'];switch ($marray['ModuleType']) {case :$m['type'] = 'Core';break;case 1:$m['type'] = 'I/O';break;case 2:$m['type'] = 'Splitter';break;case 3:$m['type'] = 'Device';break;}$m['guid'] = $mguid;$larray = <strong>IP</strong>S_GetLibrary($marray['LibraryID']);$m['version'] = ($larray['Version'] >> 8) .".". ($larray['Version'] & 0xFF);}return $m;


Migration (V2.0->V2.1)Wesentliche ÄnderungenDie neue Version 2.1 von <strong>IP</strong>-<strong>Symcon</strong> fügt viele neue Funktion, aber auch Detailverbesserungen, ein, so dass ein Updateauf diese Version empfohlen wird. Besonders im Bereich der Visualisierung ist seit der Version 2.0 viel verbessert worden.Aber auch am Kern von <strong>IP</strong>-<strong>Symcon</strong> wurde viel Zeit in eine bessere Stabilität und Speichernutzung investiert. Einigebesondere Funktionen werden hier vorgestellt:Variablenprofile, die eine Variable für die Visualisierung beschreiben, wodurch Sie ohne weiteren Aufwand in derVisualisierung (WebFront) angezeigt werden können. Weiterhin ist es möglich Aktionen zu definieren, um virtuelleGeräte zusammenzustellen. Die Dokumentation der Möglichkeiten finden Sie hier: VariablenprofileSymbolische Links vereinfachen eine mehrfache Verwendung von Objekten in der Visualisierung. Sie müssen IhrPanikschalter-Skript nur noch einmal anlegen und können es in beliebig vielen Kategorien verknüpfen.Dadurch sind auch Übersichtsseiten möglich, um z.B. alle Stati der Fenster anzuzeigen.Die WebFront Konfiguration erspart ihnen eine mühselige Anpassung irgendwelcher Konfigurationsdateien. FügenSie der Visualisierung (WebFront) Ihre eigenen Seiten als Reiter hinzu, verändern Sie den Ausgangspunkt IhrerVisualisierung oder fügen Sie eigene Widgets hinzu, die Ihnen z.B. das Datum der nächsten Müllentsorgung anzeigen.Alles ein paar Mausklicks entfernt. WebFront konfigurierenNeue Module für:den Energiezähler EM24 von Carlo Gavazzigenerische Module für ModBus TCP und ModBus RTUviele neue Funktionen für das Z-Wave SystemAls Vorbereitung für die in der Version 2.2 kommende graphische Darstellung von erfassten Daten können Siebereits mit dieser Version Daten mitloggen und in einer SQLite-Datenbank abspeichern. Sobald die Version 2.2verfügbar ist, können Sie ihre Daten sofort graphisch auswerten. Ein Preview dazu finden Sie im SmartHomePaderborn unter: www.messagefromhome.deFür eine komplette Auflistung aller neuen und geänderten Funktionen lesen Sie bitte die Liste der Änderungen am Endedes Dokuments.MigrationBitte erstellen Sie auf jeden Fall ein Backup Ihres gesamten <strong>IP</strong>-<strong>Symcon</strong> Ordners, um auf die Version 2.0 zurück zuwechseln, falls Probleme mit der Version 2.1 auftreten sollten.Löschen Sie vor der Installation alle Module (*.dll) aus dem ‘modules’ Ordner von <strong>IP</strong>-<strong>Symcon</strong>, da diese nicht mehrgebraucht werden, oder falls Sie welche von Drittanbietern haben, diese einfach nicht mehr kompatibel sind.Falls Sie PHP Extensions nutzen, müssen Sie diese ab der Version 2.1 in den ‘ext’ Ordner von <strong>IP</strong>-<strong>Symcon</strong> kopieren.Alle Extensions in diesem Ordner werden automatisch von <strong>IP</strong>-<strong>Symcon</strong> geladen. Die "php.ini" muss dazu nicht mehrangepasst werden, sondern wird bei jedem <strong>IP</strong>-<strong>Symcon</strong> Start automatisch neu aktualisiert. Ein anderer Ort ist fürExtensions nicht mehr möglich.Das Error Reporting ist seit der Version 2.1 standardmäßig auf "E_ALL" gesetzt. Das bedeutet, dassFehler, wie z.B. nicht definierte Variablen, direkt als Fehler angezeigt werden. Außerdem müssenArrayindexe als String angesprochen werden. z.B. $a['MeinIndex'] statt $a[meinIndex]. (Auslöser dieserFehlermeldungen sind meist unsauber programmierte Skripte.) Sie können das Error Reporting in der"php.ini" verändern, wovon wir aber abraten.Fehler können Sie, wie immer, in der Projektverwaltung im <strong>IP</strong>-<strong>Symcon</strong> Forum melden.Liste der ÄnderungenKernelKeine Veränderung der PHP Version (5.1.6 wird benutzt)*php.ini wird nur noch aus dem <strong>IP</strong>-<strong>Symcon</strong> Order geladenAlle passenden Extensions werden automatisch aus dem ‘ext’ Ordner geladen.Alle Module sind direkt in die ips.exe integriert, wodurch der Speicherbedarf sinkt.Eigene Variablen Profile (Dokumentation: www.ipsymcon.de/service/dokumentation/konzepte/variablen/variablenprofile/)Objekte können im WebFront versteckt werden ohne dem Punkt (.) Workaround (Objekt bearbeiten -> Optionen).


Ereignisse können direkt an Variablen/Instanzen erstellt werden.Objekte können sortiert/positioniert werden.Symbolische Links können für Instanzen, Variablen, Skripte und Medien erstellt werden.Neue Funktion GetValueFormatted, die den Variablenwert als formatierten String zurück gibt. Z.B. 17,3°CSuche/Ersetze in Dateien implementiertPräfixe haben jetzt Leerzeichen, die entsprechend der DIN 5008 erstellt wurden.*Ein Wechsel auf 5.2.x oder 5.3.x war geplant, aber aufgrund von Problemen wieder verworfen worden. Fixes für einige relevante PHP-Bugswurden für PHP 5.3.1 angekündigt, welches für Version 2.2/2.3 erneut getestet wird.WebFrontfile_get_contents gegen eine Funktion ausgetauscht (Sys_GetURLContent)Wetterseiten werden gecacht, für schnellere Ladezeiten/AusfallsicherheitWebFront mit eigenen Profilen kompatibelWebFront zeigt alle Variablen mit Variablenprofil, Skripte und Medien direkt unterhalb von Instanzen an.Anzahl der Elemente in einem ‘enum’ / ‘selector’ kann in der Config definiert werden.Slider für Prozentwerte (mit Möglichkeit zum Deaktivieren)Media-Dateien können ausgeklappt werden.Media-Dateien werden bei Aktualisierung automatisch im WebFront aktualisiert.WebFront Retro, iFront den Neuerungen entsprechend angepasst$REMOTE_ADDR, $REMOTE_HOST bei Ausführen einer Aktion verfügbarModuleDummy Modul als Platzhalter für eigene Variablen, die im WebFront angezeigt werden könnenWago: Native Implementation (Wago DLL wird nicht mehr benötigt)ModBus: Modbus TCP, Modbus RTU, Modbus RTU over TCP wird unterstützt.Carlo Gavazzi: EM24 Modul hinzugefügtVirtual I/O Modul zum Testen eigener Device Module (nur für Entwickler interessant!)Webserver: OpenSSL Update auf 0.9.8kHomeMatic: Standardprofile für die WetterstationZ-WaveWeitere Geräteklassen werden unterstütztAssoziationen können konfiguriert werden.Parameter können an Geräten gesetzt werden.Routing Tabelle wird ausgelesen.Archiv Modul auf SQLite Basis zum Loggen von VariablenwertenDashboardWenn der Parameter/cache angegeben wird, dann werden alle Bilder in einem cache-Ordner gespeichert, wodurchdas erneute Laden wesentlich beschleunigt wird.Neues Control: T<strong>IP</strong>SSpinEdit für Integer/Float WerteDashboard kann Variablenwerte mit Profilformatierung anzeigen.$REMOTE_ADDR, $REMOTE_HOST, $<strong>IP</strong>S_FORM bei Ausführen eines Skriptes verfügbarGeänderte Funktionen<strong>IP</strong>S_SetEventScript (Nimmt nun den auszuführenden Text statt der ID des Skriptes.)<strong>IP</strong>S_GetEvent (Index: TriggerVariable -> TriggerVariableID)<strong>IP</strong>S_GetStatusVariableIDs -> <strong>IP</strong>S_GetStatusVariableIdentsÄnderungen im SDKKERNEL_VERSION = 0x020AKonstanten sind jetzt in 100er Schritten definiert.Kategoriefunktionen vom ObjectManager in den CategoryManager verschobenLinkManager für die symbolischen LinksVariablenprofile werden über Strings verknüpft und müssen vorher im VariableManager registriert werden.Mehr Informationen und das neue SDK finde sie im Entwicklerbereich


Migration (V2.1->V2.2)Wesentliche ÄnderungenIn der Version 2.2 von <strong>IP</strong>-<strong>Symcon</strong> wurde besonders an der grafischen Darstellung von Daten gearbeitet. So erlaubt dasWebFront die Darstellung der in der SQLite-Datenbank aggregierten Daten in einer Stunden-, Tages-, Wochen-, MonatsundJahresansicht. Eine Live-Demo kann unter http://www.webfront.info angesehen werden.Weitere neue Funktionen sind native Module zum Empfangen von E-Mails über POP3 und IMAP, sowie das Versendenvon E-Mails (SMTP) und SMS (Clickatel).Seit der Version 2.2 ist es möglich, Meldungen (Notifications) an das WebFront zu schicken, um sich über Ereignisse imSystem, direkt auf der Visualisierung informieren zu lassen. Ein eingebautes On-Screen-Display ermöglicht im WebFrontdie direkte Eingabe von Textdaten in einer Touchscreen-kompatiblen Art und Weise.Für eine komplette Auflistung aller neuer und geänderter Funktionen lesen Sie bitte die Liste der Änderungen am Endedes Dokuments.MigrationBitte erstellen Sie auf jeden Fall ein Backup Ihres gesamten <strong>IP</strong>-<strong>Symcon</strong> Ordners, um auf die Version 2.1 zurück zuwechseln, falls Probleme mit der Version 2.2 auftreten sollten.Falls Sie von der Version 2.0 upgraden, lesen Sie bitte vorher die Migrationsanleitung zur Version 2.1: Migration aufVersion 2.1Bedingt durch den Wechsel von PHP 5.1.6 auf PHP 5.3.1 müssen Sie die ggf. genutzte Extensions aktualisieren.Aktuelle Extension DLLs finden sie in diesem Paket: PHP 5.3.1 ExtensionsUm Graphen im WebFront sehen zu können, muss eine ‘Graphen Seite’ im WebFront Konfigurator erstellt werden.Liste der ÄnderungenNeu: Graphen im WebFront (inkl. Archiv Modul auf SQLite Basis)Neu: Popups/Notifications im WebFrontNeu: Graphen im Dashboard über WebBrowser (http://localhost:82/dashboard.php)Neu: On-Screen-Keyboard für das Editieren von Strings/TextBoxenNeu: Schnellerer RückkanalNeu: E-Mail versenden (SMTP)Neu: E-Mail empfangen (POP3&IMAP)Neu: Image Grabber (Lädt ein Bild direkt in den Medienpool)Neu: SMS Modul für ClickatelNeu: M-Bus ModulNeu: Heating Control ModulNeu: Ereignisse direkt in der Instanzkonfiguration erstellbarNeu: Geräte können direkt über Ereignisse angesprochen werden.Neu: Module für die EKM-868 (Counter) und ViewJet (Display)Neu: WebFront nativ auf Englisch %2B Deutsche ÜbersetzungNeu: ProJet Display (Input Modul)Neu: Statusveränderungen von I/O’s abfangen (Kern Instanzen->Event Handler)Neu: FS20 Adresse kann auf doppelte Verwendung geprüft werdenNeu: Filter HTML Checkbox bei SkriptausgabeNeu: Sys_GetURLContentEx -> Erlaubt Zugriff mit BasicAuthentification/ProxyNeu: Icons können über ein Auswahlfenster ausgewählt werden.Neu: Locked Eigenschaft für den T<strong>IP</strong>SLockButtonNeu: AutoLocked Eigenschaft für den T<strong>IP</strong>SLockButtonFix: Dimmer im WebFront bei HomeMatic nicht bedienbarFix: 32Bit/Real Werte bei ModBusFix: SetTargetValue bei LCN


Fix: n wird bei der TextBox im WebFront erkanntFix: Werte/Reaktionsbug im Dashboard (www.ip-symcon.de/forum/project.php)Fix: FHT/HomeMatic FHT im WebFront (haken für “Emulation” aktivieren!)Fix: Leveljet wieder auslesbarFix: LCN_StartFlicker fixFix: EnOcean kann mit 32bit unsigned IDs umgehen.Fix: 1-Wire negative Temperaturen bei manuellem polling falschFix: FHT: Negative Ventilpositionen


Migration (V2.2->V2.3)Wesentliche ÄnderungenHomeMatic CCU ohne TCPDump ErweiterungFunktioniert auch mit dem LAN Adapter, wenn der BidCos Service installiert ist.Container-Modul für das WebFront (Horizontale/Vertikale Aufteilung)WebFront ContainerInhaltswechsler für das WebFrontErlaubt die Anzeige von Media Dateien, TextBoxen, HTMLBoxen, die zeitlich umgeschaltet werden können in einem Reiter.(Besonders geeignet für WebCams, die durchgeschaltet werden wollen.) Alle Objekte müssen in einer Kategorie liegen und auf die mussdann die BaseID zeigen.KNX KonfiguratorBietet das einfache Importieren von Gruppenadressen aus dem ETS Export (*.esf). Über einen Klick werden automatisch alleGruppenadressen importiert.iPhone/iPad Verbesserungen für das WebFrontSplashscreen, Icons fürs iPad, …MigrationBitte erstellen Sie auf jeden Fall ein Backup Ihres gesamten <strong>IP</strong>-<strong>Symcon</strong> Ordners, um auf die Version 2.2 zurück zuwechseln, falls Probleme mit der Version 2.3 auftreten sollten.Falls Sie von der Version 2.1 upgraden, lesen Sie bitte vorher die Migrationsanleitung zur Version 2.2: Migration aufVersion 2.2Spezielle Änderungen sind nicht erforderlich.Falls Sie im WebFront die DWD Seite nutzen, müssen Sie einen Benutzernamen/Kennwort vom DWD anfordernund im Konfigurator angeben.Liste der ÄnderungenNeu: Container-Modul für das WebFront (Horizontale/Vertikale Aufteilung)Neu: MediaChanger für das WebFrontNeu: HomeMatic ohne TCPDump Neu: FS20: Weitere Adresse können angegeben werden. (Gruppen-/Masteradressen)Neu: ProJet Input ModulNeu: MediaPlayer Funktion (WAC_SetPosition)Fix: WebFront DWD (Es muss ein Benutzername/Passwort beim DWD angefordert werden! Dokumentation)Fix: Mail Modul gibt als Zeitstempel 0 aus, wenn keine Mails vorhandenFix: Modbus TCP kann nun auch die DeviceID nutzen.Fix: Diverse WebFront/iFront fixesFix: Assoziationen mit %f funktionieren jetzt korrekt.Fix: Thermokon: Berechnen der Temperatur war unter Umständen fehlerhaft.Fix: MediaPlayer: Soundkarten wurden falsch zugeordnet, wenn z.B. ein USB Soundkarte entfernt wurde.Für Entwickler:Neu: HTTP Post für PHP/WebServer ($_POST, $_FILES)Neu: Enumerations in der Rückgabe von <strong>IP</strong>S_GetFunctionList


Migration (V2.3->V2.4)Wesentliche ÄnderungenDer Fokus von <strong>IP</strong>-<strong>Symcon</strong> 2.4 liegt auf unserer bekannten und einzigartigen Visualisierung – dem WebFront. Die neusteVersion hat ein neues, frisches Design und wurde "unter der Haube" nahezu komplett neu entwickelt. <strong>IP</strong>-<strong>Symcon</strong>verwendet die neusten Web-Technolgien und ist für die kommenden <strong>IP</strong>-<strong>Symcon</strong>-Versionen gerüstet. Wer es noch nichtlive gesehen hat, kann jederzeit auf www.webfront.info gehen und sich selbst ein Bild von dem Erscheinungsbild und denneuen Funktionen machen. Einzelne Highlights werden nachfolgend dargestellt.Mehrere WebFront-Konfigurationen*Wer kennst das Problem nicht? Es soll ein eigenes Panel für das Wohnzimmer, für den Service-Techniker oder für dasKind, welches nicht an allen Knöpfen und Reglern drehen soll, geben. Mit diesem Feature bietet <strong>IP</strong>-<strong>Symcon</strong> demnächstdie volle Kontrolle für verschiedene Bereiche oder Gruppen. Die Auswahl der Konfiguration geschieht, sofern esmehrere gibt, über einen Login-Dialog. Alternativ kann für festgelegte <strong>IP</strong>-Adressen eine bestimme Konfigurationautomatisch geladen werden. Ohne komplizierte Passwort-Eingabe. Die oft nachgefragte Funktion, im sicherenHeimnetzwerk keine Passwörter eingeben zu müssen, gibt es per Mausklick dazu.Farbige ZuständeDie schaltbaren Rot/Grün-Buttons haben in <strong>IP</strong>-<strong>Symcon</strong> 2.4 ausgedient! Stattdessen können für alle Assoziationenbenutzerdefinierte Farben angeben werden. <strong>IP</strong>-<strong>Symcon</strong> bedient sich dabei standardmäßig bei Grün für alle Geräte, dieaktuell Strom verbrauchen, Rot für akute Warnmeldungen und Blau für Geräte, die sich gerade in Aktion befinden.Neutrale Zustände werden gräulich und dadurch unauffällig dargestellt. Selbstverständlich kann auch dieseFunktionsweise völlig umgestaltet werden über die altbekannten Variablenprofile.Wecker-FunktionAlle verfügbaren zyklischen Ereignisse können nun direkt über das WebFront konfiguriert werden. Sei es der Wecker, dieGartenbewässerung oder die zeitabhängige Nachtabsenkung. In <strong>IP</strong>-<strong>Symcon</strong> 2.4 kann dies direkt über das Touch-Panelohne Mehraufwand eingestellt werden.Automatische Aktualisierung aller Objekte im WebFrontWFC_Reload? Nicht mehr notwendig. Alle Objekte im Objektbaum werden vollständig im WebFront aktualisiert. Sei esder Name, der Zustand, das Profil, das Icon oder einfach nur die Sichtbarkeit. Neue Objekte werden selbstverständlichauch hinzugefügt und gelöschte entsprechend entfernt.Volle Konfigurationsvielfalt für Unterebenen**Dank der neuen TabPanes (Menüleisten mit Reitern und Widgets) lassen sich bequem neue Unterebenen erstellen. InKombination mit den SplitPanes (ehemals Container) können so eigene Menüleisten (TabPanes) links und rechts erstelltwerden, die jeweils auf neue Kategorien, Inhaltwechsler oder Graphen verweisen können. Ein Beispiel dafür ist unseredreistufige Gebäude-Navigation im SmartHome Paderborn.BalkendiagrammeFür die Darstellung der Zähler-Graphen werden wir in <strong>IP</strong>-<strong>Symcon</strong> 2.4 eine Balkenansicht, statt der bekannten Kurven,verwenden, um den Verbrauch besser verständlich darzustellen.* Diese Funktion ist nur für <strong>IP</strong>-<strong>Symcon</strong> Professional und <strong>IP</strong>-<strong>Symcon</strong> Unlimited Kunden verfügbar. In der <strong>IP</strong>-<strong>Symcon</strong>Professional Version können maximal fünf (5) WebFront Konfiguratoren erstellt werden. <strong>IP</strong>-<strong>Symcon</strong> Unlimitedbeinhaltet, wie der Name schon sagt, keine Limitierung.** Diese Funktion ist in <strong>IP</strong>-<strong>Symcon</strong> Basic nicht verfügbar.Screenshots


MigrationBitte erstellen Sie auf jeden Fall ein Backup Ihres gesamten <strong>IP</strong>-<strong>Symcon</strong> Ordners, um auf die Version 2.3 zurück zuwechseln, falls Probleme mit der Version 2.4 auftreten sollten.Falls Sie von der Version 2.2 upgraden, lesen Sie bitte vorher die Migrationsanleitung zur Version 2.3: Migration aufVersion 2.3Der WebFront-Ordner wird automatisch von unbekannten und veralteten Dateien gereinigt. Alle eigenen Dateien, die nicht gelöscht


werden sollen, müssen in den user-Unterordner verschoben werden!Variablen ohne Profil werden angezeigt. Um alle Variablen ohne Profil auszublenden, kann das folgende Skriptgenutzt werden. (Link)Das iFront ist auf Version 1.1 zu aktualisieren, um mit <strong>IP</strong>-<strong>Symcon</strong> 2.4 kompatibel zu sein.Die Module RRDTool (Link) und XBee Device (bereit 2009 abgekündigt) wurden entfernt.Liste der ÄnderungenNeu: iFront 1.1 wird unterstütztNeu: Diverse neue IconsNeu: Module (z.B. Chromoflex) aus <strong>IP</strong>-<strong>Symcon</strong> 2.3 können weiterverwendet werden.Neu: Link auf Ereignis wird erlaubt.Neu: Sortierung im WebFront Konfigurator / Archiv ModulNeu: Auswerten von empfangenen Intensity-Werten bei FS20Neu: Letzter Start von Ereignissen wird gespeichert.Neu: Entpackvorgang beim LiveUpdate wird angezeigt.Neu: Dynamische Skalierung bei Graphen jetzt zuschaltbarNeu: XBee Device Modul entfernt (XBee Splitter als Ersatz verwenden)Neu: WebFront-Konfigurator mit direkter Konfiguration für Retro, Retro Mobile und iFrontNeu: <strong>IP</strong>S/ProJet WDT-868 ModulNeu: ~HM.Motion / ~Presence mit IconNeu: Profilliste wird sortiert.Neu: .Background wird nicht mehr unterstützt.Neu: Ausklappbare Boxen wurden endgültig entfernt.Neu: . (Punkt) Notation im WebFront wird nicht mehr unterstützt.Neu: retro.php/retromobile.php/ifront.php in index.php zusammengeführtNeu: Parameter für dashboard.php überarbeitet (dynamicScaling=true/false)Neu: <strong>IP</strong>S_SetVariableProfileAssociation wurde geändert (neuer Color Parameter).Neu: Profilassoziationsanzahl auf maximal 32 beschränktNeu: KNX: Auslesen von Adressen vom Bus. (EIB_RequestStatus)Neu: KNX: KNX Geräte können Leseanforderungen an <strong>IP</strong>-<strong>Symcon</strong> schicken.Neu: KNX: FT1.2 kann über TCP/<strong>IP</strong> getunnelt werden.Neu: KNX: Spezialmodul für Rollläden/JalousienNeu: Eltako FAFH60 (Temp-/Feuchtigkeitssensor)Neu: Eltako FAH60 (Helligkeitssensor)Neu: Spezial Eltako Modul für Schalter/Dimmer die Invertiert sindNeu: ALL3418 wird unterstützt.Neu: ALL3421 wird unterstützt.Neu: ALL3690 funktioniert korrekt mit der neuen Firmware 2.0 (Diese wird auch erfordert!).Neu: Z-Wave: Neue Kommandoklassen werden unterstützt.COMMAND_CLASS_METERCOMMAND_CLASS_ALARMCOMMAND_CLASS_LOCKCOMMAND_CLASS_THERMOSTATFix: “Jetzt aktualisieren” sperren, wenn Konfiguration geändert wurde (ImageGrabber/WWWReader)Fix: DWD FTP-URL angepasst (outgoing2)Fix: ThermoJet wird korrekt bei RF-Übertragung ausgewertet.Fix: Fehlermeldung, wenn Name verändert wurde (ALL3690)Fix: %f in Assoziationen wurde falsch ausgewertetFix: Assoziationen wurden nicht überall korrekt nach dem Muster Präfix %2B Name %2B Suffix dargestellt.Fix: KNX ZeitüberschreitungenFix: OneWire DS2450, Timing-Problem beim Auslesen behobenFix: Flackern des Volume-Sliders im WebFront beim MediaPlayer ModulFix: Sys_GetMemoryInfo() Limit von 4GB behoben


Migration (V2.4->V2.5)Wesentliche ÄnderungenMit <strong>IP</strong>-<strong>Symcon</strong> 2.5 wurde auf die neue PHP 5.4 Version aktualisiert, die viele Verbesserungen bei Skripten und dieSicherheit dieser mitbringt. Desweiteren wurden neue Funktionen für eine Vielzahl von Hardware-Systemen hinzugefügtund bekannte Fehler beseitigt. Ein Auszug der neuen Funktionen:Unterstützung der neuen bidirektionalen EnOcean TCM310 Geräte mit dem EnOcean Serial Protocol 3.Unterstützung der neuen bidirektionalen EnOcean Aktoren von EltakoUnterstützung des neuen Eaton Xcomfort ThermostatsUnterstützung für das neue Xcomfort LAN-Gateway (ECI) und deren spezielle DPL DatenpunktlisteUnterstützung vom OneWire Baustein DS2406Komfortables LCN Modul für Rolladen/Jalousien bei Ansteuerung über Ausgänge/RelaisUnterstützung für das neue LAN-868 Gateway für das <strong>IP</strong>S FunksystemUnterstützung für neue Z-Wave KlassenCOMMAND_CLASS_CLOCKCOMMAND_CLASS_PROTECTIONIm Kern wurden die Importier- und Kompatibilitätsfunktionen aus <strong>IP</strong>-<strong>Symcon</strong> 1.x entfernt, so dass viele Funktionenschneller und effizienter arbeiten können. Desweiteren wurde eine neue Funktion (<strong>IP</strong>S_SetIdent) geschaffen, mit derVariablen eindeutig per Name identifiziert werden können. Dadurch können Skripte portabel erstellt und mit Nutzernbesser ausgetauscht werden. Ein Beispiel dafür ist das Skript zum Auslesen von Miele@Home Geräten (Link).Alle Funktionen sind in der Basic, Professional und Unlimited Version von <strong>IP</strong>-<strong>Symcon</strong> verfügbar und können mit einergültigen Subskription bezogen werden. Ein spezielles “Upgrade” muss nicht erworben werden. Sofern Ihre Subskriptionabgelaufen ist, können Sie diese einfach erneuern und direkt ohne zusätzliche Mehrkosten auf die 2.5 upgraden. (Shop)MigrationBitte erstellen Sie auf jeden Fall ein Backup Ihres gesamten <strong>IP</strong>-<strong>Symcon</strong> Ordners, um auf die Version 2.4 zurück zuwechseln, falls Probleme mit der Version 2.5 auftreten sollten.Falls Sie von der Version 2.3 upgraden, lesen Sie bitte vorher die Migrationsanleitung zur Version 2.4: Migration aufVersion 2.4Die "auto_prepend_file"-Funktion in der "php.ini" wird von <strong>IP</strong>-<strong>Symcon</strong> intern genutzt. Falls eine PHP-Dateiautomatisch geladen werden soll, so muss diese im Skript Ordner liegen und "__autoload.php" heißen.Die Extension "php_http.dll" ist in PHP 5.4 nicht mehr verfügbar. Falls diese genutzt wurde bitte auf die cURL-Extension ausweichen.Durch eine Inkompatibilität von PHP 5.4 und OpenSSL 1.0 können über die "file_get_contents" (u.ä.) Funktionkeine Anfragen per SSL gestellt werden. Die <strong>IP</strong>-<strong>Symcon</strong> interne Funktion Sys_GetURLContent bietet dort passendenErsatz. Falls die SSL Funktionalität zwingend notwendig ist (z.B. Exchange oder SNMP Extension), und SSLinnerhalb vom WebFront nicht benötigt wird, kann die alte Verhaltensweise mit folgendem Zusatzpaketwiederhergestellt werden: OpenSSL 0.9.8Einige spezielle Funktionen zum Handling von StatusVariablen werden zur 3.0 entfernt werden. Sobald Sie auf 2.5aktualisiert haben, können Sie dieses Skript zur Überprüfung nutzen: <strong>IP</strong>-<strong>Symcon</strong> 2.5 – HilfsskripteFalls Skripte im "webfront/user"-Ordner erstellt und genutzt wurden, müssen in PHP 5.4 alle Parameter per"$_GET[...]" abgefragt werden.Kompatibilitätsfunktionen aus alten <strong>IP</strong>-<strong>Symcon</strong> 1.0 Zeiten und die Kompatibilität mit Namen statt ID bei altenFunktionen wurde entfernt. Für alle die mit <strong>IP</strong>-<strong>Symcon</strong> 2.x angefangen haben, hat dies keine Bedeutung.Liste der ÄnderungenNeu: PHP 5.4Neu: PHP Extensions werden per LiveUpdate aktualisiert (nur offizielle von PHP. Kein PECL!).Neu: EnOcean Module können mit dem neuen ESP3 Protokoll umgehen.Neu: “No configuration” Fehlermeldung verbessertNeu: Modbus TCP noch robuster gemachtNeu: xComfort Thermostat


Neu: LCN Shutter ModulNeu: Neuer Lichtsensor (LCN-LSA) wird unterstützt.Neu: Typ kann für T, R1, R2 gewählt werden.Neu: BiDi Auswertung für Eltako Schalter/DimmerNeu: Eltako Dimmer kann direkt angesteuert werden. (Muss erneut angelernt werden!)Neu: xComfort Thermostat kann Variable als Ist-Temperatur verwenden.Neu: Ports für Wired/RF/Eventkanal können beim HomeMatic Socket eingestellt werden.Neu: OneWire DS2406Neu: Z-Wave Rückkanal bei Fibaro Geräten (Über BASIC Kommando Klasse)Neu: LAN Version vom USBT-868 wird komplett unterstützt.Neu: $<strong>IP</strong>S_* ist nun per $_<strong>IP</strong>S[] verfügbar-Neu: RegisterGlobals ist off. Das bedeutet, dass alle Variablen vom WebServer nur noch per$_GET abrufbar sind. (PHP5.4 erfordert dies!)Neu: OpenSSL 1.0 wird genutzt. Löst Probleme mit SSL-Zugriff von MobilgerätenNeu: Importer für V1 Settings wurden entfernt.Neu: <strong>IP</strong>S_SetValue*/<strong>IP</strong>S_GetValue*, <strong>IP</strong>S_SetScriptTimer, <strong>IP</strong>S_GetScriptTimer, <strong>IP</strong>S_RunScript akzeptieren keine Strings mehr(V1 Kompatibilität).Neu: <strong>IP</strong>S_GetVariableID, <strong>IP</strong>S_GetScriptID entfernt (V1 Kompatibilität).<strong>IP</strong>S_GetVariableIDByName/<strong>IP</strong>S_GetScriptIDByName als Ersatz nutzenNeu: <strong>IP</strong>S_StatusVariableExists, <strong>IP</strong>S_GetStatusVariable, <strong>IP</strong>S_GetStatusVariableID, entfernt. Ersatz:<strong>IP</strong>S_GetObjectIDByIdentNeu: <strong>IP</strong>S_GetStatusVariableIdents entfernt. Ersatz: <strong>IP</strong>S_GetChildrenIDs mit <strong>IP</strong>S_GetObject (ObjectIdent)Neu: <strong>IP</strong>S_SetStatusVariableUseAction entfernt. Ersatz: Noch keiner.Neu: <strong>IP</strong>S_SetIdent. Erlaubt einen internen, auf Kategorieebene eindeutigen, Namen zu vergeben, der dann wieder über<strong>IP</strong>S_GetObjectIDByIdent abgefragt werden kann. Dieses Feld kann für universelle Skripte hervorragend genutzt werden,um in Skripten auf Variablen per Name/Identifikator zuzugreifen und dem User trotzdem Änderungen an den Namen zuerlauben. (Projektverwaltung)Neu: Links können über das Kontextmenü schneller erstellt werden. Objekt verlinken anklicken. Ziel auswählen. Fertig.(Die ursprüngliche Idee mit den Standard-Windows-Shortscuts erwies sich als viel zu kompliziert in der Verwendung.)Neu: Sortieren nach Werten in der Listenansicht möglichNeu: Unterstützung für neue Z-Wave KlassenCOMMAND_CLASS_CLOCKCOMMAND_CLASS_PROTECTIONFix: W&T: Teilweise waren Kanäle nicht auslesbar.Fix: <strong>IP</strong>S_Semaphore* Fix. Danke an tgusi74 fürs finden!Fix: HomeMatic Wired Komponenten wurden nicht korrekt automatisch erstellt.Fix: ALL3690: Auslesen der Summen wartet nun max. 5min auf die BerechnungFix: Konsole konnte per Remote nicht aktualisiert werden, wenn auf dem Server (Win7) die Konsole gestartet war.Fix: Strings wurden in AC_GetLoggedValues nicht zurückgegeben.Fix: Werte bei % Profilen wurden bei “MinValue < 0! falsch berechnetFix: LCN Modul Konfigurator zeigte TVar/RVars Instanzen nicht korrekt anFix: Profil beim KS300 korrigiertFix: Installation unter Windows 7 (x86) ist nun im Programme Ordner möglichFix: GIF Bilder sollten Dashboard nicht mehr zum Absturz bringen.Fix: AssertionViolation bei TeamViewer 6 QuickConnect behobenFix: FTDI Instanz wurde als fehlerhaft markiert, wenn diese deaktiviert war, aber man schalten wollte.Fix: Werte bei Boolean Assoziationen können per PHP nur noch modifiziert werden.Fix: <strong>IP</strong>-<strong>Symcon</strong> stürzte ab, wenn der media Ordner nicht existierte.Fix: Sortieren nach Wert in Listenansicht funktionierte nicht.Fix: Xcomfort Feuchtigkeit wurde im Sende AN/AUS Modus nicht empfangen.Fix: DS2438 VAD/VDD wurden unter Umständen nicht korrekt gelesen.Fix: GetValue versagte nach Aufruf externer Programme oder RRD-Execute.Fix: LCN Limit auf 5 Telegramme/Sekunde (PCHK 2.1 erfordert dies)Fix: DS18S20/DS18B20 – Startwert 85 wird nicht mehr gelesen.Fix: LiveUpdate überprüft, ob CRT Bibliotheken installiert sind.


Migration (V2.5->V2.6)Wesentliche Änderungen<strong>IP</strong>-<strong>Symcon</strong> startet, lädt und agiert schnellerIn der Version 2.6 haben wir besonders die Performance verbessert. Die Startzeit des Dienstes konnte minimiert werden,so dass auch bei großen Projekten ein Aktualisieren der Software nur wenige Minuten in Anspruch nimmt. Da dieKonsole zusätzlich nahezu komplett überarbeitet wurde, sind auch dort Start- und Ladezeiten minimal. Das WebFrontwurde optimiert und den neusten Sicherheitsanforderungen der aktuellen Browser angepasst. Durch die neuenVerbesserungen wird außerdem die CPU weniger belastet, was sich besonders auf älteren Systemen schnell bemerkbarmacht. Auch beim WebFront Konfigurator haben wir auf Feedback reagiert und dessen Bedienung verbessert.Neue Hardware-SystemeDarüber hinaus haben wir neue Systeme und Module integriert. Problemlos können nun in <strong>IP</strong>-<strong>Symcon</strong> u.a. das gesamtedigitalStrom- und das innovative Siemens-Synco-living-System eingebunden werden, wodurch unsere breite Palette anunterstützter Hardware perfekt ergänzt wurde. Das macht unsere Hausautomationssoftware noch flexibeler, als sie bereitsist.Noch zuverlässigerWir haben zusätzliche die Version unserer integrierten Skriptsprache PHP aktualisiert, um auch in <strong>IP</strong>-<strong>Symcon</strong> die neustenSicherheitspatches, die die PHP-Community veröffentlicht hat, zu nutzen. Wir haben weitere gewünschte Optimierungenvorgenommen, damit <strong>IP</strong>-<strong>Symcon</strong> noch besser und leistungsfähiger sein kann. Die vollständige Liste dazu kann unterhalbdes Kapitels Migration eingesehen werden.(Alle Funktionen sind in der Basic, Professional und Unlimited Version von <strong>IP</strong>-<strong>Symcon</strong> verfügbar und können mit einer gültigenSubskription bezogen werden. Ein spezielles “Upgrade” muss nicht erworben werden. Sofern Ihre Subskription abgelaufen ist, können Sie dieseeinfach erneuern und direkt ohne zusätzliche Mehrkosten auf die Version 2.6 upgraden. (Shop))MigrationBitte erstellen Sie auf jeden Fall ein Backup Ihres gesamten <strong>IP</strong>-<strong>Symcon</strong> Ordners, um auf die Version 2.5 zurück zuwechseln, falls Probleme mit der Version 2.6 auftreten sollten.Falls Sie von der Version 2.4 upgraden, lesen Sie bitte vorher die Migrationsanleitung zur Version 2.5: Migration aufVersion 2.5.Sofern der <strong>IP</strong>SLogger von Brownson verwendet wird, ist ein Update dieser Komponente für den fehlerfreienBetrieb der 2.6 zwingend erforderlich. Bei etwaigen Problemen mit Abstürzen empfiehlt es sich den <strong>IP</strong>SLoggertemporär zu deaktivieren, um dessen Funktion als Fehlerquelle auszuschließen.Falls auf Ihrem Windows Server 2008 R2 die Installation des VCRedist 2008 in einer Endlosschleife feststeckensollte, überprüfen Sie bitte, ob Ihr System die korrekte Version vom VCRedist 2008 installiert. Es muss dieVersion ohne SP1 installiert werden, da nur diese mit PHP korrekt funktioniert! Direkter <strong>Download</strong>Falls Sie die COM/.NET Wrapper Funktionen von PHP nutzen, so ist mit Version 2.6 #2554 (und damitverbunden PHP 5.4.8) eine manuelle Installation der Extension erforderlich, da PHP sich entschieden hat dieseauszulagern.Liste der ÄnderungenSchneller und besserNeu: Performance verbessert, so dass die CPU weniger belastet wird. <strong>IP</strong>-<strong>Symcon</strong> sollte sich auf Low-End Systemenwesentlich agiler anfühlen.Neu: Performance verbessert, so dass <strong>IP</strong>-<strong>Symcon</strong> viel schneller startet. (Bei sehr vielen Objekten reduziert sich dieLadezeit auf


Neu: Module für digitalStrom (Firmware 1.4.0 oder neuer erforderlich)Neu: Module für Siemens OZW (OZW Firmware 4.0.4 erforderlich. Link)Neu: Z-Wave Klasse: COMMAND_CLASS_SENSOR_ALARMNeu: Z-Wave Fibaro Dual SwitchNeu: Z-Wave Alarm Klasse unterstützt mehr TypenNeu: Modul für ALLNET 3691, 4500, 5000Neue FunktionenNeu: Spezialoptionen können nun über die Tray-Anwendung eingestellt werden. (Siehe: Spezialschalter)Neu: Bessere Fehlermeldung bei Ausführungsfehlern von PHP-Code innerhalb von EreignissenNeu: Restlaufzeit-Anzeige bei Ereignissen innerhalb vom Skript-Seitenmenü (Link)Neu: Alle hauptsächlich genutzten $_<strong>IP</strong>S[*] Systemvariablen werden bei STRG+SPACE angezeigt.Neu: SerialPort: DTR/RTS FlowControl FunktionenNeu: Das Deaktivieren von Autoscroll gibt einen Hinweis und deaktiviert das Limit der Einträge.Neu: PHP Memory-Limit ist jetzt default auf 32MB. Maximal jedoch 64MB. (Siehe php.ini)Neu: Maximale PHP-Threadanzahl staffelt sich je nach installiertem RAM (max 40 bei 4GB, 30 bei 3GB, 20 bei 2GB,10 bei weniger).Neu: PHP-Skript Queue meldet sich schon ab zehn Skripten in der Schleife.Behobene FehlerFix: Benutze Standardaktion kann wieder korrekt genutzt werden (Link).Fix: WebFront: Timing-Problem bei Ausführung vieler gleichzeitiger <strong>IP</strong>S_SetHidden Befehle behobenFix: WebFront: Lade-Problem mit aktueller Chrome Version bei aktiviertem SSL und externem ZugriffFix: VCRedist2008 wurde auf dem Server2008 R2 inkorrekt als installiert erkannt.Fix: Neue $_<strong>IP</strong>S Schreibweise in den Ereignis-Templates wird nun genutzt.Fix: LCN: Sonderzeichen bei Modulnamen wird korrekt gefiltert.Fix: Siemens S5: Verbindungsprobleme gelöstFix: Eaton xComfort: Signalstärke in Verbindung mit dem ECI LAN GatewayFix: Eaton Analogeingang: Fehler beim Auswerten von ProzentwertenFix: Fehler, dass unter Umständen $<strong>IP</strong>S_* nicht korrekt definiert warFix: WebFront Startkategorie wurden u.U. nicht korrekt übernommen (Link).Fix: Reihenfolge (Objekt-Position) im ContentChanger wird korrekt ausgewertet.Fix: LCN: R2 Regler wurde nicht korrekt ausgelesen.Fix: Timing Problem/Umschaltzeiten für LCN ShutterFix: Sporadisch auftretendes Floating-Point Problem bei SetValueFix: Zu viele Datensätze bei einer AC_* Abfrage konnten das System negativ beeinträchtigen. Limitation auf 10000Datensätze pro Abfrage. (Siehe: Limitationen)Fix: Unendlich viele Fehlermeldungen (z.B. korrupte for-Schleife) konnten den kompletten RAM des Systemsaufbrauchen.Fix: Widgets konnten in SplitPanes platziert werden.Fix: False-Positives bei Sys_PingFix: Problematische Werte bei Sys_GetCPUInfoFix: Link unter Link konnte fälschlicherweise erstellt werden.Fix: Alle FHZ Module (FS20, HMS, FHT, KS300) werfen nun direkt Fehlermeldungen, wenn die I/O Instanz nichtverfügbar ist (Link).Fix: OSK übernimmt Zeilensprünge nicht (Link).Keine Abwärtskompatibilität für folgende Änderungen:Geändert: <strong>IP</strong>S_GetFunctionList (Gibt nur noch den Namen zurück. Bitte mit <strong>IP</strong>S_GetFunction kombinieren.)Entfernt: FHZ_GetQueue, FHZ_GetFHTQueueEntfernt: <strong>IP</strong>S_SendMediaEventEx entferntVollständige Abwärtskompatibilität für folgende Änderungen:Neu: <strong>IP</strong>S_FunctionExists, <strong>IP</strong>S_GetFunction hinzugefügtNeu: <strong>IP</strong>S_SetLinkChildID wurde zu <strong>IP</strong>S_SetLinkTargetID umbenannt. <strong>IP</strong>S_SetLinkChildID wird zur 3.0 entfernt.Neu: <strong>IP</strong>S_GetLink liefert das Feld TargetID, welches identisch zu LinkChildID ist. LinkChildID wird zur 3.0entfernt.Neu: <strong>IP</strong>S_HasInstanceParent, <strong>IP</strong>S_GetInstanceParentID veraltet. Kann direkt über <strong>IP</strong>S_GetInstance undConnectionID abgefragt werden.


Neu: <strong>IP</strong>S_HasInstanceChildren, <strong>IP</strong>S_GetInstanceChildrenIDs veraltet. Kann direkt über <strong>IP</strong>S_GetInstance undConnectionID abgefragt werden.Neu: LCN_GetStatus wird nur noch emuliert. Auf GetInstance($id)['InstanceStatus'] ausweichen.Folgende Konfigurationsfunktionen werden nur noch emuliert:CSCK_SetOpen, CSCK_SetHost, CSCK_SetPort, CSCK_GetOpen, CSCK_GetHost, CSCK_GetPort, SSCK_SetOpen,SSCK_GetOpen, SSCK_SetPort, SSCK_GetPort


Migration (V2.6->V2.7)Wesentliche ÄnderungenJetzt direkt auf dem Smartphone oder Tablet benachrichtigen lassen!Mit der Einführung von <strong>IP</strong>-<strong>Symcon</strong> 2.7 und der Apps in der Version 2.0 gibt es endlich die Möglichkeit direkt Push-Benachrichtigungen an Ihre Smartphones und Tablets zu versenden. Lassen Sie sich zum Beispiel bei einer fertigenWaschmaschine, beim Klingen der Tür oder bei Alarmzuständen sofort informieren. Viele weitere Ideen finden Sie auchin unserem Community-ForumNeue unterstütze Geräte und FunktionenZur besseren und komfortableren Einrichtung haben wir die Konfiguratoren überarbeitet, sodass diese die volle Größeder Konsole nutzen können. Dadurch haben Sie bei vielen vorhandenen Geräten oder Adressen einen vollständigenÜberblick. Zusätzlich haben wir einen Konfigurator für OneWire integriert und den KNX-Konfigurator so erweitert, dasser die Rückmeldeadresse direkt in <strong>IP</strong>-<strong>Symcon</strong> importiert.Ein neues Modul ist für die TermoJET und LevelJET Systeme der Fa. ProJet verfügbar. Die Geräte können in das <strong>IP</strong>S-868 Funksystem über ein neues Funkgateway (JKM-868) angebunden werden. Dadurch lassen sich die empfangenenTemperaturen oder Füllstände in <strong>IP</strong>-<strong>Symcon</strong> auswerten. Alle Geräte des <strong>IP</strong>S-868 Funksystems können über den ProJETShop erworben werden.Im Bereich Z-Wave haben wir die Klasse MULTI_INSTANCE komplett überarbeitet, sodass die neuen Geräte vonFibaro, wie z.B. der 2-fach Aktor oder der vielseitige Binärsensor einfach und mit allen Funktionen genutzt werdenkönnen.Ferner wurden wieder neue Geräte unseres Vertriebspartners ALLNET in <strong>IP</strong>-<strong>Symcon</strong> integriert:ALL3073WLAN - Netzwerksteckdose zum Schalten über WLAN (16A)ALL3075V2 - Netzwerksteckdose zum Schalten über LAN (8A)ALL4075 - Netzwerk / WLAN Relais 4-fach 230V/10AALL4076 - <strong>IP</strong>-Steckdosenleiste 6-fach, schaltbar per Netzwerk (6*10A)ALL3418V2 - LAN / WLAN <strong>IP</strong> Thermometer (ALL3418v2)(Alle Funktionen sind in der Basic, Professional und Unlimited Version von <strong>IP</strong>-<strong>Symcon</strong> verfügbar und können mit einer gültigenSubskription bezogen werden. Ein spezielles “Upgrade” muss nicht erworben werden. Sofern Ihre Subskription abgelaufen ist, können Sie dieseeinfach erneuern und direkt ohne zusätzliche Mehrkosten auf die Version 2.7 upgraden. Bitte beachten Sie, dass das Nutzen der Push-Benachrichtigungen eine Verbindung zum Internet und eine gültige Subskription voraussetzt. (Shop))MigrationBitte erstellen Sie auf jeden Fall ein Backup Ihres gesamten <strong>IP</strong>-<strong>Symcon</strong> Ordners, um auf die Version 2.6 zurück zuwechseln, falls Probleme mit der Version 2.7 auftreten sollten.Falls Sie von der Version 2.5 upgraden, lesen Sie bitte vorher die Migrationsanleitung zur Version 2.6: Migration aufVersion 2.6.Falls Sie von Z-Wave einen der Mehrfachaktoren (z.B. Fibaro Dual Switch) verwenden, so müssen Sie dieUntergeräte über eigene Instanzen einbinden, da die Unterstützung entsprechend verbessert wurde. Beachten Sieauch, dass die ZW_SwitchModeEx Funktion entfernt wurde, und jedes Untergerät korrekt per ZW_SwitchModeangesprochen wird.Liste der ÄnderungenJetzt direkt in den Mobilanwendungen benachrichtigen lassen!Neu: Push-Benachrichtigungen (Über Kern-Instanzen -> Notification) (Dokumentation Notification Control)Neu: WFC_PushNotification($wfcid, $title, $message, $icon, $targetID); (Dokumentation: WFC_PushNotification)Neue Systeme/ModuleNeu: DMX Module komplett erneuert. Es werden intern die nativen <strong>IP</strong>-<strong>Symcon</strong> I/O Module genutztNeu: Neue ALLNET Geräte werden unterstützt (ALL3073 WLAN, ALL3075V2, ALL3418V2, ALL4075, ALL4076)Neu: KNX-Konfigurator importiert zusätzliche "Empfangs-Gruppenadressen" aus der ESF-DateiNeu: OneWire besitzt einen komfortablen Konfigurator. (Dies ersetzt die Suche innerhalb der Instanz!)Neu: Z-Wave unterstützt jetzt korrekt Mehrfachgeräte mit der MULTI_INSTANCE Klasse


Neu: Module für das <strong>IP</strong>S-868 System (<strong>IP</strong>S-JKM-868 ThermoJET-, LevelJET-Transmitter)Neu: WebFront Konfigurator umgestaltet. Gruppiert. Es gibt jeweils mehr Platz.Neu: Alle Konfiguratoren nutzen die komplette BildschirmgrößeNeue FunktionenNeu: Fehlerbehandlung der I/Os wird zentral vom Event Control übernommenNeu: WWWReader kann deaktiviert werden. (Praktisch für Systeme wie digitalStrom/OZW)Neu: Proxy-Support ist nun <strong>IP</strong>S-Systemweit einheitlich. Übernimmt Konfiguration aus dem LiveUpdate.Neu: Module nutzen nun zu 90% die neuen <strong>IP</strong>S_SetProperty Befehle zur konfiguration. (Dokumentation:<strong>IP</strong>S_SetProperty)Neu: Warnung, wenn neues Dashboard-Formular mindestens 10% kleiner ist, als das Original. (Workaround fürTeilweise fehlerhafte Uploads)Neu: Alte, seit 2010 abgekündigte MBT_* Funktionen entferntNeu: Sortierung der Spalten im ArchiveControlNeu: Velleman Board liest die AnalogInputs direkt in Variablen einNeu: M-Bus unterstützt nun weitere Spezialcodierungen für Zählerüberlauf/ZählerunterlaufNeu: Unterstützung für 2-fach Bidi-Aktoren von Eltako. (Neue Option im Eltako Switch Modul)Neu: Modul für Thermokon Thanos (EnOcean)Behobene FehlerFix: Timeout bei Abfrage einiger M-Bus GeräteFix: WebFront Ladeanimation bleibt hängen (Link)Fix: Überprüfung der maximalen WebFront Konfigurationen funktioniert nun korrektFix: Zeitüberschreitungsfehler bei KNX SendeanfrageFix: Potenzieller Division durch Null bei der GraphengenerierungFix: AccessViolation beim Erstellen des Objektbaumes über Ansicht hinzufügenFix: AccessViolation beim Hochladen von Dashboard-FormularenFix: ALLNET3691 Phasen 4-6 werden korrekt angezeigtFix: Potenzielle Sicherheitslücke im WebFront Retro/Retro-MobileFix: Cutter mit #0 (Link)Fix: Zeilenumbrüche werden in der Objektbeschreibung korrekt angezeigtFix: KNX: Fehler beim Empfangen von Rückmeldungen beim Siemens N146/02 <strong>IP</strong>-Gateway


GrundlagenObjekte und ID (Identifikationsnummer)Bei allem, was in der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole unter “Objektbaum” angezeigt wird, handelt es sich - wie der ebenerwähnte Name schon vermuten lässt - um “Objekte”.Jedes Objekt bei <strong>IP</strong>-<strong>Symcon</strong> besitzt eine Identifikationsnummer (ObjektID), die nicht veränderbar ist. Durch dieseEinzigartigkeit jedes Objektes ergeben sich für Sie eine Vielzahl von Vorteilen.So kann der Name oder die Reihenfolge eines jeden Objektes innerhalb der Objektbaumstruktur jederzeit mit einemKlick der rechten Maustaste frei verändert werden. Es ist außerdem möglich ein Objekt zu verstecken, so dass es auf Ihrerpersonalisierten WebFront Visualisierung nicht mehr zu erkennen ist, und Sie sich bei der Bedienung auf das Wesentlichekonzentrieren können. Dafür klicken Sie mit der rechten Maustaste einfach auf “Objekt bearbeiten” und setzen unterOptionen ein Häkchen bei “Versteckt”. Danach einfach mit “OK” bestätigen und schon ist das Objekt aus der WebFrontVisualisierung verschwunden. Im Objektbaum ist es weiterhin sichtbar, wird aber weniger farbintensiv als zuvordargestellt. Darüber hinaus können Sie unter “Objekt bearbeiten” und dort unter “Allgemein” eine Beschreibung und /oder ein Icon für ein Objekt einfügen. Per Drag & Drop lässt sich außerdem, wie bei Windows Explorer gewohnt, einoder mehrere Objekte innerhalb der Objektbaumstruktur überall hin frei verschieben.Ihre Projekte können so viel schneller und unkomplizierter abgearbeitet werden und Sie verlieren in Ihrempersonalisierten System nicht den Überblick, da sie Ihre zuvor erstellte Ordnung für Erweiterungen nicht zerstörenmüssen. Selbstverständlich übernimmt unsere WebFront Visualisierung Ihre Anpassungen automatisch.Bei <strong>IP</strong>-<strong>Symcon</strong> gibt es sechs verschiedene Objektarten. Objekte können Kategorien, Instanzen, Variablen, Skripte,Ereignisse oder Medien sein.Jede spezielle Objektart hat somit zusätzlich zu den oben bereits erwähnten Objektfunktionen, die allen Objekten gemein sind, originäreSpezialfunktionen.Jedes Objekt besitzt eine feste und nicht änderbare ID (Identifikationsnummer). Dadurch ergeben sich viele Vorteile:Jedes Objekt ist einzigartig.Der Name kann jederzeit frei verändert werden.Größere Projekte können schneller abgearbeitet werden.Umfangreiche Funktionen der ObjektverwaltungPerformante Verknüpfung innerhalb der Software


InstanzenInstanzen repräsentieren Geräte, die an <strong>IP</strong>-<strong>Symcon</strong> angeschlossen sind. Diese können sowohl konfiguriert werden alsauch Befehle erhalten.Das Prinzip vom Anlegen der Geräte hat sich von Version 1 an grundlegend verändert. I/O Instanzen, Splitter oderÄhnliches müssen nicht mehr erstellt/verbunden werden. <strong>IP</strong>-<strong>Symcon</strong> erledigt dies für Sie automatisch. <strong>IP</strong>-<strong>Symcon</strong>legt auch die Status-Variablen automatisch an.Sofern Sie von einer Standardkonfiguration abweichen (z.B. eine LAN-FHZ statt einer USB-FHZ nutzen wollen) unddie angelegten I/O Instanzen nicht Ihrer Konfiguration entsprechen, müssen Sie die I/O Instanz austauschen.Instanz erstellenGeräte - wie z.B. ein Schaltaktor des FS20 Systems - werden in <strong>IP</strong>-Syncom über sogenannte Instanzen angesprochen. Siekönnen den Erstellungsdialog entweder auf der Willkommen-Seite direkt ("Instanz erstellen") oder im Objektbaum überden Button “Objekt erstellen -> Instanz erstellen” erreichen.Fast alle Geräte sind nach Herstellern sortiert. Somit können Sie über die Herstellerauswahl auf die einzelnen Gerätezugreifen. Sonstige Geräte sind unter (Sonstiges) zu finden.


KonfiguratorenKonfiguratoren stellen in <strong>IP</strong>-<strong>Symcon</strong> eine ganz spezielle Art von Instanzen dar, die, wenn für ein System verfügbar, dieEinrichtung in <strong>IP</strong>-<strong>Symcon</strong> erheblich erleichtern. Es können für mehrere Stränge/Linien/Gateways jeweils Konfiguratorenerstellt werden. Die Erstellung eines Konfigurators ist auf der Willkommensseite der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsolemöglich.Zur Zeit sind Konfiguratoren für die folgenden Systeme verfügbar:LCNEIB/KNXEaton xComfortZ-WaveHomeMaticSiemens OZWdigitalStromScreenshotsLCN KonfiguratorKNX Konfigurator


xComfort KonfiguratorZ-Wave Konfigurator


Siemens OZW KonfiguratordigitalStrom Konfigurator


SkripteEin Skript (oder auch Programm genannt) ist eine Aneinanderreihung von mehr oder weniger komplexen Befehlen. Diein <strong>IP</strong>-<strong>Symcon</strong> verwendete Programmiersprache ist das sehr mächtige und leistungsstarke PHP. Im Internet finden Siezahllose Beispiele und weiterführende Dokumentationen.Skripte hinzufügenMöchten Sie Ihrem Projekt ein neues Skript hinzufügen, aktivieren Sie diese Auswahlmöglichkeit unter “Objektehinzufügen”. Vergeben Sie dem Skript einen eindeutigen und aussagekräftigen Namen. Sie können ihn jederzeit ändernoder das Skript in einen anderen Ordner verschieben. Alternativ können Sie den Ort des Skripts bestimmen, indem Sie esan der jeweiligen Stelle über die rechte Maustaste anlegen oder “Auswählen” verwenden.Für den Fall, dass Sie mit einem Editor arbeiten wollen oder vorhandene Skripte verwenden, aktivieren Sie: “VorhandeneDatei hochladen”. Wenn Sie zusätzlich mit einem bestimmten Dateinamen (Betriebssystem) arbeiten wollen, aktivierenSie: “Benutze speziellen Dateinamen”. Mit “Überprüfen” ist gewährleistet, dass dieser Name eindeutig ist.Skripte editieren & ausführenGrundsätzlich gilt: Ein PHP Skript verlangt, dass Anweisungen am Ende jedes Statements mit einem Semikolon beendetwerden und sie innerhalb eines PHP-Tags () stehen müssen.Zu Testzwecken kann das Skript manuell gestartet werden, indem Sie „Ausführen“ drücken. Dabei wird es automatischgespeichert und sowohl der Zeitstempel der letzen Ausführung als auch die Länge der Laufzeit aktualisiert. Die Ansichtkann zwischen [Text] und [HTML] umgeschaltet werden. Fehlerhafte Eingaben können mit „Rückgängig“ oder“Wiederherstellen“ korrigiert werden. Mit „Nach HTML exportieren“ wird das gesamte Skript in Ihrem Browserangezeigt. Möchten Sie komfortabel einen „Befehl hinzufügen“, positionieren Sie den Cursor auf die gewünschte Stelle imSkript und klicken Sie auf diesen Button. Um die Vielfalt der Befehle einzugrenzen, empfiehlt es sich nur das betreffendeGerät anzugeben. Hier als Beispiel für die Soundausgabe den „Media Player“:


Als Auswahlmöglichkeit erhalten Sie dann nur die gerätespezifischen Funktionen:Als Ergebnis erhalten Sie den Befehl in der richtigen ID-Nummer.Um Befehle direkt einzugeben, drücken Sie „Strg + Space“. Sie erhalten dann alle <strong>IP</strong>-<strong>Symcon</strong>-Funktionen. Auch hierkönnen Sie die Auswahl einschränken, indem Sie z.B. „f + s + 2“ eingeben. Den gewünschte Befehl können Sie dann perDoppelklick auswählen:Um alle „Ereignisse“, die das Skript triggern, ein- und auszublenden, verwenden Sie selbigen Button. Wie Sie ein weiteres„Ereignis hinzufügen“, erfahren Sie hier.Systemvariablen in SkriptenEine komplette Auflistung finden sie unter Systemvariablen.Tipps & TricksEs gibt eine Auflistung aller Tastenkombinationen.


SystemvariablenSystemvariablen sind Variablen, die in jedem Skript verfügbar sind und vom Benutzer genutzt werden können umeffizientere Skripte zu erstellen, die generisch Aufgaben lösen können. Je nach Absender durch den das Skript gestartetwurde, werden mehr oder weniger Systemvariablen angeboten. Die nachfolgende Tabelle gibt einen Überblick.Bitte achten Sie auf die Groß- und Kleinschreibung der Variablen!Variable$_<strong>IP</strong>S['SELF']BedeutungSkriptID des aktuellen Skriptes$_<strong>IP</strong>S['THREAD'] ThreadID des aktuellen Skriptes$_<strong>IP</strong>S['SENDER'] Auslöser des Skriptes. Abhängig vom Wert können sich weitere globale Variablen ergeben. Mögliche Werte sind inder Tabelle Skriptauslöser genauer spezifiziert.Tabelle: Skriptauslöser, die in $_<strong>IP</strong>S['SENDER'] enthalten sein könnenWertExecuteVariableBedeutungBeim Ausführen des Skriptes aus der Konsole oder über die <strong>IP</strong>S_ExecuteScript FunktionenWenn ein Variablenereignis das Skript gestartet hatVariable$_<strong>IP</strong>S['VALUE']$_<strong>IP</strong>S['OLDVALUE']$_<strong>IP</strong>S['VARIABLE']$_<strong>IP</strong>S['EVENT']$_<strong>IP</strong>S['TRIGGER']BedeutungWert der auslösenden Variable zum AuslösezeitpunktWert der auslösenden Variable vor AuslösezeitpunktID der auslösenden VariableID des auslösenden EreignissesTyp des auslösenden EreignissesTimerEventWenn das Skript über ein zyklisches Ereignis gestartet wurdeVariable$_<strong>IP</strong>S['EVENT']$_<strong>IP</strong>S['TARGET']BedeutungID des auslösenden EreignissesID des übergeordneten GerätsRunScriptDesignerWenn das Skript durch eine der <strong>IP</strong>S_RunScript Funktionen ausgeführt wurdeWenn das Skript über eine Komponente des Dashboards gestartet wurdeVariable$_<strong>IP</strong>S['COMPONENT']$_<strong>IP</strong>S['REMOTE_ADDR']$_<strong>IP</strong>S['REMOTE_HOST']BedeutungInhalt des Feldes <strong>IP</strong>SYMID. Dieser Wert hat immer den Typ String<strong>IP</strong> des Gerätes, auf dem die Anfrage ausgeführt worden istHostname des Gerätes, auf dem die Anfrage ausgeführt worden istRegisterVariableWenn das Skript über eine RegisterVariable Instanz gestartet wurdeVariable$_<strong>IP</strong>S['VALUE']$_<strong>IP</strong>S['INSTANCE']BedeutungWert des Puffers, der vom Splitter oder I/O Modul empfangen wurdeID der auslösenden RegisterVariable InstanzShutterControlWenn das Skript über das ShutterControl Modul aufgerufen wurdeVariable$_<strong>IP</strong>S['INSTANCE']BedeutungInstanzID, die im ShutterControl eingestellt ist


$_<strong>IP</strong>S['DIRECTION']$_<strong>IP</strong>S['DURATION']Zu fahrende Richtung:0 = Stop1 = Hoch2 = RunterFahrdauer in MillisekundenStatusEventWenn das Skript über eine Statusveränderung einer Instanz aufgerufen wurdeVariable$_<strong>IP</strong>S['INSTANCE']$_<strong>IP</strong>S['STATUS']$_<strong>IP</strong>S['STATUSTEXT']BedeutungInstanzID zur StatusänderungStatus der Instanz. Eine Auflistung ist hier zu finden: <strong>IP</strong>S_GetInstanceKurztext passend zum StatusStartupShutdownWebInterfaceBeim <strong>IP</strong>-<strong>Symcon</strong> Startup (siehe EventControl)Beim <strong>IP</strong>-<strong>Symcon</strong> Shutdown (siehe EventControl)Beim Abrufen des Skriptes über den WebserverVariable$_<strong>IP</strong>S['INSTANCE']$_SERVER['PHP_SELF']BedeutungID der auslösenden WebServer InstanzDatei/Pfad des gestarteten Skriptes$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']$_SERVER['REMOTE_ADDR']$_SERVER['REMOTE_HOST']$_SERVER['REMOTE_USER']$_SERVER['REQUEST_METHOD']$_SERVER['HTTP_COOKIE']$_SERVER['HTTP_USER_AGENT']$_SERVER['HTTP_CACHE_CONTROL']$_SERVER['HTTP_DATE']$_SERVER['HTTP_ACCEPT']$_SERVER['HTTP_FROM']$_SERVER['HTTP_HOST']$_SERVER['HTTP_CONTENT_ENCODING']$_SERVER['HTTP_CONTENT_VERSION']$_SERVER['HTTP_EXPIRES']$_SERVER['HTTP_CONNECTION']$_SERVER['HTTP_ACCEPT_LANGUAGE']$_SERVER['HTTP_ACCEPT_ENCODING']$_SERVER['DOCUMENT_ROOT']$_SERVER['REQUEST_URI']$_SERVER['SCR<strong>IP</strong>T_NAME']$_SERVER['QUERY_STRING']


ISDNWenn das Skript über ein Ereignis vom ISDN-Modul aus aufgerufen wurdeVariable$_<strong>IP</strong>S['CONNECTION']$_<strong>IP</strong>S['EVENT']$_<strong>IP</strong>S['DATA']BedeutungKanalID der VerbindungDie Variable kann folgende Werte beinhalten:Incoming = Bei eingehendem AnrufConnect = Bei aufgebauter VerbindungDisconnect = Bei beendeter VerbindungPlayFinish = Sobald Audiodatei zuende abgespielt wurdeDTMF = Sobald ein DTMF Ton empfangen wurdeBeinhaltet die gedrückte Taste, wenn das $_<strong>IP</strong>S['EVENT'] gleich DTMF istWebFrontBeim Aufruf eines SkriptesVariable$_<strong>IP</strong>S['INSTANCE']$_<strong>IP</strong>S['REMOTE_ADDR']$_<strong>IP</strong>S['CONFIGURATOR']BedeutungID der auslösenden WebServer Instanz<strong>IP</strong>-Adresse des Gerätes, auf dem die Anfrage ausgeführt worden istID des aktuell genutzten KonfiguratorsBeim Aufruf eines Aktionsskripts, das eine Variable verändern soll, gibt es zusätzlichVariable$_<strong>IP</strong>S['VALUE']$_<strong>IP</strong>S['VARIABLE']BedeutungNeuer Wert der VariableID der zu ändernden Variable


MedienVon <strong>IP</strong>-<strong>Symcon</strong> unterstützte Medien können Sound und Bild-Dateien sowie Formulare sein. Es ist unbedingt notwendig,dass sich die Dateien innerhalb des Hauptordners: “\<strong>IP</strong>-<strong>Symcon</strong>\” befinden. Aus Sicherheitsgründen sind andereVerzeichnisse nicht zulässig. Dateien, die im <strong>IP</strong>-<strong>Symcon</strong>-Dashboard automatisch aktualisiert werden sollen, müssen sichzwingend im Unterordner “\media\” befinden. Weitere Unter-Ordner wie “\media\wetter\” sind zulässig. <strong>IP</strong>-<strong>Symcon</strong>überwacht permanent diese Ordner. Ändern sich die Eigenschaften der Datei, wie z.B. Datum oder Größe, wird dieserkannt und es wird beispielsweise ein Bild im <strong>IP</strong>-<strong>Symcon</strong>-Dashboard neu angezeigt. Alle diese Dateien befinden sichdann im so genannten Media-Pool.Medien hinzufügenUm ein einzelnes Bild dem Media-Pool hinzuzufügen, verwenden Sie den Dialog “Medien hinzufügen”.Sie können dabei ein beliebiges Bild von Ihrer Festplatte, Netzwerk, Internet usw. auswählen.Desweiteren können Sie optional den Namen ändern und einen Ort im Objektbaum angeben:<strong>IP</strong>-<strong>Symcon</strong> erstellt dann eine Kopie des Bildes im Media-Pool.Selbstverständlich können Sie auch mehrere Bilder gleichzeitig - z.B. Wetter-Icons - in den Ordner “\media\…\”kopieren.Der Dienst muss hierfür gestartet sein.Mit einem Doppelklick auf einen Bildnamen im Baumdiagramm erhalten Sie ein Vorschaubild.Medien-Stream hinzufügenÜber den speziellen Medientyp Stream können Sie einfach MJPEG Streams zu Ihrem WebFront hinzufügen.Konsultieren Sie dazu die Dokumentation Ihrer Web-Kamera, um die entsprechende Adresse herauszufinden. Die Größe


des Streams kann ebenfalls über die Konfiguration Ihrer Web-Kamera parametriert werden. Bitte geben Sie innerhalb desDiaglos von <strong>IP</strong>-<strong>Symcon</strong> die vollständige Adresse inklusive des Benutzernamen/Passworts ein.Bitte beachte Sie, dass diese Funktion nicht im Internet Explorer zur Verfügung steht!Sofern der Stream auch von Extern erreichbar sein soll, müssen die entsprechenden Freigaben/Portweiterleitungeneingerichtet sein!


EreignisseEreignisse können Skripte bei bestimmten Bedingungen oder Zeitpunkten starten.Praxisbeispiel: Ausgelöstes EreignisIm Winter soll eine Garage vor Frost geschützt werden, indem eine Heizung eingeschaltet wird. Hierzu wählen Sie bitteunter “Variable” die Quelle aus, die Ihnen die Ist-Temperatur liefert. Der “Auslöser” ist hier die Grenzunterschreitung,also wenn die Temperatur unter fünf Grad fällt. Diese müssen Sie nur noch unter “Wert” eintragen:"Optionen: Nachfolgende Ereignisse ausführen": Ist dieses aktiviert, so wird bei jedem empfangenen Temperaturwert dasSkript ausgeführt, wenn die Bedingung erfüllt ist (hier: < fünf Grad). Ist die Option deaktiviert, so wird das Skript nureinmal ausgeführt. Erwärmt sich der Raum wieder oder kühlt wieder unter fünf Grad ab, wird das Skript natürlich auchwieder erneut gestartet. Dadurch lassen sich z.B. die Funkbefehle an den Schaltaktor erheblich reduzieren.Ein weiteres Beispiel ist die einmalige Benachrichtigung per E-Mail bei einer Temperatur-Über- oder Unterschreitung.Zyklisches EreignisBei diesem Ereignis wird als erstes das Datum überprüft. Dazu gibt es folgende Auswahlmöglichkeiten:Auswahlmöglichkeit BeschreibungKein(e)Ein Datumsvergleich findet nicht statt.Einmalig Hier kann ein bestimmtes Datum eingegeben werden: z.B.: 01.06.2009.TäglichSoll ein Ereignis nur jeden zweiten Tag stattfinden, so muss hier eine “2! eingegeben werden.Wöchentlich Soll ein Ereignis nur werktags stattfinden, so muss hier Samstag und Sonntag deaktiviert werden oder 14-tägig am Freitag: Freitag aktivieren und “Alle 2 Wochen am”.MonatlichJährlichSoll ein Ereignis nur jedes Quartal stattfinden, so muss hier eine “3! eingegeben werden.Z.B. “Am 14.Juni” wird das Skript jährlich ausgeführt.Für alle Einstellungen können Sie noch zusätzlich Start (Seit) und End-Zeitpunkt (Bis) - mit oder ohne Begrenzung -eingeben.


Nach dem Datumsvergleich wird auch der Zeitpnukt überprüft. Dazu gibt es folgende Auswahlmöglichkeiten:Auswahlmöglichkeit BeschreibungEinmalig Z.B. für das morgendliche Weck-Programm um “06:30:00!SekündlichSoll ein Ereignis alle zehn Sekunden stattfinden, so muss hier eine “10! eingegeben werden.MinütlichSoll ein Ereignis alle halbe Stunde stattfinden, so muss hier eine “30! eingegeben werden.StündlichSoll ein Ereignis stündlich stattfinden, so muss hier eine “1! eingegeben werden.Für alle Einstellungen können Sie noch zusätzlich Start (Seit) und End-Zeitpunkt (Bis) -mit oder ohne Begrenzungeingeben.Besonderheit:Soll das Ereignis z.B. “15 Minuten nach” stattfinden – also nicht zur vollen Stunde, so ist hier “00:15:00! einzutragenoder bei den Minuten beispielsweise “00:00:30!.


VariablenZum Austausch und zur Speicherung aller Daten benutzt <strong>IP</strong>-<strong>Symcon</strong> sogenannte Variablen. Variablen sind im GrundeDatenhalter, die es erst möglich machen, dass die Temperatur eines Thermometers auf dem WebFront sichtbar wird oderdass ein An- bzw. Ausschalten der Beleuchtung überhaupt funktioniert.Bei <strong>IP</strong>-<strong>Symcon</strong> gibt es zwei Arten von Variablen.Zum einen hat jedes Gerät eine oder mehrere Status-Variablen, die automatisch erstellt und auf der WebFront angezeigtwerden. In diesen Variablen wird der Status des Gerätes gespeichert (z.B. An / Aus oder Temperatur in °C).Zum anderen haben Sie die Möglichkeit sogenannte Komfort-Variablen selbst zu erstellen. Diese Funktion ist optionalund wird meist nicht benötigt. Wollen Sie aber ein bisher unbekanntes Gerät (z.B. AV-Verstärker) in Ihr Systemintegrieren oder einen Wert umrechnen steht Ihnen diese sinnvolle Funktion zur Verfügung. Wenn Sie beispielsweisewissen wollen, wieviel Grad Fahrenheit (°F) draußen gerade sind, dann steht dem nun nichts mehr im Wege, denn mitdieser Funktion ist eine Umrechnung von Grad Celsius (°C) auf Grad Fahrenheit (°F) und das Anzeigen beider oder auchnur eines Wertes im WebFront kein Problem mehr. Sie müssen dabei allerdings noch beachten, welche der folgenden vierVariablentypen, für Ihre Zwecke geeignet sind. Bei einem Thermometer wäre wahrscheinlich “Float” der passende“Begleiter”, denn hier ist das Anzeigen der Temperatur im WebFront als Kommazahl möglich.Typ Beschreibung BeispielBoolean True / False z.B. An oder AusInteger Ganze Zahlen z-B. -10 … -4 … 0 … 32 … 472Float Gleitkommazahl z.B. 231,956String Text “Hallo <strong>IP</strong>-<strong>Symcon</strong>”Video-TutorialLaden …Neue Variablen anlegenSie können neue Variablen anlegen, indem Sie auf der Startseite der Konsole unter “Objekte erstellen” auf “Variablehinzufügen” klicken oder unter “Objektbaum” in der “logischen Baumansicht” per Kontextmenü den Punkt “Variablehinzufügen” auswählen. Die zweite Möglichkeit hat den Vorteil, dass die Variable direkt unterhalb des von Ihnenausgewählten Objekts erstellt wird und nicht erst hinterher einsortiert werden muss. Sie entscheiden sich nun für einenVariablentyp, klicken auf “Weiter” und wählen danach bei “Eigenes Profil” einen Wert aus, den Sie darstellen wollen undklicken nochmals auf “Weiter”.Ganz wichtig ist nun die Aktivierung des Datenbank-Loggings durch ein Häkchen.Jetzt entscheiden Sie sich nur noch für einen Aggregationstyp und klicken abermals auf „Weiter“ Bevor Sie nun zumAbschluss mit “OK” bestätigen, sollten Sie darauf achten, dass Sie der neu erstellten Variable einen aussagekräftigen


Namen geben. Optional können Sie noch eine Bemerkung hinzufügen. Den Ort der Variablen können Sie mit demDialog “Auswählen” festlegen oder ihn nachträglich im Objektbaum verschieben.VariablenprofileAb <strong>IP</strong>-<strong>Symcon</strong> Version 2.1 können Sie ihrer Variable ein Profil geben, mit dem Sie die Variable für die Visualisierungvorbereiten und z.B. ein °C anhängen. Diese Optionen können Sie auch nachträglich verändern. Eine genauereBeschreibung der Möglichkeiten finden sie hier: VariablenprofileVariablenwerte bearbeitenMit einem Doppelklick auf den Namen der Variablen können Sie das Profil einer Variable verändern oder das Loggendieser in die Datenbank aktivieren.Um die Werte einer Variable mitschneiden oder verändern zu können müssen Sie per Doppelklick auf den Wert derVariable in den “Überwachungsmodus” wechseln. Alternativ können Sie per Kontextmenü auch den Eintrag “Variableausführen” auswählen.Diese Funktion ist primär für Testzwecke konzipiert, um beispielsweise zu überprüfen, ob bei einer von Ihnen nunsimulierten Temperatur, die Heizung eingeschaltet wird. Ferner ist es möglich die Darstellung der Variablenprofile imWebFront zu kontrollieren.Das nachfolgende Bild zeigt das Überwachungsfenster, indem fortlaufend die Variablenwerte angezeigt werden undwährenddessen modifiziert werden können. Ein Veränderung kann entweder über den Button “Schreiben” bestätigtwerden oder über die Return-Taste.Falls die Variable eine Status-Variable ist, können Sie den Wert modifizieren, obwohl dieser als schreibgeschütztmarkiert ist. Bei einer Wertänderung werden auch alle damit verbundenen Ereignisse ausgeführt. Das ist nützlich zumTesten eigener Ereignisse, sollte im Live-Betrieb aber mit Vorsicht genutzt werden.SpezialvariablenSystemvariablen haben im engeren Sinn, nichts mit normalen Variablen zu tun, da diese nur innerhalb von Skriptenverfügbar sind.Die Beschreibung dazu finden sie unter dem Punkt Skripte.


VariablenprofileVariablenprofile werden primär dafür genutzt, um Variablenwerte wie True, False oder 0, 1, 2, 3 in eine für den Menschenleserliche Form zu bringen und mit den notwendigen Kontextdaten (z.B. °C) zu versehen.Dabei kann für die eigenen Variablen aus einer Vielzahl von Standardprofilen gewählt oder eigene erstellt werden, welchedann für beliebig viele Variablen verwendet werden können.Nutzen Sie auch unser Video-Tutorial und Beispiele zu diesem Thema unter Variablenprofile verwendenUm die Variablenprofile editieren zu können, müssen Sie die Variable in der Baumansicht auswählen und über dasKontextmenü auf “Objekt öffnen” drücken. Aktiveren Sie die Checkbox “Experteneinstellungen”. Sobald sie den erstenDialog mit "Weiter" bestätigen, könne Sie Ihre eigenen Profile editieren.Sie haben die Möglichkeit, ein Profil aus den vorgefertigten Profilen auszuwählen oder ein eigenes zu erstellen. Um eineigenes Profil zu erstellen, müssen Sie auf “Neu” klicken und dem Profil einen Namen geben.Obwohl die Variablenprofile nach Typen (Boolean, Integer, Float, String) unterschieden werden, kann ein Profilnamejeweils nur einmalig vergeben werden.Sie erkennen Standard-Profile an der Tilde (~) vor dem Profilnamen. Diese Profile werden vom System erstellt undkönnen von Ihnen nicht editiert werden. Sie dürfen die Tilde auch nicht in in eigenen Profilnamen verwenden.Wenn sie ein neues Profil erstellt haben, müssen sie auf “Ändern” klicken, um in den Editiermodus zu gelangen. Siehaben dann folgende Möglichkeiten, Änderungen am Profil vorzunehmen:Parameter Typ BeschreibungPräfix Alle Typen String vor dem eigentlichen Wert, wie z.B. feste BeschreibungSuffix Alle Typen String nach dem eigentlichen Wert wie z.B. °C; Sonderfall: Beim Wert % wird der Wert mitHilfe von Min/Max in einen Prozentwert umgerechnet. (Wert = (Wert – Min) * 100 / (Max –Min))Min Wert Integer, Float Kleinster möglicher Wert der Variable für die VisualisierungMax Wert Integer, Float Größter möglicher Wert der Variable für die VisualisierungSchrittweite Integer, Float Aus Schrittweite berechnet sich die Anzahl der Felder, die in der Visualisierung zum Anklickenerstellt werden (z.B.: Min = 0, Max = 100). Bei einer Schrittweite von 25 würden die Werte 0,25, 50, 75, 100 zur Auswahl stehen. Ist die Schrittweite auf 0 gesetzt und sind Assoziationenvorhanden, so werden direkt alle Assoziationstexte nacheinander aufgelistet. Hierbei entfallendie sonst gezeigten Pfeile zum Durchklicken. Dieses Feld wird nur ausgewertet, wenn die zu


visualisierende Variable durch Zugehörigkeit zu einer Instanz bereits eine Aktion zugewiesenbekommen hat oder Sie ihr ein Aktionsskript zugewiesen haben.Stellen Float Gibt die Anzahl der angezeigten Nachkommastellen an.Standard Icon Alle Typen Falls kein Icon über die Assoziationen vorhanden ist, wird das Standard-Icon verwendet. Solltediese Feld leer bleiben, wird auf das Objekt Icon zurückgegriffen. Alle vorhandenen Iconskönnen Sie hier finden: WebFront IconsAssoziationenBoolean, Integer,FloatBoolean: Zu jedem der beiden Möglichen Werte (True, False) kann ein Text und ein Iconangegeben werden, welches statt des eigentlichen Wertes angezeigt wird. Es wird nur dieDarstellung beeinflusst. Der Wert der Variable bleibt erhalten. Integer/Float: 1.Wie beiBoolean ist es möglich, für einen Wert eine Repräsentation über einen Text und ein Icon zuwählen. Dabei muss im einfachsten Fall für jeden Wert ein Text und Icon angegeben werden.2. Die zweite Möglichkeit besteht darin, Werte auszulassen, um z.B. nur wichtige Positionen,die eine Änderung benötigen, anzuzeigen. So könnten für eine Jalousie z.B. nur die Werte 0,50, 100 interessant sein, da Sie nur dafür Icons verwenden. Sie können nun die Assoziationendefinieren, indem Sie für die Werte 0, 50, 100 einen Eintrag hinzufügen. Dabei würden dieEinträge für folgende Werte gültig sein: 0 (0-49), 50 (50-99) und 100 (100). 3. Zuletzt haben Siedie Möglichkeit, einen Ausdruck zu generieren, der den aktuellen Wert enthält. Dafür könnenSie den %d (int) oder %f (float) Platzhalter nutzen. Ein Beispiel wäre das Vorhandensein von17 Bilder für den FS20 Dimmer. Sie könnten nun für den Wert 0 das Icon als “LampeAus”definieren und für den Wert 16 (der für die Werte 1-16 steht) das Icon als “Lampe%d”definieren, welches den Einträgen “Lampe1! bis “Lampe16! entspräche. Hinweis: Wird einesder beiden Felder (Text / Icon) leer gelassen, so wird der normale Wert oder das StandardIcon verwendet. Für einen leeren Text muss ein Leerzeichen verwendet werden.Profile werden nur für die Visualisierung verwendet. Sobald der Variablenwert außerhalb der angegebenen Min/MaxGrenzen liegt oder außerhalb der spezifizierten Assoziationen, kann eine falsche oder gar keine Ausgabe desjeweiligen Wertes erfolgen.Beispiel:Wenn im Profil Min=0 und Max=20 definiert sind und % als Suffix angegeben wurde, aber der Variablenwert 40 ist, sowird in der Visualisierung 200% angezeigt. Die Min/Max Werte limitieren nicht den Variablenwert!Je nach Variablentyp können als Platzhalter %d und %f genutzt werden. Um die Nachkommastellen zu beeinflussen,kann folgendes Format verwendet werden (%.2f für zwei Nachkommastellen).Um das Prozentzeichen (%) innerhalb eines Assoziationstextes nutzen zu können, muss ein doppeltes Prozentzeichen(%%) eingegeben werden.AktionenEine weitere Funktionalität eines Variablenprofil ist, dass bei einer Änderung des Wertes innerhalb der Visualisierungein Skript aufgerufen werden kann. Das ermöglicht das Steuern von Geräten und das Aktualisieren der Variable, die mitdem Profil verknüpft ist und die die Änderung angefordert hat. Unter Systemvariablen können Sie nachsehen, welchespeziellen Variablen Ihnen in dem aufgerufenen Skript zur Verfügung stehen.Aus einer Kombination von Dummy Modulen (Instanz) einer Variable mit verknüpften Variablenprofil und einemverknüpften Aktionsskript können Sie die Funktion eines nativen <strong>IP</strong>-<strong>Symcon</strong> Moduls nachbilden.In einem Aktionsskript sollte der Schaltvorgang und zumindest die Anweisung stehen, die die Variable auf denangeforderten Zustand setzt://Variable setzenSetValue($_<strong>IP</strong>S['VARIABLE'], $_<strong>IP</strong>S['VALUE']);//Gerät schaltenFS20_SwitchMode(12345, (boolean)$_<strong>IP</strong>S['VALUE']);


KategorienUm eine einfache Bedienung Ihrer verschieden agierenden Geräte zu gewährleisten und um einen Überblick über dieVielzahl Ihrer Geräte zu behalten, bietet Ihnen <strong>IP</strong>-<strong>Symcon</strong> eine fabelhafte Möglichkeit. Sie können im Objektbaum IhreGeräte verschiedenen Kategorien zuordnen.Gehen Sie dafür unter „Objekt erstellen“ auf „Kategorie hinzufügen“. Nun können Sie einen Namen für beispielsweiseeinen Bereich eingeben, in dem sich einige Ihrer Geräte befinden. In einem Einfamilienhaus bietet sich z.B. hier die Bezeichnungdes Stockwerkes an.Wenn Sie jetzt auf „Objektbaum“ klicken, finden Sie unter „<strong>IP</strong>-<strong>Symcon</strong>“ die von Ihnen erstellte Kategorie. Auf diese Artund Weise können Sie noch weitere Oberkategorien erstellen. Z.b. Erdgeschoss, 1. Stock, 2. Stock...Unterkategorien lassen sich ebenfalls ganz einfach hinzufügen. Klicken Sie im Objektbaum,während Sie sich auf einerausgewählten Oberkategorie befinden, mit der rechten Maustaste auf „Objekt hinzufügen“ und weiter auf „Kategoriehinzufügen“. Dann wählen Sie einen Namen für Ihre Unterkategorie aus (z.B. Wohnzimmer) und bestätigen diesen. Dieslässt sich beliebig oft auch für jegliche Unterkategorie wiederholen. Wir empfehlen Ihnen aber der Übersicht wegen, es beizwei Kategorien pro Bereich zu belassen.Kategorien können Sie mit der rechten Maustaste unter „Objekt einordnen“ beliebig ordnen.Per Drag and Drop können Sie Ihre Geräte nun nach Herzenslust den jeweils passenden Kategorien zuordnen.Beachten Sie beim Löschen einer Kategorie mit der rechten Maustaste unbedingt, dass ggf. dabei ebenfalls alleUnterkategorien und alle hier eingeordneten Geräte im Objektbaum gelöscht werden.Ihre Geräte können Sie außerdem problemlos mit der rechten Maustaste umbenennen.Wir schlagen Ihnen vor, die Bezeichnung der Kategorien / Unterkategorien / Geräte wie folgt zu verwenden:Etage / Zimmer / GerätSie sollten diese Bezeichnungsart von vornherein nutzen, da im Lauf der Zeit immer mehr Geräte hinzukommen undirgendwann sonst der Überblick verloren geht.Jede Ihrer Bezeichnungen sollte nur sich selbst erklären und keine Komponenten enthalten, die vorher schon genanntwurden.Z.B.: Erdgeschoss / Wohnzimmer / Deckenlampe (Nordseite)Das Beste daran, wenn Sie nun Ihr WebFront öffnen, dann visualisiert dies Ihre personalisierte Objektbaumstrukturautomatisch.Sofern die angezeigte Oberkategorie sichtbare Unterkategorien hat, wird automatisch eine Kategorie-Navigationsleisteangezeigt. Wird über die Navigation eine Unterkategorie ausgewählt, so wird im Objektbereich deren Inhalt dargestellt.Besitzt eine so angezeigte Kategorie ebenfalls sichtbare Unterkategorien, so wird die Navigation automatisch erweitert.Selbstverständlich werden auch per Link-Objekt verknüpfte Kategorien in der Navigationsleiste angezeigt. Über dieEigenschaft “Zeige Navigation” lässt sich die Kategorieleiste bei Bedarf ausblenden.Nun viel Spaß mit Ihrer ganz persönlichen „Fernbedienung“.Für Nutzer der Version 1 wird dies eine Umgewöhnung bedeuten, da ab jetzt mehrere gleichnamige Instanzen/Variablen/ Skripte erlaubt sind. Die Eindeutigkeit wird nun nur durch die IDs erreicht, die an den jeweiligen Stellenbenutzt werden müssen.Im Skripteditor können die IDs über STRG+O ausgewählt werden. <strong>IP</strong>-<strong>Symcon</strong> fügt dann automatisch einenKommentar im o.g. Format hinzu. Dieser Kommentar wird auch bei jedem Öffnen des Skripts aktualisiert. Siekönnen also Ihre Instanz/ Variable/ Skript beliebig verschieben/ umbenennen und haben trotzdem immer dieÜbersicht, welches Gerät verwendet wird.Sollte es in <strong>IP</strong>-<strong>Symcon</strong> Stellen geben, in der diese Pfaddarstellungen nicht ersichtlich sein sollte und z.B. nur derName erkennbar ist, so ist dies ein Fehler und sollte dem <strong>IP</strong>-<strong>Symcon</strong> Support gemeldet werden.


Komponenten<strong>IP</strong>-<strong>Symcon</strong> besteht aus mehreren Komponenten, die in den nachfolgenden Unterpunkten genauer erklärt werden.


TrayDie <strong>IP</strong>-<strong>Symcon</strong> Tray Anwendung ist die Schnittstelle zum <strong>IP</strong>-<strong>Symcon</strong> Dienst, der im Hintergrund läuft. Über dasKontextmenü können sie Administrative Dinge erledigen, wie das Starten oder Stoppen des Dienstes oder das Öffnen derVerwaltungskonsole, über den Sie die Dienst konfigurieren können.Über die Tray-Anwendung können sie weiterhin:Live-Update startenDienst deinstallierenLizenz ändern


DienstDer Dienst ist das Herzstück von <strong>IP</strong>-<strong>Symcon</strong>. Er läuft immer im Hintergrund und wird beim Start von Windowsautomatisch mit gestartet. Dadurch muss auch kein Benutzer am Rechner/Server eingeloggt sein, um eine einwandfreieFunktion zu gewährleisten.


PHP<strong>IP</strong>-<strong>Symcon</strong> verwendet als Skriptsprache PHP. In der aktuellen <strong>IP</strong>-<strong>Symcon</strong> Version wird PHP 5.4 verwendet. Durch dieTatsache, dass PHP komplett integriert ist, können alle Vorteile von PHP genutzt werden. Die Ausführung der Skriptekann dabei parallel erfolgen.Zusätzlich zu den normalen PHP Funktionen sind spezielle <strong>IP</strong>-<strong>Symcon</strong> Funktionen vorhanden, über die auf <strong>IP</strong>-<strong>Symcon</strong>spezifischeEinstellungen (siehe Befehlsreferenz) oder über die in <strong>IP</strong>-<strong>Symcon</strong> eingerichteten Geräte zugegriffen werdenkann (siehe Modulreferenz).Die aus PHP bekannte "php.ini" ( php.net/manual/de/ini.php ) ist in <strong>IP</strong>-<strong>Symcon</strong> ebenfalls vorhanden. <strong>IP</strong>-<strong>Symcon</strong>konfiguriert dabei die “extension” Einträge automatisch, anhand der vorhandenen Erweiterungen, die im “<strong>IP</strong>-<strong>Symcon</strong>/ext” Ordner abgelegt wurden.PHP Erweiterungen installierenUm eine PHP Erweiterung installieren zu können, müssen Sie sich diese von der PHP Seite herunterladen. Zu beachtenist, dass die Version mit der in <strong>IP</strong>-<strong>Symcon</strong> genutzten PHP Version übereinstimmt. Desweiteren ist die Thread-Safe (TS)und die VC9 Variante des Kompilats zu nutzen.Aktuell können die Erweiterungen hier heruntergeladen werden: <strong>Download</strong>Aus dem Z<strong>IP</strong>-Paket können die gewünschten Erweiterungen (ext-Ordner) in den “<strong>IP</strong>-<strong>Symcon</strong>/ext” Ordner kopiertwerden. Eine PHP Erweiterung ist normalerweise an dem “php_” Prefix zu erkennen. Manche Erweiterungen benötigenevtl. noch zusätzliche "dll’s", die in den Hauptordner kopiert werden müssen. Entnehmen sie diese Information bitte demHandbuch der jeweiligen Erweiterung.<strong>IP</strong>-<strong>Symcon</strong> muss neu gestatet werden, damit die neu installierten Erweiterungen aktiv werden.PHP konfigurierenMögliche Konfigurationsparameter können dem PHP Handbuch entnommen werden. Eine nützliche Einstellung ist dieVerlängerung der maximalen Skriptlaufzeit, falls etwaige Skripte (z.B. ShutterControl) dies notwendig machen sollten.Falls sie diese Einstellung verändern, sollte ihnen bewusst sein, dass sie nur eine begrenzte Anzahl von PHP Skripten in<strong>IP</strong>-<strong>Symcon</strong> parallel ausführen können. Wenn durch eine lange Skriptlaufzeit alle Slots besetzt sein sollten, werden andereSkripte in eine Warteschlage abgelegt und erst verzögert aufgerufen. “Sleep”-Anweisungen sollten deshalb immervermieden und gegen “Timer”-Anweisungen getauscht werden.Beispiel: Maximale Skriptlaufzeit auf 5 Minuten erhöhen.[PHP]max_execution_time=300<strong>IP</strong>-<strong>Symcon</strong> muss nach einer Änderung der "php.ini" neu gestartet werden!


SchnittstellenHardware ModuleKomponenten Hersteller Schnittstelle Kommunikation AnschlussmöglichkeitenFS20, HMS, FHT,KS300ELV FHZ1000PC, FHZ1300PC, FHZ1350PC Funkbasiert(868Mhz)Xcomfort Eaton USB Gateway (CKOZ-00/03)ECI/LAN Gateway (CCIA-*/01)HomeMatic ELV HomeMatic CCUHomeMatic LANZ-Waveu.a. ACT, Popp, Düwi, Z-Wave Gateway mit SerialAPI von Zensys.Merten, Innovus, Fibaro (z.B. von TrickleStar, AeonLabs)EnOcean EnOcean Alliance EnOcean TCM2xx (ESP2),EnOncean TCM3xx (ESP2/ESP3)Funkbasiert(868Mhz)Funkbasiert(868Mhz)Funkbasiert(868Mhz)Funkbasiert(868Mhz)FS10 ELV FS10 Wetterempfänger Funkbasiert(433Mhz)USB, WLAN*,Seriell*, LAN*USB, Seriell, LANLANUSB, Seriell,LAN*USB, Seriell, LANSeriell, LAN*1-Wire Maxim Dallas 1-Wire Stick Kabelgebunden USB, Seriell,LAN*LCN Issendorff LCN PK (LCN PCHK, LinHK) Kabelgebunden LAN (PCHKSeriell)EIB/KNXSiemens/Vipa SPSModBus TCP,ModBus RTU,ModBus RTU overTCPu.a. Siemens AG,EIBMarkt, Gira, Jung,Merten, WeinzerlSiemens AGV<strong>IP</strong>Az.B. Wago/BeckhoffSPSAlle FT1.2 (Seriell) Interfaces und alleKNX/<strong>IP</strong> Interfaces (Tunneling-Protokoll)werden unterstützt.**Explizit getestet:- EIBMarkt IF-RS232- EIBMarkt N000401- Siemens N146- Siemens N148/21KabelgebundenSeriell, LANLibNoDave Kompatibles Gerät Kabelgebunden Seriell, PC-Kartez.B. Wago 750-841 Kabelgebunden Seriell, LANM-BUS z.B. ALLMESS z.B. Relay Kabelgebunden Seriell, LAN*DMX a.u. DMX4ALL DMX4ALL Interface Kabelgebunden USBUVR1611 Technische Alternative BLNet Kabelgebunden USB, LANIR-Fernbedienungen u.a. IRtrans IRTrans/LIRC Empfänger Kabelgebunden USB, LANVelleman Board Velleman USB Board Kabelgebunden USBISDN Modul diverse CAPI 2.0<strong>IP</strong>-<strong>Symcon</strong>Funksystem<strong>IP</strong>-<strong>Symcon</strong>/ProJet USB-T 868LAN-868* Ein entsprechender Schnittstellenwandler wird benötigt.Funkbasiert(868Mhz)USB, LAN** Sofern Ihre KNX/<strong>IP</strong> Schnittstelle nicht kompatibel sein sollte, liefern wir Ihnen zeitnah ein Update oder erstattenden Kaufpreis. Eine Ausnahme stellt die Siemens N148/22 dar. Diese funktioniert, ist jedoch unter bestimmtenBedingungen nicht zuverlässig.Virtuelle ModuleBezeichnung Funktionen BesonderheitenMedia Player WAV, MP3, WMA, Shoutcast, IceCast, WMALive Mehrere Soundkarten


gleichzeitigText To SpeechSprachsynthese für direkt Ausgabe auf den Lautsprecher oder in eine beliebigeWAV Datei verschiedener Formate/QualitätenSystemInformationen CPU Last, Festplattenauslastung, Batteriestärke, DruckerwarteschlangeRRDToolShutter ModulCutterText ParserEvent ControlPlottet Graphen für z.B. TemperatursensorenPositioniert ihre Rolladen auf einen genauen % Wert, auch wenn ihre Moduleigentlich nur Hoch/Runter fahren kann.Verarbeitet Binärdaten und zerschneidet/synchronisiert diese. Kann mit denSchnittstellenmodulen verwendet werden.Extrahiert Daten aus einem Text der z.B. vom WWW Reader geliefert wurde.Reagieren auf spezielle Ereignisse wie Start/Stop des Systems, um spezielleSystemzustände zu speichern/einzulesenbenötigt SAPI 5.1 oder höher(XP, W2k3, Vista)Muss einmalig angelerntwerdenSchnittstellen ModuleSchnittstelle Funktion BesonderheitenSerial Port (Com Port) - -FTDI USB -> Seriell Wandler Natives Modul (Kein virtueller ComPort nötig)USBXpress USB -> Seriell Wandler Natives Modul (Kein virtueller ComPort nötig)HID - -Client Socket - Nur TCP. Kein UDP.Server Socket - -WWW Reader Ruft/liest Webseiten aus Proxy, Basic Authentication Support


VerwaltungskonsoleBilder der Verwaltungskonsole können sie dem Screenshot-Bereich entnehmen.


VisualisierungenDas WebFront muss nicht konfiguriert werden und ist ohne jegliche erweiterte Einstellungen vollständig benutzbar.Alle hier vorgestellten Möglichkeiten sind optional und können von erfahrenen Benutzern verwendet werden, um dieVisualisierung noch besser an Ihre Bedürfnisse anzupassen.Das WebFront bietet eine einfache und ansprechende Möglichkeit, Geräte anzuzeigen und zu schalten, Bilder anzuzeigenund Skripte auszuführen. Je nach Client kann das normale Full-Featured WebFront verwendet werden, oder es werdenLegacy-Versionen angeboten, die weniger Funktionen anbieten, jedoch die notwendigen Basisfunktion abdecken.WebFront VersionenVersionWebFront (inkl.Editor)WebFront (ohneEditor)WebFront RetroWebFrontRetroMobileiFront (iOS)Mobile (Android)BeschreibungDie HTML5 Version vom WebFront lässt sich mit den aktuellen Versionen der gängigsten Webbrowser aufrufenund bedienen. Dazu gehören:Google Chrome (25+) [offiziell empfohlen]Mozilla Firefox (19+)Apple Safari (5.1+)Opera (12+, CSS3-Animationen erst mit Opera Next)Microsoft Internet Explorer (10+)Apple iOS (5.1+)Google Android (2.3+, CSS3 Animationen erst ab Android 3.0)Eine Ansicht für ältere Browser, die auf HTML 4.01 mit dem ISO-8859-1 Zeichensatz basiert. Diese Versionfunktioniert ohne JavaScript und Ajax-Updates, daher wird die Seite regelmäßig neu geladen. Alle Browser, diedie oben genannten Anforderungen nicht unterstützen, werden auf die Retro Variante vom WebFrontumgeleitet. Diese ist limitiert auf die Anzeige von Instanzen, Variablen und Medien.Mozilla Firefox (1+)Internet Explorer (4+)Netscape (3+)Diese Version entspricht dem WebFront Retro, ist jedoch für Geräte mit kleineren Displays optimiert.Internet Explorer MobilePocket Internet Explorer (Windows CE)Das iFront ist eine native App, die direkt über den AppStore erworben werden kann. Es werden alle iOS-Geräteunterstützt, die iOS 4.x oder neuer installiert haben.<strong>IP</strong>-<strong>Symcon</strong> iFront für iPhone, iPod touch und iPad im iTunes App StoreDas Android Gegenstück zum iFront ist auch eine native App, die direkt über Google Play erworben werdenkann.<strong>IP</strong>-<strong>Symcon</strong> Mobile für Android Geräte bei Google PlayEinrichtungUm das WebFront zu installieren, klicken Sie in der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole auf WebFront installieren. Dieerfolgreiche Installation wird per Popup bestätigt. Nun reicht ein Klick auf "WebFront öffnen", um das WebFrontinnerhalb der Verwaltungskonsole anzuzeigen. Das WebFront steht von nun an auch jedem anderen Gerät mit Browserim Netzwerk zur Verfügung. Trägt der Rechner, auf dem der <strong>IP</strong>-<strong>Symcon</strong>-Server installiert ist, den NamenHeimserver,steht das WebFront unter der Adresse http ://Heimserver:82/ im lokalen Netzwerk zur Verfügung. Ist die<strong>IP</strong>-Adresse des Rechners bekannt, z.B. 192.168.1.2, lässt sich WebFront auch unter dieser in der Form http://192.168.1.2:82/ aufrufen.KonfigurationGrundsätzlich läuft das WebFront ohne weitere Konfiguration. Es können allerdings diverse Einstellungen gemachtwerden. Die entsprechende Dokumentation kann den Unterseiten von diesem Dokument entnommen werden. Diegenerelle, versionsübergreifende Konfiguration wird weiter unten beschrieben. Eine Auswahl von Icons für Objekte imWebFront ist unter WebFront Icons zu finden.Konfiguration öffnenDie Konfiguration kann direkt von der Willkommensseite der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole gestartet werden, sobald


das WebFront erstmalig installiert wurde. Über den Menüpunkt “WebFront konfigurieren” kann die Konfigurationgeöffnet werden.KonfiguratorenIn <strong>IP</strong>-<strong>Symcon</strong> Basic ist ein Konfigurator verfügbar, der jedoch nur sehr eingeschränkt verändert werden kann. In der <strong>IP</strong>-<strong>Symcon</strong> Professional Version können insgesamt bis zu fünf (5) unterschiedliche Konfiguratoren erstellt werden, dieeigenständig über die WebFront-Startseite aufgerufen werden können und mit einem Passwort bei Bedarf abgesichertsind. Ein Konfigurator kann als eigenständige Einheit - für z.b. ein Visualisierungsobjekt - erstellt werden, eine spezielleAnsicht für den Wartungstechniker darstellen oder einfach nur eine Sicherheitsspezifische Trennung erzeugen. ProKonfigurator sind dieselben Optionen verfügbar und können beliebig angepasst werden. In der Unlimited Version sindbeliebig viele Konfiguratoren erstellbar.


WebFrontBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 3.0Die Konfiguration vom WebFront benötigt die <strong>IP</strong>-<strong>Symcon</strong> Professional VersionBedienungAm oberen Bildschirmrand können im WebFront eingerichtete Elemente ausgewählt werden. Dies sind standardmäßig<strong>IP</strong>-<strong>Symcon</strong> zur Gebäudesteuerung und Wetter zur Anzeige der aktuellen Wetterdaten und Voraussagen des DeutschenWetterdienstes. Ein Klick auf einen Modulnamen zeigt dieses im Mittelteil an. Der aktuelle Modulname wird hellerhinterlegt. Im Mittelteil werden die Hauptelemente eines Moduls angezeigt. Die weiteren Leisten am oberenBildschirmrand bieten Steuerungsmöglichkeiten zur aktuell ausgewählten Kategorie.WebFront-EditorLaden …KonfigurierenDie Konfiguration ist in mehrere Teile aufgeteilt. In jedem Reiter können verschiedene Einstellungen angepasst werden.In diesem Artikel werden primär die Einstellungsmöglichkeiten für das normale WebFront vorgestellt. DieKonfigurationsmöglichkeiten für die speziellen WebFront Versionen können auf eigenständigen Seiten nachgelesenwerden:In den einzelnen Reitern können folgende Einstellungen angepasst werden:ReiterStrukturDarstellungMobile/RetroSicherheitBeschreibungKonfiguration der einzelnen Elemente aus der ein WebFront bestehtKonfiguration von einem Titel und Icon im Login-BirdschirmSpezielle Einstellungen für die Retro/RetroMobile, Mobile (iOS) und Mobile (Android) Versionen könnenvorgenommen werden.Ermöglich die Einstellung eines Passwortes zur Zugriffskontrolle und einer speziellen <strong>IP</strong>-AutoStart FunktionBenachrichtigungen Erlaubt das Versenden von Test-Nachrichten an konfigurierte Geräte und das Löschen.Abweichungen zwischen WebFront 2.x und WebFront 3.0Benutzerdefinierte Icons müssen als Skin erstellt werden (Anleitung).Dies ist kein Fehler sondern gewollt.​Instanzen unterhalb von Instanzen werden nicht angezeigtDie Funktion muss explizit pro Konfigurator aktiviert werden (Verschachteln)​


Windows öffnet leider kein On-Screen-KeyboardBitte Chrome verwenden und dieses virtuelle Keyboard installieren: Virtual KeyboardGraphen werden im Dashboard nicht angezeigtBitte dieser Anleitung folgen: Graphen im Dashboard


StrukturDer Konfigurator kann Elemente enthalten, die in der Visualisierung als Reiter ausgehend vom oberen linken Randanfangen und zusätzlich Widgets enthalten, die in einem extra Bereich am oberen rechten Rand beginnen. Dieser Bereichist dem SysTray von Windows ähnlich. Ein Element oder Widget kann über den Hinzufügen Button eingefügt undentsprechend konfiguriert werden. Ein Element besteht aus einer eindeutigen ID, die automatisch vergeben wird, einerPosition und einer dem Element entsprechenden Konfiguration.Die ID kann vom Benutzer beim Erstellen angegeben werden, um das Element bei Aktionen besser wiedererkennen zukönne. Die ID hat keinen Zusammenhang mit den ObjektIDs der Instanzen oder Variablen.Die Position gibt jeweils die Position im Reiter oder der Widget-Leiste an und muss einen Wert größer gleich Nullerhalten. Wenn zwei Elemente die gleiche Positionsnummer haben, wird die Reihenfolge durch den Titel des Elementesdefiniert.Die Konfiguration ist je nach Typ des Elements unterschiedlich und wird im nächsten Kapitel für jedes Modul einzelnbeschrieben.Übersicht der verfügbaren ElementeElementKategorieGraphExterne SeiteInhaltswechslerSplitPaneTabPaneWetter (DWD)Uhrzeit WidgetInfo WidgetBeschreibungÜber dieses Element lässt sich eine Kategorie und all seine Unterobjekte im WebFront anzeigen. Die ID deranzuzeigenden Kategorie kann über den Startkategorie Parameter verändert werden.Über dieses Element werden die im Archiv Modul eingestellten Graphen direkt angezeigt. Normalerweise könnenGraphen über das Icon links vom Wert der Variable aufgerufen werden. Falls Graphen direkt in z.B. TabPanesoder SplitPanes eingebettet werden sollen, kann dies über das Graphen Element geschehen.Diese Element fügt eine externe Seite in das WebFront über ein IFrame ein. Die Parameter-URL und Intervallsind verfügbar.Über den Inhaltswechsler können mehrere Mediendateien, Strings, HTMLBoxen, StringBoxen, Mail-Instanzenoder externe Seiten innerhalb einer Seite umgeschaltet werden.Über SplitPanes (ehemals Container) kann die WebFront-Ansicht in zwei Teile aufgespaltet werden und in jedenTeil ein beliebig anderes Element eingefügt werden. Wenn SplitPanes in SplitPanes eingefügt werden, kann somitz.B. ein QuadView nachgebildet werden.Über TabPanes können im oberen Bereich benutzerdefinierte Menüleisten erstellt werden, die auf weitereElemente verweisen.Zeigt das Wetter des DWD mit der Möglichkeit an, einzelne Bereiche Deutschands genauer auszuwählen undzwischen einem normalen Bild oder einem Radarbild zu wechseln.Zeigt die aktuelle Uhrzeit an.Kann entweder dazu verwendet werden ein statisches Icon anzuzeigen oder verknüpft mit einer Variable derenInhalt/Icon, welcher/welches je nach Variablenwert unterschiedlich sein kann.


KategorieDas Kategorie-Element ermöglicht die Anzeige der Objekte, die sich in einer Kategorie befinden, sowie die Navigation inUnterkategorien.ObjektbereichIm Objektbereich werden die Unterobjekte der zur Ansicht ausgewählten Kategorie dargestellt. Nähere Informationenund mögliche Darstellungsarten, sind im Bereich Objekt-Darstellung zu finden.NavigationsleisteSofern die angezeigte Kategorie sichtbare Unterkategorien hat, wird automatisch eine Kategorie-Navigationsleisteangezeigt. Wird über die Navigation eine Unterkategorie ausgewählt, so wird im Objektbereich deren Inhalt dargestellt.Besitzt eine so angezeigte Kategorie ebenfalls sichtbare Unterkategorien, so wird die Navigation automatisch erweitert.Selbstverständlich werden auch per Link-Objekt verknüpfte Kategorien in der Navigationsleiste angezeigt. Über dieEigenschaft “Zeige Navigation” lässt sich die Kategorieleiste bei Bedarf ausblenden.EigenschaftenTitel: Titel für das Element in der TabPane-Navigation. Wird kein eigener Wert angegeben, so wird automatisch derObjektname der gewählten Startkategorie gesetzt. Wird der Wert gesetzt, aber der Text leer gelassen, so wird der Titelnicht angezeigt.Icon: Icon, das in der TabPane-Navigation neben dem Titel angezeigt wird. Standardmäßig wird kein Icon angezeigt.Startkategorie: Kategorie, deren Inhalt vom Element dargestellt wird. Standardmäßig wird die Hauptkategorie mit"ID 0" angezeigt.Zeige Navigation: Mit dieser Option lässt sich steuern, ob die Navigationsleiste angezeigt wird, sofern sichunterhalb der Startkategorie Unterkategorien befinden. Standardmäßig wird die Navigationsleiste angezeigt.BesonderheitenWird der Titel auf einen leeren Text gesetzt und kein Icon angegeben, so wird das Kategoriemodul in der Navigationnicht angezeigt, bleibt aber über WFC_SwitchPage erreichbar.


GraphDas Graph-Element ermöglicht die Anzeige eines Graphen für eine geloggte Variable.EigenschaftenTitel: Titel für das Element in der TabPane-Navigation. Wird kein eigener Wert angegeben, so wird automatisch derObjektname der gewählten Variablen angezeigt.Icon: Icon, das in der TabPane-Navigation neben dem Titel angezeigt wird. Standardmäßig wird kein Icon angezeigt.Variable: Hier ist eine geloggte Variable für die Anzeige auszuwählen.Zeit: Der Anzeigebereich des Graphen kann hier auf Stunde, Tag, Woche, Monat oder Jahr gesetzt werden.Intervall: Der dargestellte Graph wird automatisch entsprechend dem hier eingestellten Intervall in Sekundenaktualisiert. Standardmäßig geschieht dies alle 300 Sekunden.Zeige Extrema: Gibt an, ob der Graph mit oder ohne Extremwertkurven, falls verfügbar, angezeigt wird.Dynamische Skalierung: Wird die dynamische Skalierung aktiviert, so wird der Graph dynamisch entsprechend desminimalen und des maximalen Werts im Zeitbereich skaliert. Andernfalls erfolgt die Skalierung entsprechend des imVariablenprofil der gewählten Variable angegebenen Minimums und Maximums.


Externe SeiteDieses Element ermöglicht die Anzeige externer Webseiten. Es sind sowohl lokal gespeicherte Seiten, als auch externeInternetseiten darstellbar. Auch ist es möglich, die Seite automatisch in einem bestimmten Intervall aktualisieren zu lassen.Lokal gespeicherte SeitenLokal gespeicherte Seiten sind unterhalb des <strong>IP</strong>-<strong>Symcon</strong>-Installationsordners unter /webfront/user abzulegen, also z.B.unter C:\<strong>IP</strong>-<strong>Symcon</strong>\webfront\user. Hier können auch Unterverzeichnisse für Seiten erstellt werden. Werden Seitenunterhalb eines anderen Pfads gespeichert, so werden sie beim nächsten WebFront-Update vom Live-Installerautomatisch gelöscht. Nur so ist sicherzustellen, dass die WebFront-Installation stets frei von Dateiversionskonfliktenbleibt. Eine Beispielseite zur Einbindung ist unter /webfront/user/example.php zu finden. Möchte man dieseeinbinden, so ist im WebFront-Konfigurator bei der Eigenschaft “URL” der Wert user/example.php einzutragen. Zubeachten ist hierbei, dass trotz der Backslashes () im Windows-Dateisystem einfache Slashes (/) verwendet werdenmüssen, damit es sich um eine korrekte relative URL handelt. Absolute System-Pfadangaben, wie z.B. C:\<strong>IP</strong>-<strong>Symcon</strong>\webfront\user\example.php, funktionieren nicht!Externe InternetseitenExterne Internetseiten sind im normalen URL-Format anzugeben, also z.B. http://www.ip-symcon.de.EigenschaftenTitel: Titel für das Element in der TabPane-Navigation. Standardmäßig wird “Externe Seite” angezeigt.Icon: Icon, das in der TabPane-Navigation neben dem Titel angezeigt wird. Standardmäßig wird kein Icon angezeigt.URL: Hier ist die Adresse der Seite anzugeben, deren Inhalt angezeigt werden soll.Intervall: Optional kann hier das automatische Aktualisierungsintervall für die Seite in Sekunden angegeben werden.Sicherheit: Optional kann das Sandboxing deaktiviert werden. Dies kann in einige Fällen dazu führen, dass dieexterne Seite euer WebFront deaktiviert und sich selbst in voller Größe darstellt. .


InhaltswechslerDer Inhaltswechsler dient zur Anzeige folgender Objekte:Email-Instanzen (IMAP, POP3)String-Variablen mit Variablenprofil ~TextBox oder ~HTMLBoxMedien-Objekte vom Typ BildDarstellungWird ein darstellbares Objekt direkt im Konfigurator als Quellobjekt zur Anzeige ausgewählt, so wird auch nur diesesObjekt angezeigt. Andernfalls werden alle darstellbaren direkten Unterobjekte des ausgewählten Quellobjekts zur Anzeigeausgewählt. Wird dabei mehr als ein darstellbares Unterobjekt gefunden, so wird eine Auswahlleiste zum Umschaltenzwischen den Unterobjekten eingeblendet. Bei editierbaren String-Variablen vom Typ ~TextBox erscheint dabei auch einButton, um das On-Screen-Keyboard zum Bearbeiten des Textes aufzurufen. Das Umschalten zwischen dendarzustellenden Objekten kann auch automatisch erfolgen, wenn ein Änderungsintervall angegeben wird.EigenschaftenTitel: Titel für das Element in der TabPane-Navigation. Wird kein eigener Wert angegeben, so wird automatisch derObjektname des gewählten Quellobjekts angezeigt.Icon: Icon, das in der TabPane-Navigation neben dem Titel angezeigt wird. Standardmäßig wird kein Icon angezeigt.Quellobjekt: Das Objekt, das direkt angezeigt werden soll oder dessen Unterobjekte angezeigt werden sollen.Änderungsintervall: Intervall in Sekunden, in dem automatisch zwischen den darzustellenden Objekten gewechseltwird. Der Standardwert von "0" deaktiviert die Funktion.Hochskalieren: Gibt an, ob anzuzeigende Bilder automatisch hochskaliert werden, wenn Platz verfügbar ist.Standardmäßig wird nicht hochskaliert.Runterskalieren: Ist diese Option aktiviert, werden Bilder, wenn nicht genügend Platz verfügbar ist, automatischrunterskaliert. Die Option ist standardmäßig aktiviert.Seitenverhältnis beibehalten: Sofern Hochskalieren oder Runterskalieren aktiviert ist, ist mit dieser Optioneinstellbar, ob das Seitenverhältnis der zu skalierenden Bilder beim Skalieren beibehalten wird, oder nicht.Standardmäßig wird das Seitenverhältnis beibehalten.


SplitPaneDas SplitPane ist ein Layout-Element, das zwei Unterelemente horizontal oder vertikal aufgeteilt darstellen kann. Aufdiese Weise lassen sich z.B. ein Inhalt-Wechsler für die Kamera-Ansicht neben einer Kategorie anzeigen. Da unterhalbeines SplitPanes selbstverständlich auch weitere Layout-Elemente wie andere SplitPanes und TabPanes eingefügt werdenkönnen, ist eine grenzenlose und individuelle Layout-Anpassung des WebFronts möglich.Aufteilung der UnterelementeMit der Eigenschaft “Aufteilung” lässt sich einstellen, ob die beiden Unterelemente des SplitPanes übereinander angezeigtwerden sollen (horizontale Aufteilung), oder nebeneinander (vertikale Aufteilung). Wie viel Platz die Unterelementebekommen, wird nun über die Eigenschaften “Größe“, “Größeneinheit” und “Verhältnis Ziel” bestimmt. Mit “Verhältnis Ziel”lässt sich bestimmen, ob man sich bei dem über “Größe” und “Größeneinheit” einstellbaren Wert auf das erste oder zweiteUnterelement beziehen möchte. Das angezielte Element bekommt dann den Platz zugewiesen, der über die Eigenschaft“Größe” in der eingestellten “Größeneinheit” angegeben ist.BeispielEs soll ein Bild mit einer Bildbreite von 640 Pixeln rechts neben einer Kategorie angezeigt werden. Hierzu gibt man demSplitPane für die Eigenschaft “Aufteilung” den Wert Vertikal, setzt das “Verhältnis Ziel” auf zweites Element, “Größe” auf640 und “Größeneinheit” auf Pixel. Nun erstellt man im WebFront-Konfigurator unterhalb des SplitPanes ein Unterelementvom Typ Kategorie und ein Unterelement vom Typ Inhalt-Wechsler. Bei den Unterelementen ist die Positions soeinzustellen, dass die Kategorie Position 0 und der Inhalt-Wechsler Position 1 erhält. Nun können die Unterelemente sokonfiguriert werden, dass die gewünschte Kategorie und das gewünschte Bild angezeigt werden.EigenschaftenTitel: Titel für das Element in der TabPane-Navigation. Standardmäßig wird “SplitPane” angezeigt.Icon: Icon, das in der TabPane-Navigation neben dem Titel angezeigt wird. Standardmäßig wird kein Icon angezeigt.Aufteilung: Hier lässt sich auswählen, ob die Trennung der beiden Unterelemente horizontal oder vertikal erfolgensoll. Standardmäßig wird horizontal getrennt.Größe: Die Größe des für die Aufteilung gewählten Unterelements entsprechend der Größeneinheit. DerStandardwert ist 50.Größeneinheit: Hier kann ausgewählt werden, ob sich die Größe auf Prozent oder auf Pixel bezieht. Standardmäßigwerden Prozent genommen.Verhältnis Ziel: Über diese Eigenschaft lässt sich auswählen, ob das erste oder das zweite Unterelement desSplitPanes entsprechend der angegebenen Größenangabe angezeigt wird. Standardmäßig ist das erste Elementausgewählt.Rand anzeigen: Mit dieser Eigenschaft lässt sich der standardmäßig zur Trennung der Unterelemente angezeigteRand ein- oder ausblenden.


TabPaneDas TabPane ist ein Element, das die Navigation zwischen allen anderen Typen von Elementen ermöglicht, sowieWidgets darstellen kann.DarstellungAm oberen Rand des TabPanes befindet sich eine Navigationsleiste, darunter der Inhaltsbereich. In der Navigationsleistewerden auf der linken Seite zunächst, sofern gewählt, das “Untericon” und der “Untertitel” angezeigt. Rechts daneben folgtder Navigationsbereich, der für alle dem TabPane untergeordneten Elemente anklickbare Felder mit deren Icon und Titel,sofern eingestellt, anzeigt. Durch Anklicken eines Feldes wird im Inhaltsbereich des TabPanes der Inhalt deszugeordneten Elements angezeigt. Am linken Rand der Navigationsleiste befindet sich der Widget-Bereich, in dem alledem TabPane untergeordneten Widgets angezeigt werden. Das TabPane wird aufgrund der gebotenenNavigationsfähigkeiten in der Regel als das oberste Element einer WebFront-Konfiguration verwendet. Selbstverständlichkann das TabPane dabei auch weitere TabPanes aufnehmen. Reicht die Bildbreite nicht aus, um alle Navigationsfelderanzuzeigen, so werden automatisch anklickbare Pfeile zum Scrollen des Navigationsbereichs eingeblendet. Die Breite desNavigationsbereichs verkleinert sich dabei bis auf 100 Pixel. Danach wird der Widget-Bereich verkürzt.EigenschaftenTitel: Titel des TabPanes in der Navigation eines gegebenenfalls übergeordneten TabPanes. Standardmäßig wird“Tab Pane” angezeigt.Icon: Icon, das in der Navigation eines gegebenenfalls übergeordneten TabPanes neben dem Titel angezeigt wird.Standardmäßig wird kein Icon angezeigt.Untertitel: Text, der am linken Rand der Navigationsleiste angezeigt wird. Standardmäßig wird kein Text angezeigt.Untericon: Icon, das am linken Rand der Navigationsleiste angezeigt wird. Standardmäßig ist kein Icon ausgewählt.


Wetter (DWD)Das Wetter-Element ermöglicht die Anzeige der Wettervorhersage des Deutschen Wetterdienstes für Deutschland unddie einzelnen Bundesländer in Text und Bild.NavigationsleisteIm oberen Bereich befindet sich die Navigationsleiste. Hier lässt sich, sofern über die Eigenschaft “Region” eingestellt,zwischen dem Wetterbericht für Deutschland und dem gewählten Bundesland wechseln. Zusätzlich lässt sich derVorhersagezeitraum zwischen Heute, Morgen, 3. Tag und 4. Tag wechseln.VorhersagebereichIm Vorhersagebereich ist rechts der Vorhersagetext zu lesen und links daneben eine passende Wetterkarte.EinrichtenDie Eingabe vom Benutzername/Passwort wird über den WebFront Konfigurator gemacht. Dazu kann entweder dasvorhandene “DWD (Wetter)” Item bearbeitet werden, oder ein neues über “Hinzufügen” angelegt werden. Anschließendist ein Klick im Konfigurator auf “Übernehmen” und das Nachladen des WebFronts nötig, um die Wettervorhersageanzuzeigen.EigenschaftenTitel: Titel für das Element in der TabPane-Navigation. Standardmäßig wird “Wetter” angezeigt.Icon: Icon, das in der TabPane-Navigation neben dem Titel angezeigt wird. Standardmäßig wird kein Icon angezeigt.Region: Optional kann hier ein Bundesland ausgewählt werden, dessen Wettervorhersage sich neben derdeutschlandweiten Vorhersage in der Navigationsleiste anzeigen lässt.


Uhrzeit WidgetDas Uhrzeit-Widget ermöglicht die Anzeige des aktuellen Datums und der aktuellen Uhrzeit im Widget-Bereich einesTabPanes. Sofern kein benutzerdefiniertes Anzeigeformat eingestellt ist, richtet sich die Darstellung nach der imWebbrowser eingestellten Landessprache. Es kann dabei für das Datumsformat und das Zeitformat jeweils zwischen denStandardformatierungen "Versteckt", "Kurz", "Mittel", "Lang" und "Komplett" gewählt werden. Das benutzerdefinierteFormat ist bei Bedarf, entsprechend der datePattern-Tabelle unter dojotoolkit.org/referenceguide/dojo/date/locale/format.htmleinzugeben.EigenschaftenDatumsformat: Hier kann ein vordefiniertes Muster für die Formatierung des Datums ausgewählt werden.Zeitformat: Wie auch beim Datumsformat lässt sich hier ein vordefiniertes Muster für die Formatierung der Uhrzeitauswählen.Benutzerdefiniertes Format: Optional kann hier ein benutzerdefiniertes Format angegeben werden.


Info WidgetDas Info-Widget bietet die Möglichkeit im Widget-Bereich eines TabPanes, ein festes Icon, ein dynamisches Icon zu einerVariable oder einen textuellen Variablenwert anzuzeigen. Zusätzlich kann ein Skipt ausgewählt werden, das beimAnklicken des Widgets ausgeführt wird.AnzeigevariantenIcon-DarstellungText-DarstellungEin festes Icon kann mit der Eigenschaft Icon zur Anzeige ausgewählt werden. Hierbei ist zu beachten, dass wederTyp noch Variable angegeben werden dürfen.Ein dynamisches Icon wird angezeigt, wenn eine Variable angegeben und Typ auf Icon gesetzt ist. Welches Iconangezeigt wird und welche Icons standardmäßig verfügbar sind, ist unter Icons beschrieben. Soll das Icon“Transparent” angezeigt werden, so wird das Widget ausgeblendet. Auf diese Weise lassen sich Informations-Iconsdynamisch einblenden, z.B. wenn ein Gerät einen Batteriewechsel benötigt.Der aktuelle Variablenwert wird textuell anhand des der Variable zugeordneten Variablenprofils formatiert, wenn eineVariable angegeben ist und der Typ auf Text eingestellt ist.EigenschaftenIcon: Hier kann ein festes Icon zur Darstellung ausgewählt werden.Typ: Der Typ bestimmt, ob eine Variable als Text oder als Icon dargestellt werden soll.Variable: Hier kann eine Variable ausgewählt werden, die entsprechend des gewählten Typs dargestellt wird.Bei Klick: Ein Skript, das bei Klick auf das Widget ausgeführt wird, lässt sich hier einstellen.


DarstellungKonfigurator einrichtenInnerhalb der mobilen Apps und in der Konfiguratorübersicht werden der Titel und das Icon vom Konfiguratorangezeigt, welches Sie hier entsprechend einstellen können.Konfigurator ausblendenUnter dem Reiter Optionen, haben Sie die Möglichkeit den Konfigurator aus der Übersicht zu verstecken. Die kannnützlich sein, um temporär nicht genutzte Konfiguratoren zu deaktivieren und dessen vorhandensein zu verstecken. Bittebeachten Sie, dass nicht sichtbare Konfiguratoren trotzdem über einen direkten URL-Aufruf erreichbar sind, wenn die IDdes Konfigurators bekannt ist und dieser nicht Passwortgeschützt ist.Konfigurator individualisierenIst der Parameter "Verschachtelung" aktiviert, so erlaubt das WebFront die Darstellung von tieferen Verschachtelungen(z.B. Instanzen unterhalb von Instanzen). Beachten Sie dabei jedoch, dass diese Anzeigemöglichkeit nicht in den mobilenApps besteht und dort die tiefere Verschachtelung nicht angezeigt wird.Skins nutzenAb <strong>IP</strong>-<strong>Symcon</strong> 3.0 ist es möglich das WebFront über eigene Skins zu gestalten. Weitere Informationen und Unterstützungzu diesem Thema finden Sie in unserem Forum. WebFront Skins


Mobile/RetroDie Ansicht für das WebFront Retro/RetroMobile und Mobile (iOS/Andoird) muss aus Sicherheitsgründen manuellaktiviert werden. Dies kann im jeweiligen Konfigurator im Reiter Mobile/Retro geschehen. Der Dialog sollte wie folgtaussehen:Zu beachten ist, dass jede der Spezialansichten eine eigene Startkategorie haben kann, jedoch nicht muss. Sofern alleGeräte der logischen Baumansicht angezeigt werden sollen, kann die Konfiguration auf das "Objekt 0" zeigen. Wennjedoch nur Objekte unterhalb von einer speziellen Kategorie angezeigt werden sollen, muss die Option entsprechendverändert werden.Der Vorteil einer separaten Startkategorie ist, dass eine maßgeschneiderte Anpassung stattfinden kann, die z.B. dieAnzeige auf nur für eine schnelle und mobile Ansicht notwendigen Geräte reduziert.WebFront Retro/RetroMobile manuell startenIm Normalfall wählt das WebFront anhand einer automatischen Browser-Erkennun automatisch aus, welche Versiongestartet werden kann. Falls diese Erkennung nicht genutzt werden soll, um z.B. die Retro/RetroMobile Variante imneusten FireFox zu testen, kann explizit die zu startende Variante angegeben werden. Dazu muss die URLfolgendermaßen aussehen:http://localhost:82/index.php?browserMode=retrohttp://localhost:82/index.php?browserMode=retromobile


SicherheitKennwort festlegenFür jeden Konfigurator kann ein Kennwort als Zugriffschutz vergeben werden. Dieses Kennwort wird vor dem Zugriffdes jeweiligen Konfigurators gefordert, oder bei der Konfiguration innerhalb der mobilen Apps. Zusätzlich kann dieSpezialoption aktiviert werden, dass das Kennwort nicht innerhalb des lokalen Netzwerk gefordert wird.Auto-Start für spezielle <strong>IP</strong>-AdressenEine besondere Funktion ist der Auto-Start, welcher einen Konfigurator direkt ohne Passwortabfrage öffnet, wenn die<strong>IP</strong>-Adresse mit einer der eingetragenen <strong>IP</strong>-Adressen in dieser Liste übereinstimmt. Über diese Funktionen können Sie z.B.auf einem Touch-Panel einen Konfigurator direkt öffnen lassen, ohne den normalen Auswahldialog angezeigt zubekommen und ohne die Passwortabfrage korrekt beantworten zu müssen. Beachten Sie, dass Sie diese Funktion nurinnerhalb eines sicheren Netzes benutzen, in dem Sie sicherstellen können, welche Geräte, welche <strong>IP</strong>-Addressezugewiesen bekommen.Zusätzliche SicherheitshinweiseVersteckte Objekte werden unsichtbar ins WebFront geladen und können dadurch z.B. über die Entwicklerkonsoleder Web-Browser bei entsprechendem Know-How eingesehen werden. Dies ist kein Fehler, sondern eineNotwendingkeit, um eine zügige Veränderung der Sichtbarkeit über den Befehl <strong>IP</strong>S_SetHidden zu realiseren.


Mobile (iOS)Das iFront für Apples iOS-Geräte (iPod Touch, iPhone und iPad) kann über den AppStore gekauft werden und enthältdort auch die aktuellste Beschreibung der Funktionen der App. (<strong>IP</strong>-<strong>Symcon</strong> iFront für iPhone, iPod touch und iPad imiTunes App Store) Diese Seite soll als Beschreibung und Referenz für häufig gestellte Fragen und Funktionen dienen, diedie iOS App noch nicht kann, von manchen Usern aber implizit erwartet wurde. Desweiteren stellt die iOS App keinenAnspruch auf volle Kompatibilität zum WebFront. Es dient als erweiterte Möglichkeit, um schnell und unkompliziert aufdie Grundfunktionen des Systems zuzugreifen. Für eine vollständige Visualisierung kann und muss auf das WebFrontzurückgegriffen werden. Diese Tatsache wird sich auch nicht ändern, da die iOS Applikation mit immer mehr werdendenFunktionen langsamer werden würde. Das würde aber mit dem Hauptmerkmal “Geschwindigkeit” kollidieren. Diefolgende Auflistung gibt an, welche Features noch kommen werden und welche absichtlich weggelassen wurden und nichteingebaut werden.Eine Dokumentation zur Benutzung von Push-Nachrichten finden Sie hier: Notification ControlBitte beachten Sie, dass aus Sicherheitsgründen der Zugriff auf Ihr System über die mobilen Apps standardmäßigdeaktiviert ist. Sie werden durch die Fehlermeldung "Kein gültiger Konfigurator angegeben!" darauf hingewiesen.Bitte aktivieren Sie Ihren gewünschten WebFront Konfigurator für die mobile Nutzung. Eine Erklärung dazu findenSie unter dem Menüpunkt Mobile/Retro.Funktionen, die absichtlich nicht verfügbar sindDie Punkt-Notation (.) zum Verstecken von Objekten ist im iFront nicht verfügbar und wird auch in kommendenWebFront Versionen nicht mehr angeboten werden. Ein Skript, welches eine automatische Umstellung erlaubt,finden sie hier: Skript, um alle durch Punkt versteckten Objekte ordentlich zu versteckenBenutzerdefinierte Icons werden nicht geladen, da dies einen beträchtlichen Geschwindkeitsverlust bedeuten würdeund außerdem mehrere Icongrößen z.B. für das Retina Display erfordern würde, die die wenigsten der User zur Handhaben.Mehrfachverschachtelungen sind nicht verfügbar. Der nötige Platz ist auf Geräten mit geringerer Auflösung einfachnicht vorhanden, und auch auf größeren Geräten würde diese Darstellung nicht ins Konzept der Mobil-Applikationenpassen.Es werden nur Variablen angezeigt, die ein korrektes Variablenprofil besitzen.Funktionen, die sich anders als das WebFront verhaltenDie aus anderen iOS Applikationen bekannten Schalter (An/Aus) sind nur für das Profil "~Switch" verfügbar. Es istnicht möglich, die Schalter auf weitere Profile anzuwenden.Die Sortierung von Objekten geht nicht strikt nach der Objekt-Position vor, sondern hat eine Zwischenebene, überdie vorrangig sortiert wird. Dadurch wird sichergestellt, dass das Design gut aussieht und sich dem iOS Look&Feelanpasst.Für alle losen Skripte, Medien und Variablen können entsprechende DummyInstanzen erstellen werden, um diegewünschte Sortierung zu erhalten. Ein kompletter Teilbaum kann über die Konfiguration im WebFrontKonfigurator angelegt (Konfiguratoroptionen), mit Links kombiniert und somit eine eigene Struktur für das iFronterstellt werden. Dies ermöglicht die bestmögliche Nutzung der iFront-Funktionen.Die Sortierung ist wie folgt:1. Alle Kategorien2. Alle Skripte3. Alle Medien4. Alle Variablen ohne Instanz5. Alle Instanzen mit deren Unterobjekten (Der Instanzname dient als Beschreibung. Nur Unterobjekte vomTyp Variable, Media, Skript werden angezeigt)Bestimmte Profile und Variablen (z.B. bei HomeMatic Fensterkontakte oder LCN Relais) können in der iFront Appgeschaltet werden. Diese Möglichkeit der Aktion wird im WebFront farbig (grün/rot) dargestellt und bedeutet, dassentweder ein Aktionsskript definiert, oder dass eine Standardaktion verfügbar ist. Soll das Verhalten geändert werden,gibt dieses Thema im Forum entsprechende Antwort: Veränderbarkeit von unveränderlichen Variablen (betrifft nur<strong>IP</strong>-<strong>Symcon</strong> 2.3)Funktionen, die erst in kommenden Versionen verfügbar sein werdenAutomatische Aktualisierung von HTMLBoxen, TextBoxen und Medien


Graphen (Version 3.x)Tipps & TricksEinbindung eines Live Streams der Web-Cam: Webcam einbindenFalls beim Ladevorgang ein JSON Fehler auftritt, überprüfen Sie bitte, ob sie mindestens <strong>IP</strong>-<strong>Symcon</strong> 2.4 #1958installiert haben.Falls beim Ladevorgang der Fehler “JSON Fehler (401 Unauthorized)” auftritt, müssen sie im <strong>IP</strong>-<strong>Symcon</strong> WebServerunter Kern Instanzen die “Basis Authentifizierung” deaktivieren oder diese im iFront aktivieren.


Mobile (Android)Die Mobile Visualisierung für Android Geräte kann über den Android Market gekauft werden und enthält dort auch dieaktuellste Beschreibung der Funktionen der App. (<strong>IP</strong>-<strong>Symcon</strong> Mobile bei Google Play) Diese Seite soll als Beschreibungund Referenz für häufig gestellte Fragen und Funktionen dienen, die die Android App noch nicht kann, von manchenUsern aber implizit erwartet wurde. Desweiteren stellt die Android App keinen Anspruch auf volle Kompatibilität zumWebFront. Es dient als erweiterte Möglichkeit, um schnell und unkompliziert auf die Grundfunktionen des Systemszuzugreifen. Für eine vollständige Visualisierung kann und muss auf das WebFront zurückgegriffen werden. DieseTatsache wird sich auch nicht ändern, da die Android Applikation mit immer mehr werdenden Funktionen langsamerwerden würde. Das würde aber mit dem Hauptmerkmal “Geschwindigkeit” kollidieren. Die folgende Auflistung gibt an,welche Features noch kommen werden und welche absichtlich weggelassen wurden und nicht eingebaut werden.Eine Dokumentation zur Benutzung von Push-Nachrichten finden Sie hier: Notification ControlBitte beachten Sie, dass aus Sicherheitsgründen der Zugriff auf Ihr System über die mobilen Apps standardmäßigdeaktiviert ist. Sie werden durch die Fehlermeldung "Kein gültiger Konfigurator angegeben!" darauf hingewiesen.Bitte aktivieren Sie Ihren gewünschten WebFront Konfigurator für die mobile Nutzung. Eine Erklärung dazu findenSie unter dem Menüpunkt Mobile/Retro.Funktionen, die absichtlich nicht verfügbar sindDie Punkt-Notation (.) zum Verstecken von Objekten ist im iFront nicht verfügbar und wird auch in kommendenWebFront Versionen nicht mehr angeboten werden. Ein Skript, welches eine automatische Umstellung erlaubt,finden sie hier: Skript, um alle durch Punkt versteckten Objekte ordentlich zu versteckenBenutzerdefinierte Icons werden nicht geladen, da dies einen beträchtlichen Geschwindkeitsverlust bedeuten würdeund außerdem mehrere Icongrößen z.B. für das Retina Display erfordern würde, die die wenigsten der User zur Handhaben.Mehrfachverschachtelungen sind nicht verfügbar. Der nötigen Platz ist auf Geräten mit geringerer Auflösung einfachnicht vorhanden, und auch auf größeren Geräten würde diese Darstellung nicht ins Konzept der Mobil-Applikationenpassen.Es werden nur Variablen angezeigt, die ein korrektes Variablenprofil besitzenFunktionen, die sich anders als das WebFront verhaltenSpezielle Schalter (An/Aus), die als Checkboxen angezeigt werden, sind nur für das Profil "~Switch" verfügbar. Es istnicht möglich, die Checkboxen auf weitere Profile anzuwenden.Die Sortierung von Objekten geht nicht strikt nach der Objekt-Position vor, sondern hat eine Zwischenebene überdie vorrangig sortiert wird. Dadurch wird sichergestellt, dass das Design gut aussieht und platzsparender ist.Die Sortierung ist wie folgt:1. Alle Kategorien2. Alle Skripte3. Alle Medien4. Alle Variablen ohne Instanz5. Alle Instanzen mit deren Unterobjekten (Der Instanzname dient als Beschreibung. Nur Unterobjekte vomTyp Variable, Media, Skript werden angezeigt)Für alle losen Skripte, Medien und Variablen können entsprechende DummyInstanzen erstellen werden, um diegewünschte Sortierung zu erhalten. Ein kompletter Teilbaum kann über die Konfiguration im WebFrontKonfigurator angelegt (Konfiguratoroptionen), mit Links kombiniert und somit eine eigene Struktur für die mobileAnsicht erstellt werden. Dies ermöglicht die bestmögliche Nutzung der Mobil-Funktionen.Bestimmte Profile und Variablen (z.B. bei HomeMatic Fensterkontakte oder LCN Relais) können in der iFront Appgeschaltet werden. Diese Möglichkeit der Aktion wird im WebFront farbig (grün/rot) dargestellt und bedeutet, dassentweder ein Aktionsskript definiert, oder dass eine Standardaktion verfügbar ist. Soll das Verhalten geändert werden,gibt dieses Thema im Forum entsprechende Antwort: Veränderbarkeit von unveränderlichen Variablen (betrifft nur<strong>IP</strong>-<strong>Symcon</strong> 2.3)Funktionen, die erst in kommenden Versionen verfügbar sein werdenZoom&Pan von MedienAutomatische Aktualisierung von HTMLBoxen, TextBoxen und Medien


Graphen (Version 3.x)Bekannte FehlerBei aktiviertem SSL können extern geladene Inhalte (z.B. Bilder) nicht geladen werden, wenn das Zertifikat nicht vomBrowser akzeptiert wurde.Werden bei Google Play mehrere Accounts verwendet, kann es vorkommen, dass die Lizenzierung nicht korrektausgewertet wird.Tipps & TricksEinbindung eines Live Streams der Web-Cam: Webcam einbindenFalls beim Ladevorgang ein JSON-Fehler auftritt, überprüfen Sie bitte, ob sie mindestens <strong>IP</strong>-<strong>Symcon</strong> 2.4 #1958installiert haben.Falls beim Ladevorgang der Fehler “JSON-Fehler (401 Unauthorized)” auftritt, müssen sie im <strong>IP</strong>-<strong>Symcon</strong> WebServerunter Kern Instanzen die “Basis Authentifizierung” deaktivieren, oder diese im iFront aktivieren.Sollte die Lizenzierung mit der Meldung “Schalten wurde deaktiviert, da die Lizensierung der Applikation nichtverifiziert werden konnte!” erscheinen, so könne folgende Schritte den Fehler beheben:Beenden der App über den Task-ManagerDeinstallieren/ erneutes Installieren der App aus dem Android MarketÜberprüfen, ob der Android Market Account mit dem die Software gekauft wurde, korrekt eingerichtet wurdeÜberprüfen, ob nicht mehrere Accounts im Android Market eingetragen sind


DashboardDas <strong>IP</strong>-<strong>Symcon</strong> Dashboard ist dazu gedacht, unter <strong>IP</strong>-<strong>Symcon</strong> erstellte Projekte mit einer ansprechenden undindividuellen Oberfläche zu versehen, so dass die in <strong>IP</strong>-<strong>Symcon</strong> realisierten Steuerungen ggf. auch von Laien bedient oderausgewertet werden können. Diese Benutzeroberfläche muss allerdings erst vom User erstellt werden. Wegen derunvorstellbaren Menge an Möglichkeiten, kann keine für alle Fälle geeignete, fertige Lösung angeboten werden. Hier mussder Anwender selbst Hand anlegen, um eine Präsentation nach seinen Bedürfnissen und nicht zuletzt auch nach seinemGeschmack zu schaffen.Für die Benutzung des Dashboards sind keinerlei Programmierkenntnisse erforderlich.Die Schnittstelle zwischen Dashboard und <strong>IP</strong>-<strong>Symcon</strong> sind die Variablen und Skripte. Das Dashboard wird durchÄnderung der Variablen angewiesen, diese erneut zur Anzeige zu bringen. Andererseits kann er Benutzereingabenentgegennehmen und seinerseits diese in Variablen ablegen oder Skripte ausführen.Typische Aufgaben einer Dashboard-Anwendung:Anzeigen von Messwerten (Temperatur, Feuchtigkeit, Energieverbrauch, Wetterdaten, Zutrittsdaten, ...)Ausgabe von Daten (Sollwerte, Grenzwerte, ...)Entgegennahme von Benutzereingaben (Mausklicks, Text- oder Werteingaben, Schieberegler, ...)Aufruf von Steuerprogrammen (Skripte für Haustechnik, Multimedia, Anwesenheitssimulation, Zutrittskontrolle, ...)Beispiel einer Dashboard-Anwendung:BetriebsartenDas Dashboard kennt zwei Betriebsarten:den Run-Modus (Run Mode)den Editor-Modus (Edit Mode, Entwurfsmodus)Der Editor-Modus ist nach dem Start aktiv. Das Aussehen der Benutzeroberfläche in dieser Betriebsart hängtausschließlich davon ab, wie der Benutzer diese zuvor im Editor-Modus für eine bestimmte Anwendung gestaltet hat.Man kann zwischen den beiden Betriebsarten wechseln, indem man über das Kontextmenü (rechte Maustaste) denMenue-Punkt Visual Designer anwählt oder einfach die Taste F12 drückt.Im Editor-Modus wird festgelegt, wo welche Bedienelemente zu platzieren sind und welche Funktion sie erfüllen sollen.Dasselbe gilt für die Windows-typischen Anzeigeelemente, die ebenfalls beliebig gestaltet und angeordnet werden können.Im Editor-Modus erscheinen zusätzlich zum Hauptfenster (Zeichenfläche) drei weitere Fenster:die Zeichenflächedie Tool Paletteder Objektinspektordie Strukturdas ProtokollEin neues oder bereits vorhandenes Formular kann über die <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole aufgerufen werden.


Sobald ein Dashboard-Prjekt fertiggestellt wurde, kann dies z.B. über eine Verknüpfung im Autostart automatischgestartet werden. Dazu kann das zu öffnende Formular direkt per Parameter übergeben werden, welches dann im Run-Modus geöffnet wird.Syntax:ips_console.exe /host[:port] /form:formid /cache [-m] [-c]ParameterhostBeschreibungName oder <strong>IP</strong>-Adresse des <strong>IP</strong>-<strong>Symcon</strong>-Serversport Portnummer, Standard: 3773formidcacheSwitchesauszuführendes Dashboard Formularspeichert alle Bilder lokal auf dem Client für einen schnelleren NeustartBeschreibung-m startet das Dashboard im maximierten Fenster-c startet das Dashboard ohne Anzeige des Maus-Cursors (sinnvoll für Touch Screens)Beispiel:ips_console.exe /localhost:3773 /form:12345 -c


ZeichenflächeDas Hauptfenster des Dashboards, die DesignForm, dient als Arbeitsfläche für die Platzierung von Objekten.Hier soll als Beispiel ein Feld für ein Image mit einer Größe von 144 * 28 Pixeln gezeichnet werden. Mit der Maus lässtsich der Feldrahmen verschieben oder in der Größe verändern. Wenn man sich an das Raster hält, können Objekteleichter aneinander ausgerichtet werden.Alle in der Tool Palette verfügbaren Objekte können auf der Zeichenfläche an beliebiger Stelle platziert werden. Hierzuwird das gewünschte Objekt (z.B. Button) mit der Maus in der Tool Palette selektiert und anschließend an der geplantenStelle durch einen Mausklick abgelegt.Das Objekt erscheint zunächst erst einmal in einer Default-Version, die im Allgemeinen einer weiteren Anpassung bedarf.Davon sind meistens Größe, Position und Beschriftung betroffen. Ein Objekt kann, nachdem es selektiert wurde, aufvielfältige Weise manipuliert werden.Welche Eigenschaften sich verändern lassen, ist im Objektinspektor festgelegt.Objekt selektieren:Die Selektion eines Objekts auf der Zeichenfläche erfolgt durch Linksklick mit der Maus. Ein selektiertes Objekt ist anden acht schwarzen Griffpunkten (Kästchen) zu erkennen, die sich an den vier Ecken und an den vier Seiten einesObjekts befinden.Größe und Position verändern:Eigenschaften, die praktisch immer anzupassen sind, sind die Position und die Größe.Mit der Maus:Größe ändern: Mit der Maus lassen sich die Griffpunkte in beliebige Richtungen ziehen, wodurch die Größein Rastersprüngen (8 Pixel) verändert wird.Position ändern: Wird das Objekt irgendwo im Inneren festgehalten, so kann, ebenfalls in Rastersprüngen,dessen Position verändert werden. Dieses Verfahren hat den Vorteil, dass sehr einfach Objekte an einanderausgerichtet werden können.Mit der Tastatur: Wer eine pixelgenaue Feinanpassung benötigt, kann hierfür die Pfeiltatsten in Kombinationmit der Umschalt- bzw. Strg-Taste verwenden:Größe ändern: Umschalt-Taste + PfeiltastenPosition ändern: Strg-Taste + PfeiltastenIm Object Inspector: Größe und Position lassen sich, wie alle Eigenschaften, natürlich auch direkt im ObjectInspector manipulieren. Hier können die Werte in numerischer Form eingegeben werden:Größe ändern: Breite (Width) und Höhe (Height)Position ändern: X-Koordinate (Left) und Y-Koordinate (Top)Gruppierungen:Darüber hinaus ist es möglich mehrere Objekte gleichzeitig in der oben beschriebenen Weise zu manipulieren. Dazuwerden die Objekte temporär zu einer Gruppe zusammengefasst:Bei gedrückter Strg-Taste und gedrückter linker Maustaste wird ein Rahmen über die zu selektierenden Objekte gelegt.Alle Objekte, die ganz oder teilweise innerhalb des Rahmens liegen werden so der Gruppe zugeordnet. Die Objekte einerGruppe sind an ihren grauen Griffpunkten zu erkennen. Größe oder Position lassen sich jetzt bei allen Objektengleichzeitig verändern. Ein Mausklick ausserhalb der Selektion hebt diese wieder auf.


Tool PaletteDie Tool Palette stellt eine Sammlung von Objekten zur Verfügung, die für die Gestaltung einer Benutzeroberflächeverwendet werden können. Die Objekte dienen im Wesentlichen den folgenden Zwecken:Visualisierung (Werte, Bilder, ...)Strukturierung (Beschriftungen, Zusammenfassung zusammengehöriger Objekte, ...)Eingaben (Buttons, Schieber, Checkboxen, ...)Die Tool Palette wird wie ein Werkzeugkasten gehandhabt. Um ein Steuerelement zu verwenden, holt man es mit derMaus aus der Palette heraus und zieht es an die gewünschte Stelle in der Zeichenfläche (Drag & Drop). Dort kann esanschließend, ebenfalls mit der Maus, weiter verschoben oder in der Größe verändert werden.Eine ausführlichere Bearbeitung des selektierten Elements ist mit dem Objektinspektor möglich.


DesignFormDie DesignForm ist das Hauptfenster einer jeden Dashboard-Anwendung. Alle anderen Objekte sind diesem Fensteruntergeordnet. Es existiert in jeder Dashboard-Anwendung genau einmal und ist daher nicht in der Tool Palette zurAuswahl enthalten. Wie die anderen Tools auch, besitzt die DesignForm auch einige Eigenschaften, die imObjektinspektor verändert werden können.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftAlphaBlendAlphaBlendValueAutoScrollAutoSizeBorderStyleCaptionColorCursorFontScreenSnapShowInTaskbarWindowStateBeschreibungTrue bewirkt die Auswertung von AlphaBlendValue. False ignoriert AlphaBlendValue.Dieser Wert ist ein Maß für die Opazität (Undurchsichtigkeit) des Fensters. Es sind Werte von 0 bis 255 zulässig,wobei 0 vollständige Transparenz und 255 vollständige Opazität bedeuten. Der Vorgabewert ist 255, was einemundurchsichtigen, also normalen Fenster entspricht.True bewirkt die automatische Einblendung von Bildlaufleisten (Scroll Bars), wenn der Inhalt für eineGesamtdarstellung zu groß ist.True bewirkt eine automatische Größenanpassung des Fensters, damit der Inhalt vollständig sichtbar ist. Bei Falsebleibt die Größe konstant, so dass Teile des Inhalts verdeckt sein können.Hier kann zwischen verschiedenen Windows-typischen Randlinien gewählt werden.Dieses Feld legt den Fenstertitel fest.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich innerhalb des Fensters befindet.Hier kann die Schriftart für den Text ausgewählt werden.True: Das Fenster rastet am Bildschirmrand ein, wenn es sich ihm genügend (ca. 10 Pixel) genähert hat.Bei True wird das Fenster wie jedes andere auch in der TaskBar angezeigt.Hier kann ausgewählt werden, ob das Fenster beim Start minimiert, maximiert oder als normales Fenster angezeigtwerden soll.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftCaptionColorVisibleEnabledLeftTopWidthHeightBeschreibungFenstertitel (String)HintergrundfarbeVariable, die festlegt, ob das Fenster sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob das Formular bedienbar sein soll oder nicht (Boolean)Position des linken Fensterrands (Integer)Position des oberen Fensterrands (Integer)Breite des Fensters (Integer)Höhe des Fensters (Integer)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnShowOnHideBeschreibungnach dem Start auszuführendes Skriptvor dem Beenden auszuführendes Skript


LabelDas Label ist ein allgemeines Feld zur Ausgabe von beliebigem Text. Es wird häufig benutzt zur Darstellung vonÜberschriften, Messwerten, Datumsangaben usw.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftAlignmentBeschreibungDer Parameter regelt die horizontale Ausrichtung des Label-Inhalts. Um Alignment nutzen zu können, mussAutoSize auf false gesetzt sein.* taLeftJustify Bewirkt eine Ausrichtung am linken Label-Rand* taCenter Bewirkt eine horizontale Zentrierung* taRightJustify Bewirkt eine Ausrichtung am rechten Label-RandAutoSizeCaptionColorCursorHintShowHintFontLayoutTrue bewirkt, dass das Label-Feld genau die Größe des Textes annimmt. Bei False ist evtl. nur ein Ausschnitt zusehen oder der Text belegt nur einen Teil der Fensterfläche.Dieses Feld legt den darzustellenden Text fest.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich innerhalb des Feldes befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hier kann die Schriftart für den Text ausgewählt werden.Der Parameter regelt die vertikale Ausrichtung des Label-Inhalts. Um Layout nutzen zu können, muss AutoSizeauf false gesetzt sein.* tlTop Bewirkt eine Ausrichtung am oberen Label-Rand* tlCenter Bewirkt eine vertikale Zentrierung* tlBottom Bewirkt eine Ausrichtung am unteren Label-RandTransparentTrue blendet die Hintergrundfarbe aus, so dass ein darunter befindliches Bild sichtbar wird.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftCaptionColorFont.ColorVisibleLeftBeschreibungText (String)HintergrundfarbeSchriftfarbeVariable, die festlegt, ob das Label sichtbar sein soll oder nicht (Boolean)Position des linken Label-Rands (Integer)


TopWidthHeightHintPosition des oberen Label-Rands (Integer)Breite des Labels (Integer)Höhe des Labels (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


EditDas Edit Tool stellt ein Eingabefeld zur Verfügung.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftBevelInnerBevelKindBevelOuterBevelWidthBorderStyleColorCursorFontHintShowHintTextBeschreibungIn diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hier kann die Schriftart für die Eingabe (Text) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Text mit dem das Eingabefeld vorbelegt werden kann.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftTextColorFont.ColorVisibleEnabledLeftBeschreibungText (String)HintergrundfarbeSchriftfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)


TopWidthHeightHintPosition des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnChangeBeschreibungder eingegebene Text (String)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


SpinEditDas SpinEdit Tool stellt ein Eingabefeld für Zahlen zur Verfügung.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftBevelInnerBevelKindBevelOuterBevelWidthBorderStyleColorCursorFontHintShowHintValueValueTypeIncrementDecimalMinValueMaxValueBeschreibungIn diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hier kann die Schriftart für die Eingabe (Text) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Wert mit dem das Eingabefeld vorbelegt werden kann.vtFloat, wenn das Feld Gleitkommawerte annehmen soll, sonst vtIntegerWert, den der Pfeil nach oben/unten jeweil addieren/substrahieren sollAnzahl der Dezimalstellen (Nur bei ValueType=vtFloat anwendbar)Minimaler Wert der gültig istMaximaler Wert der gültig istEigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftValueColorFont.ColorVisibleEnabledLeftTopWidthHeightHintBeschreibungWert (Integer/Float)HintergrundfarbeSchriftfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnChangeBeschreibungder eingegebene Wert (Integer/Float)


Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


MemoMemo ist eine Liste von Textzeilen zur Ausgabe von Meldungen aller Art. So kann z.B. ein Protokoll angezeigt werden,wer wann an einer Tür mit Zutrittskontrolle ein- und ausgegangen ist.Wem das Memo Tool wegen fehlender Formatierungsmöglichkeiten nicht zusagt, der kann stattdessen auch das WebBrowser Tool verwenden. Der Web Browser erlaubt die Ausgabe von HTML-formatiertem Text. HTML bietetpraktisch beliebige Formatierungsmöglichkeiten.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftBevelInnerBevelKindBevelOuterBorderStyleColorCursorFontHintShowHintLinesScrollBarsBeschreibungIn diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich in der Box befindet.Hier kann die Schriftart für den Namen (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hier kann man mithilfe eines String List Editors den Text der einzelnen Zeilen eintragen.Hier wird festgelegt, ob und wo ScrollBars (Bildlaufleisten) erscheinen sollen.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftLinesColorFont.ColorVisibleLeftTopWidthHeightHintBeschreibungText (String); die einzelnen Zeilen werden durch CRLF voneinander getrennt (carriage return + line feed; in PHP"\r\n")HintergrundfarbeSchriftfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)


Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


ButtonEin Button ist eine Drucktaste, die durch einen Mausklick eine Aktion auslöst.Wem das Aussehen eines Button zu schlicht ist, der kann stattdessen auch das Tool Image verwenden. Auch einImage kann als Button verwendet werden, im Gegensatz zu diesem aber ein beliebiges Aussehen haben.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCaptionCursorFontHintShowHintWordWrapBeschreibungDieses Feld legt den Namen (die Aufschrift) fest.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich über dem Button befindet.Hier kann die Schriftart für den Namen (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hier kann festgelegt werden, ob die Aufschrift ggf. auf mehrere Zeilen umgebrochen werden soll.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftCaptionVisibleEnabledLeftTopWidthHeightHintBeschreibungName (String)Variable, die festlegt, ob der Button sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob die Betätigung (Klick) erlaubt ist oder nicht (Boolean)Position des linken Button-Rands (Integer)Position des oberen Button-Rands (Integer)Breite des Buttons (Integer)Höhe des Buttons (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnClickToggleBeschreibungVariable, die nach einem Klick getoggelt werden soll (Boolean)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggern


EigenschaftOnClickBeschreibungNach Klick auszuführendes Skript


CheckboxDiese beiden Tools dienen dazu, eine Auswahl aus verschiedenen, fest vorgegebenen Möglichkeiten zu treffen. Es gibtzwischen diesen beiden einen wesentlichen Unterschied: Während man in einem Satz von CheckBoxen beliebig vieleauswählen kann (Mehrfachauswahl), ist dies bei einem Satz von RadioButtons nur bei einem einzigen möglich(Einzelauswahl). Beispiele: 3x CheckBox (links), 3x RadioButton (rechts)Will man mehrere Sätze von RadioButtons verwenden, müssen diese zur Unterscheidung jeweils in einer Gruppezusammengefasst werden, z.B. mithilfe einer GroupBox oder eines Panels.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCaptionCheckedColorCursorFontHintShowHintBeschreibungDieses Feld legt den Text fest.Dieses Feld legt fest, ob die Box oder der Button aktiviert ist (checked).Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hier kann die Schriftart für den Text (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftCaptionCheckedColorVisibleEnabledLeftTopWidthHeightHintBeschreibungText (String)Auswahl (Boolean)HintergrundfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnChangeBeschreibungDer neue Zustand (Boolean)


Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript


RadioButtonDiese beiden Tools dienen dazu eine Auswahl aus verschiedenen, fest vorgegebenen Möglichkeiten zu treffen. Es gibtzwischen diesen beiden einen wesentlichen Unterschied: Während man in einem Satz von CheckBoxen beliebig vieleauswählen kann (Mehrfachauswahl), ist dies bei einem Satz von RadioButtons nur bei einem einzigen möglich(Einzelauswahl). Beispiele: 3x CheckBox (links), 3x RadioButton (rechts)Will man mehrere Sätze von RadioButtons verwenden, müssen diese zur Unterscheidung jeweils in einer Gruppezusammengefasst werden, z.B. mit Hilfe einer GroupBox oder eines Panels.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCaptionCheckedColorCursorFontHintShowHintBeschreibungDieses Feld legt den Text fest.Dieses Feld legt fest, ob die Box oder der Button aktiviert ist (checked).Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hier kann die Schriftart für den Text (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftCaptionCheckedColorVisibleEnabledLeftTopWidthHeightHintBeschreibungText (String)Auswahl (Boolean)HintergrundfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnChangeBeschreibungDer neue Zustand (Boolean)


Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript


ComboBoxDie ComboBox verhält sich wie ein Edit-Feld mit der zusätzlichen Möglichkeit einen Eintrag aus einer DropDown-Listeauszuwählen.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftBevelEdgesBevelInnerBevelKindBevelOuterColorCursorFontHintShowHintItemIndexItemsStyleTextBeschreibungIn diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hier kann die Schriftart für die Eingabe (Text) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Dieses Feld enthält den Index des ausgewählten Elements. Wurde der fünfte Eintrag der Liste gewählt, steht hiereine 4 (die Zählung beginnt bei 0). Ist die Liste leer wird -1 angezeigt.Über dieses Feld kann die Auswahlliste mit Einträgen versehen werden.Hier wird das Verhalten der DropDown-Liste festgelegt.Dieses Feld enthält den ausgewählten Eintrag.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftBeschreibung


ItemsItemIndexTextColorFont.ColorVisibleEnabledLeftTopWidthHeightHintListe von Einträgen (String); die Einträge sind voneinander durch ein Pipe-Zeichen ("|") getrennt; jeder Eintragerscheint in einer eigenen Zeile der DropDown-ListeIndex des Listen-Eintrags, der angezeigt werden soll (Integer)Text, der angezeigt werden soll (String)Hintergrundfarbe (siehe Farbwahl-Dialog)Schriftfarbe (siehe Farbwahl-Dialog)Variable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnChangeOnChangeTextOnChangeTextBeschreibungIndex des ausgewählten Elements (Integer)er eingegebene oder ausgewählte Text (String)Der eingegebene oder ausgewählte Text (String)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


PanelGroupBox und Panel dienen beide dazu, beliebige Elemente zu einer Gruppe zusammenzufassen, um damit dieZusammengehörigkeit zu betonen oder die Übersichtlichkeit zu erhöhen. Sie verhalten sich wie ein Container. WerdenPanel oder GroupBox verschoben oder kopiert, werden alle darin enthaltenen Elemente ebenfalls verschoben oderkopiert. Es gibt zwischen diesen beiden zwei optische Unterschiede: Bei der Groupbox wird der Name (Caption) auf dieobere Randlinie gedruckt, beim Panel dagegen ins Zentrum der Box. Die GroupBox wird von einer unveränderlichenRandlinie umgeben, wohingegen die des Panels in vielfältiger Weise gestaltet werden kann.Es ist nützlich, auch dann ein Panel einzusetzen, wenn es zur optischen Gestaltung gar nicht nötig ist. Man kann z.B.ein aufwändiges Bedienfeld mit vielen Tasten und Beschriftungen in einem Panel zusammenfassen, um es zu einemspäteren Zeitpunkt an seinen endgültigen Platz zu verschieben. Es muss dann nur das Panel verschoben werden, seingesamter Inhalt wandert mit. Ein "unsichtbares" Panel ist auch dann von Vorteil, wenn sein komplizierter Inhaltmehrfach benötigt wird. Es genügt dann, entsprechend viele Kopien anzufertigen.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftBevelInnerBevelKindBevelOuterBevelWidthBorderStyleCaptionColorCursorFontHintShowHintBeschreibungIn diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.Dieses Feld legt den Namen fest.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich in der Box befindet.Hier kann die Schriftart für den Namen (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftBeschreibung


CaptionColorFont.ColorVisibleEnabledLeftTopWidthHeightHintName (String)HintergrundfarbeNur bei Panel: SchriftfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben innerhalb von Panel/GroupBox erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript


GroupBoxGroupBox und Panel dienen beide dazu, beliebige Elemente zu einer Gruppe zusammenzufassen, um damit dieZusammengehörigkeit zu betonen oder die Übersichtlichkeit zu erhöhen. Sie verhalten sich wie ein Container. WerdenPanel oder GroupBox verschoben oder kopiert, werden alle darin enthaltenen Elemente ebenfalls verschoben oderkopiert. Es gibt zwischen diesen beiden zwei optische Unterschiede: Bei der Groupbox wird der Name (Caption) auf dieobere Randlinie gedruckt, beim Panel dagegen ins Zentrum der Box. Die GroupBox wird von einer unveränderlichenRandlinie umgeben, wohingegen die des Panels in vielfältiger Weise gestaltet werden kann.Es ist nützlich, auch dann ein Panel einzusetzen, wenn es zur optischen Gestaltung gar nicht nötig ist. Man kann z.B.ein aufwändiges Bedienfeld mit vielen Tasten und Beschriftungen in einem Panel zusammenfassen, um es zu einemspäteren Zeitpunkt an seinen endgültigen Platz zu verschieben. Es muss dann nur das Panel verschoben werden. Seingesamter Inhalt wandert mit. Ein "unsichtbares" Panel ist auch dann von Vorteil, wenn sein komplizierter Inhaltmehrfach benötigt wird. Es genügt dann, entsprechend viele Kopien anzufertigen.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftBevelInnerBevelKindBevelOuterBevelWidthBorderStyleCaptionColorCursorFontHintShowHintBeschreibungIn diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.In diesen Feldern kann beim Panel (nicht bei der GroupBox) das Aussehen der Umrandungslinie verändertwerden.Dieses Feld legt den Namen fest.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich in der Box befindet.Hier kann die Schriftart für den Namen (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftBeschreibung


CaptionColorFont.ColorVisibleEnabledLeftTopWidthHeightHintName (String)HintergrundfarbeNur bei Panel: SchriftfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben innerhalb von Panel/GroupBox erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungnach Klick auszuführendes Skript


ProgressBarDie ProgressBar ist eine Balkenanzeige, um den Fortschritt von Vorgängen verfolgen zu können oder analoge Größen zuvisualisieren. Beispiele: Laden einer Datei, Befüllen des Gartenteichs, Anzeige einer Thermometerskala usw.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCursorHintShowHintMin, MaxOrientationPositionSmoothBeschreibungHier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hier wird festgelegt, mit welchem Wert die Skala beginnt und mit welchem sie endet. Beispiel: Min=10, Max=30:die Skala reicht von 10 bis 30, umfasst also 20 Schritte.Hier wird festgelegt, ob die Skala horizontal oder vertikal verlaufen soll.Der Wert in diesem Feld entspricht der Länge des angezeigten Balkens.False: Der Balken wird als Aneinaderreihung von Blöcken dargestellt. Die Größe der Blöcke ist von der Breite derProgressBar abhängig. Je schmaler sie ist, desto kleiner werden die Blöcke und desto höher wird die Auflösung.True: Der Balken wird in Pixel-Auflösung dargestellt. Er kommt damit einer Analog-Anzeige (Thermometer) amnächsten.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftPositionMinMaxVisibleLeftTopBeschreibungLänge des Balkens (Integer)Beginn der Skala (Integer)Ende der Skala (Integer)Variable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)


WidthHeightHintBreite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


TrackBarDas TrackBar-Tool entspricht in seiner Funktionsweise dem allseits bekannten Schieberegler, wie er z.B. häufig alsLautstärkeregler an Stereo-Anlagen zu finden ist. Darüber hinaus kann es auch als Anzeigeelement verwendet werden.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCursorFrequencyHintShowHintInvertMin, MaxOrientationPositionSelStart, SelEndThumbLengthTickMarksBeschreibungHier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich in der Box befindet.Ein Eintrag in diesem Feld bewirkt, dass nur jeder n-te Schritt mit einem Skalenstrich versehen wird.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hiermit können Anfangs- und Endpunkt der Skala vertauscht werden.Hier wird festgelegt, mit welchem Wert die Skala beginnt und mit welchem sie endet. Auf diese Weise wird alsoauch die Länge der Skala bestimmt. Beispiel: Min=10, Max=30: die Skala reicht von 10 bis 30, umfasst also 20Schritte;Hier wird festgelegt, ob die Skala horizontal oder vertikal verlaufen soll.Der Wert in diesem Feld legt die Position des Schiebers fest.Mit diesen Werten kann ein Abschnitt der Skala optisch hervorgehoben werden, um z.B. einen optimalen oderempfohlenen Bereich zu kennzeichnen.Hier wird die Größe des Schiebeknopfes festgelegt.s.u.* tmBottomRight Die Skalenstriche werden entweder unterhalb (bei horizontaler Ausrichtung) oder rechts (bei vertikalerAusrichtung) des Schiebewegs gezeichnet.* tmTopLeft Die Skalenstriche werden entweder oberhalb (bei horizontaler Ausrichtung) oder links (bei vertikaler Ausrichtung)des Schiebewegs gezeichnet.* tmBoth Die Skalenstriche werden auf beiden Seiten des Schiebewegs gezeichnet.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftPositionMinMaxVisibleEnabledBeschreibungPosition des Schiebers (Integer)Beginn der Skala (Integer)Ende der Skala (Integer)Variable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben erlaubt sind oder nicht (Boolean)


LeftTopWidthHeightSelStartSelEndHintPosition des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Startwert der Hervorhebung (Integer)Endwert der Hervorhebung (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnChangeBeschreibungPosition des Schiebereglers (Integer)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


ImageAls Image kann jedes im Image Pool hinterlegte Bild verwendet werden.Im Objektinspektor können folgende Eigenschaften verändert werden:EigenschaftAutoSizeCursorHintShowHintProportionalShowProgressbarStretchTransparentBeschreibungTrue bewirkt, dass das Fenster genau die Größe des Bildes annimmt. Bei False ist evtl. nur ein Ausschnitt zu sehenoder das Bild belegt nur einen Teil der Fensterfläche.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich innerhalb des Bildes befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.True bewirkt die Beibehaltung der Bildproportionen, wenn das Bild skaliert werden muss (siehe Stretch).Bei True wird während des Bildaufbaus ein Verlaufsbalken angezeigt.True bewirkt, dass das Bild so gestaucht oder gedehnt wird, dass es in Höhe und/oder Breite das gesamte Fensterausfüllt. Wenn proportional auf False gesetzt ist, wird das Fenster in beiden Richtungen voll ausgefüllt, wobei esdabei zu Verzerrungen kommen kann.True bewirkt, dass die Hintergrundfarbe durch das darunterliegende Bild oder Objekt ersetzt wird.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftPictureVisibleEnabledLeftTopWidthHeightHintBeschreibungImage-DateiVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben (Klick) erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)


Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnClickToggleBeschreibungVariable, die nach einem Klick getoggelt werden soll (Boolean)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript (siehe Skript-Dialog)


ShapeDas Shape-Tool bietet eine schnelle Möglichkeit einfache Formen zu erstellen, wie z.B. eine Signal-Ampel oder einenHintergrund für ein anderes Objekt.Wenn man auf eine Randlinie verzichtet, lassen sich durch Kombination der Grundformen auch unregelmäßige Umrisseerzeugen.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCursorHintShowHintShapeBrushBeschreibungHier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich innerhalb des Feldes befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Es stehen verschiedene Grundformen zur Verfügung, wie z.B. Kreis und Ellipse, Quadrat und Rechteck, Quadratund Rechteck mit abgerundeten Ecken.Hier wird festgelegt, in welcher Weise das Innere eines Shape ausgefüllt werden soll.- Color Farbe für das Füllmuster- Style Füllmuster; unter den Füllmustern, gibt es auch bsClear, was einen transparenten Hintergrund bewirkt.PenHier wird festgelegt, in welcher Weise die Randlinie eines Shape gestaltet werden soll.- Color Farbe für die Randlinie- Mode Verschiedene Methoden zur Verknüpfung von Vorder- und Hintergrund; Default: pmCopy- Style Verschiedene Linienarten, wie durchgezogen, punktiert, gestrichelt...; psClear macht die Randlinie unsichtbar- Width Breite der Randlinie in PixelnEigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftBrush.ColorPen.ColorVisibleEnabledLeftTopBeschreibungFüllfarbeRandfarbeVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben (Klick) erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)


WidthHeightHintBreite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnClickToggleBeschreibungVariable, die nach einem Klick getoggelt werden soll (Boolean)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript


BevelDas Bevel Tool erlaubt es in gestalterischer Weise, Rahmen und Trennlinien zu setzen. Anders als bei GroupBox undPanel wird dabei keine organisatorische Zusammengehörigkeit der umrahmten Elemente bewirkt. Es soll nur eine reinoptische Wirkung erzielt werden.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCursorHintShowHintShapeStyleBeschreibungHier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hier kann zwischen verschiedenen Rahmen und Trennlinien ausgewählt werden.Dieser Parameter beeinflusst die Darstellung von Linien (bsLowered: eingesunken, bsRaised: erhaben).Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftVisibleLeftTopWidthHeightHintBeschreibungVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


PageControlDas PageControl-Tool bietet eine Möglichkeit mithilfe von Tabs oder Buttons, zwischen verschiedenen Seiten(TabSheets) umzuschalten oder hin- und herzublättern. So kann man z.B. die einzelnen Räume einer Wohnung jeweils ineiner eigenen Seite darstellen.Eine PageControl stellt einen Container für TabSheets dar. Ein TabSheet wird über sein zugehöriges Tab (oder Button)ausgewählt. Es bietet eine Zeichenfläche, wie das Panel oder die GroupBox. Das im Beispiel gerade sichtbare TabSheetträgt den Namen "Esszimmer".Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCursorHintShowHintStyleTabWidthTabHeightBeschreibungHier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hier kann zwischen Tabs, Buttons und FlatButtons ausgewählt werden.Hier wird die Größe der Tabs (oder Buttons) festgelegt.Hier wird die Größe der Tabs (oder Buttons) festgelegt.TabIndex Der TabIndex gibt die Nummer des gerade ausgewählten Tabs an. Die Zählung beginnt bei 0.TabPositionHier wird festgelegt, an welcher Seite (links, rechts, oben, unten) die Tabs erscheinen sollen.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaft BeschreibungTabIndex Nummer des Tabs (die zugehörige Seite), das angezeigt werden soll (Integer). Die Zählung beginnt bei 0.VisibleVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Enabled Variable, die festlegt, ob das PageControl bedienbar sein soll oder nicht (Boolean)LeftPosition des linken Feldrands (Integer)TopPosition des oberen Feldrands (Integer)WidthBreite des Felds (Integer)HeightHöhe des Felds (Integer)HintText, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungOnChange Nummer des augewählten Tabs (Integer). Die Zählung beginnt bei 0.Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


TabSheetDas TabSheet ist Bestandteil des PageControl-Tools. Ein TabSheet wird durch Klick auf sein zugehöriges Tab aktiviert.Im Beispiel unten wurde auf diese Weise das TabSheet für das Esszimmer in den Vordergrund geholt. EinTabSheetverhält sich wie ein Panel oder eine GroupBox, hat also dieselben Container-Eigenschaften.TabSheet hinzufügenTabSheets können nicht aus der Tool Palette eingefügt werden, sondern nur über das Kontextmenü. Zum Einfügen musszunächst die PageControl selektiert werden, dem das TabSheet hinzugefügt werden soll. Dazu klickt man auf eines derTabs, die der betreffenden PageControl angehören. Im obersten Feld des Object Inspector sollte nun der Name derPageControl angezeigt werden. Ein anschließender Rechtsklick mit der Maus ruft das Kontextmenü auf. Dort wählt man"Neuer Tab".Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCaptionCursorHintShowHintBeschreibungHier wird der Name des zugehörigen Tabs (oder Buttons) festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.PageIndex Hier kann die Nummer des TabSheets festgelegt werden. Die Zählung beginnt bei 0.TabVisibleHier wird festgelegt ob das TabSheet sichtbar sein soll oder nicht.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftVisibleEnabledLeftTopWidthHeightHintBeschreibungVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben innerhalb des TabSheets erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


ScrollBoxDie ScrollBox hat ähnliche Eigenschaften wie das Panel, besitzt aber zusätzlich Bildlaufleisten (ScrollBars), die bei Bedarfam unteren und/oder am rechten Rand eingeblendet werden. Mit Hilfe dieser Bildlaufleisten ist es möglich, den Inhalt derBox zu verschieben, so dass alle Bereiche (z.B. eines Bildes) sichtbar gemacht werden können.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftBevelInnerBevelKindBevelOuterBevelWidthBorderStyleColorCursorHintShowHintBeschreibungIn diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.In diesen Feldern kann das Aussehen der Umrandungslinie verändert werden.Hier wird die Hintergrundfarbe festgelegt.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich in der Box befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftVisibleEnabledLeftTopWidthHeightHintBeschreibungVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob das Scrolling erlaubt ist oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirken


EigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


WebBrowserDas Web Browser-Tool bietet eine einfache Möglichkeit entweder Web-Seiten in die eigene Benutzeroberflächeeinzubinden oder HTML-formatierten Text auszugeben. Der Web Browser kennt daher zwei verschiedene Betriebsarten,die durch die Eigenschaft Source gesteuert werden:Darstellung von Web SeitenDarstellung von HTML-formatiertem TextIn der Betriebsart Textausgabe kann der Web Browser anstelle des Memo Tools eingesetzt werden, insbesonderedann, wenn der Text formatiert erscheinen soll. Die Formatierungsmöglichkeiten von HTML sind praktischunbegrenzt, wohingegen das Memo Tool überhaupt keine Formatierung bietet.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftContentCursorHintShowHintBeschreibungHier kann man mithilfe eines String List Editors den Text der einzelnen Zeilen eintragen. Der Parameter ist nurrelevant, wenn Source = srcText.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich im Feld befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Interval Hier wird das Aktualisierungsintervall (in Sekunden) eingetragen. Der Parameter ist nur relevant, wenn Source =srcURL ist.SourceDer Parameter legt die Betriebsart fest. (srcText: Ausgabe eines HTML-formatierten Textes, srcURL: Ausgabeeiner Web Seite)URL Hier wird die URL der darzustellenden Web Seite eingegeben. Der Parameter ist nur relevant, wenn Source =srcURL ist.SilentWenn True, werden alle JavaScript Fehlermeldungen und Popups unterdrückt.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftURLContentIntervalVisibleLeftTopWidthHeightHintBeschreibungDie URL der darzustellenden Web-Seite (nur relevant, wenn Source = srcURL) (String)HTML-formatierter Text (nur relevant, wenn Source = srcText) (String)Aktualisierungsintervall (in Sekunden) (nur relevant, wenn Source = srcURL) (Integer)Variable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


WebImageAls Start-Image kann jedes im Image Pool hinterlegte Bild verwendet werden. Zusätzlich zum normalen Image bietet dasWebImage mehrere Eigenschaften an, womit Bilder von einer URL (z.B. WebCam) zyklisch aktualisiert und angezeigtwerden können. Die Eigenschaften ImageURL, FrameCount und FrameInterval sind entsprechend zu konfigurieren.Im Objektinspektor können folgende Eigenschaften verändert werden:EigenschaftAutoSizeCursorHintShowHintProportionalShowProgressbarStretchTransparentFrameIntervalBeschreibungTrue bewirkt, dass das Fenster genau die Größe des Bildes annimmt. Bei False ist evtl. nur ein Ausschnitt zu sehenoder das Bild belegt nur einen Teil der Fensterfläche.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich innerhalb des Bildes befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.True bewirkt die Beibehaltung der Bildproportionen, wenn das Bild skaliert werden muss (siehe Stretch).Bei True wird während des Bildaufbaus ein Verlaufsbalken angezeigt.True bewirkt, dass das Bild so gestaucht oder gedehnt wird, dass es in Höhe und/oder Breite das gesamte Fensterausfüllt. Wenn proportional auf False gesetzt ist, wird das Fenster in beiden Richtungen voll ausgefüllt, wobei esdabei zu Verzerrungen kommen kann.True bewirkt, dass die Hintergrundfarbe durch das darunterliegende Bild oder Objekt ersetzt wird.Setzt das Intervall (Sekunde, Minute, Stunde), in dem FrameCount an Bildern neu eingelesen wirdEigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftPictureVisibleEnabledLeftTopBeschreibungImage-DateiVariable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob Eingaben (Klick) erlaubt sind oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)


WidthHeightHintImageURLFrameCountBreite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Vollständige Adresse zum Bild (z.B. http://192.168.1.10/image.jpg)Gibt an, wie oft pro FrameInterval das Bild neu eingelesen werden sollEreignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnClickToggleBeschreibungVariable, die nach einem Klick getoggelt werden soll (Boolean)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript (siehe Skript-Dialog)


ExecButtonExecButton besitzt die Eigenschaften eines Standard Buttons. Er bietet darüber hinaus aber noch weitere Möglichkeiten,Aktionen auszulösen.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCaptionCursorExecTypeBeschreibungDieses Feld legt den Namen (die Aufschrift) fest.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich über dem Button befindet.* etCloseDesigner Die Designer-Anwendung wird beendet.* etCustom Ein beliebiges externes Programm wird gestartet.* etOpenPanel Zeigt ein anderes Objekt verkleinert im Vordergrund.* etSetTab Es wird zu einem bestimmten TabSheet gewechselt.Executeable* etCloseDesigner (leer)Bei ExecType* etCustom Der Name des auzuführenden Programms; Hinweis: Bleibt das Feld leer, so wird ein Windows Explorer-Fenstergöffnet.* etOpenPanel Der Name des Objekts, das in den Vordergrund geholt werden soll; geeignete Objekttypen sind Panel, Groupbox,TabSheet usw.* etSetTab Der Name der PageControl, in dem das TabSheet enthalten istFontHintShowHintParameters* etCloseDesigner (Leer)Hier kann die Schriftart für den Namen (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Bei ExecType* etCustom Optionale Parameter, die an das auszuführende Programm zu übergeben sind* etOpenPanel Skalierungsfaktor in %: (leer) = 75% der Originalgröße; n = n% der Originalgröße; n, m = n% der Originalbreiteund m% der Originalhöhe;* etSetTab Die Nummer des TabSheet (Zählung beginnt bei Null);WordWrapHier kann festgelegt werden, ob die Aufschrift ggf. auf mehrere Zeilen umgebrochen werden soll.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftCaptionExecuteableParametersVisibleEnabledLeftTopWidthHeightHintBeschreibungName oder Aufschrift (String)Name des auszuführenden Programms (String)Parameter, die an das Programm zu übergeben sind (String)Variable, die festlegt, ob der Button sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob die Betätigung (Klick) erlaubt ist oder nicht (Boolean)Position des linken Button-Rands (Integer)Position des oberen Button-Rands (Integer)Breite des Buttons (Integer)Höhe des Buttons (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)


Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnClickToggleBeschreibungVariable, die nach einem Klick getoggelt werden soll (Boolean)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript


ExecImageExecImage ist funktionsgleich mit ExecButton. Die Schaltfläche wird hier jedoch nicht durch einen Button, sonderndurch ein Image dargestellt. Dadurch kann das Erscheinungsbild völlig frei gewählt werden.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftAutoSizeCursorExecTypeBeschreibungTrue bewirkt, dass das Fenster genau die Größe des Bildes annimmt. Bei False ist evtl. nur ein Ausschnitt zu sehenoder das Bild belegt nur einen Teil der Fensterfläche.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich über dem Button befindet.* etCloseDesigner Die Designer-Anwendung wird beendet.* etCustom Ein beliebiges externes Programm wird gestartet.* etOpenPanel Zeigt ein anderes Objekt verkleinert im Vordergrund.* etSetTab Es wird zu einem bestimmten TabSheet gewechselt.Executeable* etCloseDesigner (Leer)Bei ExecType* etCustom Der Name des auzuführenden Programms; Hinweis: Bleibt das Feld leer, so wird ein Windows Explorer-Fenstergöffnet.* etOpenPanel Der Name des Objekts, das in den Vordergrund geholt werden soll; geeignete Objekttypen sind Panel, Groupbox,TabSheet usw.* etSetTab Der Name des PageControl in dem das TabSheet enthalten istHintShowHintParameters* etCloseDesigner (Leer)Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Bei ExecType* etCustom Optionale Parameter, die an das auszuführende Programm zu übergeben sind* etOpenPanel Skalierungsfaktor in %: (leer) = 75% der Originalgröße; n = n% der Originalgröße; n, m = n% der Originalbreiteund m% der Originalhöhe* etSetTab Die Nummer des TabSheet (Zählung beginnt bei Null)ProportionalShowProgressbarTrue bewirkt die Beibehaltung der Bildproportionen, wenn das Bild skaliert werden muss (siehe Stretch).Bei True wird während des Bildaufbaus ein Verlaufsbalken angezeigt.Stretch True bewirkt, dass das Bild so gestaucht oder gedehnt wird, dass es in Höhe und/oder Breite das gesamte Fensterausfüllt. Wenn proportional auf False gesetzt ist, wird das Fenster in beiden Richtungen voll ausgefüllt, wobei esdabei zu Verzerrungen kommen kann.TransparentTrue bewirkt, dass die Hintergrundfarbe durch das darunterliegende Bild oder Objekt ersetzt wird.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftPictureExecuteableParametersVisibleEnabledLeftBeschreibungImage-DateiName des auszuführenden Programms (String)Parameter, die an das Programm zu übergeben sind (String)Variable, die festlegt, ob der Button sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob die Betätigung (Klick) erlaubt ist oder nicht (Boolean)Position des linken Button-Rands (Integer)


TopWidthHeightHintPosition des oberen Button-Rands (Integer)Breite des Buttons (Integer)Höhe des Buttons (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftOnClickToggleBeschreibungVariable, die nach einem Klick getoggelt werden soll (Boolean)Ereignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftOnClickBeschreibungNach Klick auszuführendes Skript


LockButtonDer LockButton dient dazu, bestimmte Objekte vor unbefugtem Zugriff zu schützen. Hierfür sind alle Objekte geeignet,die als Container dienen können, also andere Objekte enthalten können. Solche Objekte sind:die Designer-Anwendung selbstPanelGroupBoxTabSheet (siehe PageControl)Nach dem Sperren eines Objekts erscheint eine numerische Tastatur, über welche die Freischaltung erfolgt. Bei derVergabe eines Codes ist darauf zu achten, dass nur Ziffern verwendet werden, da zur Eingabe ausschließlich die o.g.Tastatur verwendet werden kann. Weiterhin muss beachtet werden, dass die Tastatur eine gewisse Größe besitzt. Beider Planung sollte also der Platzbedarf berücksichtigt werden, da sonst evtl. die Tastatur nicht vollständig zugänglichist.Im Objektinspektor können neben der Position und der Größe auch noch weitere wichtige Eigenschaften verändertwerden.EigenschaftCaptionCodeCursorFontHintShowHintBeschreibungDieses Feld legt den Namen (die Aufschrift) fest.Hier wird der Freigabe-Code hinterlegt. Der Code darf nur aus Ziffern bestehen, da bei der Freischaltung nurZiffern eingegeben werden können.Hier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich über dem Button befindet.Hier kann die Schriftart für den Namen (Caption) ausgewählt werden.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feld


WordWrapbefindet.Hier kann festgelegt werden, ob die Aufschrift ggf. auf mehrere Zeilen umgebrochen werden soll.Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftVisibleEnabledLeftTopWidthHeightHintBeschreibungVariable, die festlegt, ob der Button sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob die Betätigung (Klick) erlaubt ist oder nicht (Boolean)Position des linken Button-Rands (Integer)Position des oberen Button-Rands (Integer)Breite des Buttons (Integer)Höhe des Buttons (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


SoundPlayerDer Sound Player ist ein Tool zur Ausgabe von Meldungen, Klängen oder (meist kurzen) Musikstücken. Alle als Medien-Datei eingetragenen Sound-Dateien können hierüber abgespielt werden.Für minimale Steuerungsmöglichkeiten ist ein kleines Bedienpanel integriert, das drei Buttons zur Verfügung stellt:Play - startet die Wiedergabe, bzw. setzt sie fortPause - unterbricht die WiedergabeStop - stoppt die WiedergabeIm Objektinspektor können folgende Eigenschaften verändert werden:EigenschaftCursorHintShowHintReplayDelayReplayCountBeschreibungHier wird festgelegt, welches Aussehen der Cursor haben soll, wenn er sich innerhalb des Bildes befindet.Hinweistext, der erscheinen soll, wenn sich der Mauszeiger im Feld befindet.Hier wird festgelegt, ob der in Hint festgelegte Hinweistext erscheinen soll, wenn sich der Mauszeiger im Feldbefindet.Hier wird der Abstand (in Minuten) zwischen zwei Wiederholungen festgelegt. Der Parameter hat nur Gültigkeit,wenn ReplayCount > 0 ist.Hier wird festgelegt, wie oft der Sound wiederholt werden soll (0 = keine Wiederholung, 1, 2, ..., n = Anzahl derWiederholungen, -1 unendlich viele Wiederholungen)Eigenschaften, die aus <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werdenEigenschaftSoundReplayDelayReplayCountVisibleEnabledLeftTopWidthHeightHintBeschreibungSound-DateiVariable, die den Abstand (in Minuten) zwischen zwei Wiederholungen festlegt (Integer)Variable, die die Anzahl der Wiederholungen festlegt (Integer)Variable, die festlegt, ob das Feld sichtbar sein soll oder nicht (Boolean)Variable, die festlegt, ob die Bedienung erlaubt ist oder nicht (Boolean)Position des linken Feldrands (Integer)Position des oberen Feldrands (Integer)Breite des Felds (Integer)Höhe des Felds (Integer)Text, der angezeigt werden soll, wenn der Mauszeiger über dem Feld steht (ShowHint muss TRUE sein) (String)Ereignisse, die eine Datenübernahme in <strong>IP</strong>-<strong>Symcon</strong>-Variablen bewirkenEigenschaftBeschreibungEreignisse, die <strong>IP</strong>-<strong>Symcon</strong>-Skripte triggernEigenschaftBeschreibung


ObjektinspektorDer Objektinspector zeigt die jeweiligen Eigenschaften des ausgewählten Objektes an. Hier kann in einer Art "FineTuning" das Objekt an die Erfordernisse angepasst werden.Die wichtigsten Felder sind <strong>IP</strong>SYMCON und <strong>IP</strong>SYMID. Diese bilden die Schnittstelle zu <strong>IP</strong>-<strong>Symcon</strong>. Über diese Feldersind alle Properties und Events zugänglich, die für das gewählte Objekt definiert sind.ObjekteigenschaftenDie folgenden Properties (Eigenschaften) sind bei den meisten Objekten zu finden:EigenschaftCaptionNameAnchorsColorCursorLeft, TopWidth, HeightFontBeschreibung- Color Schriftfarbe- Size SchriftgrößeDer Name des Objekts, der angezeigt werden sollDer Name des Objekts, der im Struktur-Fenster angezeigt werden sollDiese Property legt fest, welche Seiten eines Objekts mit der entsprechenden Seite des übergeordneten Objektsfest verankert werden sollen.die Hintergrundfarbe des ObjektsDie Form des Cursors, wenn der Mauszeiger über dem Objekt steht; Diese Funktion ist nützlich, um z.B. demBenutzer anzuzeigen, dass an dieser Stelle ein Mausklick akzeptiert wird.Die X- und Y-Koordinaten (der linke, obere Punkt) des Objekts; Diese Angaben sind relativ, beziehen sich alsoimmer auf das jeweils übergeordnete Objekt. Wenn das Objekt innerhalb eines Panels liegt, beziehen sie sich aufdieses Panel.Die Breite und Höhe des ObjektsParameter zur Auswahl und Gestaltung der Schrift:- Name Schrifttyp (z.B. Arial, Courier New, ...)- Orientation Schriftrichtung in Zehntelgrad (z.B. 900 (90°) für eine Beschriftung von unten nach oben)- Pitch Zeichenabstand- Style Eigenschaften wie fett, kursiv, unterstrichen, durchgestrichenHintShowHintTexthinweis, der erscheinen soll, wenn der Mauszeiger auf dem Objekt stehtLegt fest, ob der unter Hint definierte Hinweistext angezeigt werden sollAnmerkung zu Anchors:Bei einem Label mit akRight=TRUE, welches in einem Panel enthalten ist. Wenn der rechte Rand des Panels verschobenwird, wird das Label mitgezogen, so dass der Abstand des Labels vom rechten Rand des Panels konstant bleibt. Istzusätzlich auch akLeft=TRUE, dann wird die Breite des Labels verändert, da dann auch der linke Rand einen konstantenAbstand beibehalten muss. Entsprechendes gilt für akTop und akBottom.Unterschied zwischen Caption und Name:Name ist die intern vom Designer verwendete Bezeichnung. Es ist ratsam hier sinnvolle Namen zu vergeben.Caption ist der tatsächlich in der fertigen Anwendung sichtbare Name.Verbindung zwischen Dashboard und <strong>IP</strong>-<strong>Symcon</strong>


Zwei sehr wichtige Felder im Objektinspektor sind <strong>IP</strong>SYMCON und <strong>IP</strong>SYMID. Über diese Felder hat man Zugriff aufalle, für das Objekt definierte Properties und Events.Dessen Eigenschaften und Ereignisse bilden eine bidirektionale Schnittstelle zwischen <strong>IP</strong>-<strong>Symcon</strong> und DashboardEigenschaften sind Punkte eines Objekts, die durch <strong>IP</strong>-<strong>Symcon</strong> Variablen verändert werden können.Datenflussrichtung: <strong>IP</strong>-<strong>Symcon</strong> -> DashboardEreignisse sind Benutzereingaben, die in <strong>IP</strong>-<strong>Symcon</strong>-Variablen übernommen werden oder <strong>IP</strong>-<strong>Symcon</strong>-Skripte aufrufen.Datenflussrichtung: Dashboard -> <strong>IP</strong>-<strong>Symcon</strong><strong>IP</strong>SYMCON - KomponenteneditorEin Klick auf den Button mit den drei Punkten öffnet den Dashboard Komponenteneditor. Die Anzahl der dortaufgeführten Eigenschaften und Eregnisse ist abhängig vom ausgewählten Tool.Die eizelenen Eigenschaften und Ereignisse können direkt mit Variablen und Skripte verknüpft werden, und so eineInteraktion zwischen dem Dashbaord und dem <strong>IP</strong>-<strong>Symcon</strong> Server erreicht werden. Im Normalfall reicht einie einfacheVerknüpfung aus und die Aktivierung der Option "Benutzer Variablenprofil, falls verfügbar". Sofern kein Profil verfügbarist oder eine eigene Dashboardspezifische Assoziation erstellt werden soll, kann der Eigenschafteneditor entsprechendkonfiguriert werden.


<strong>IP</strong>SYMID - zusätzliche DatenIn diesem Feld kann eine Kennung hinterlegt werden, die man in <strong>IP</strong>-<strong>Symcon</strong>-Skripte durch die Systemvariable$_<strong>IP</strong>S['COMPONENT'] auslesen kann. Hierdurch kann ein Skript seine Trigger-Quelle in Erfahrung bringen.Wenn ein Skript von mehreren verschiedenen Ereignissen aufgerufen wird, kann dieses zur Laufzeit (Runtime) dasaufrufende Objekt ermitteln und entsprechend reagieren.switch ($_<strong>IP</strong>S['COMPONENT'])// enthält die in <strong>IP</strong>SYMID hinterlegte Kennung{case "btn_stop": // Behandlung der STOP-Taste// ...break;case "btn_play":// ...break;// Behandlung der PLAY-Tastecase "btn_pause":// ...break;// Behandlung der PAUSE-Taste}default:// ...break;


StrukturIn diesem Fenster sind alle Objekte hierarchisch in einer Baumstruktur aufgelistet. Man kann so besser erkennen, ob z.B.ein Button einem Panel untergeordnet ist, also in diesem enthalten ist.Diese Ansicht ist besonders nützlich um zusammengehörige Strukturen zu überprüfen.


ProtokollDas Fenster Protokoll enthält alle Aktionen, die wieder rückgängig gemacht werden können. Hierzu zählen das Einfügen(Insert) und das Löschen (Delete) von Objekten der Tool Palette. Die Aktionen können zurückgenommen werden durchdie Tastenkombination Strg+Z oder durch Anwahl von Undo im Kontextmenü (rechte Maustaste).


KontextmenüEin Klick mit der rechten Maustaste in die Zeichenfläche bringt das Kontextmenü zur Anzeige.Es bietet folgende Funktionen:Name ShortCut BeschreibungVisueller Designer F12 Wechselt zwischen Run-Modus und EntwurfsmodusSpeichern & Hochladen Strg+S Speichert das Formular abAls Formulardatei speichern... Strg+D Öffnet einen Dialog zum Speichern unter einem anderen NamenVon Formulardatei laden...Lädt eine zuvor gespeicherte ForumlardateiNeuer TabFügt einem PageControl ein neues TabSheet hinzuIn den HintergrundBei überlappenden Objekten: bringt das selektierte Objekt in den HintergrundIn den VordergrundBei überlappenden Objekten: bringt das selektierte Objekt in den VordergrundRückgängig Strg+Z Macht die letzte Insert- oder Delete-Aktion rückgängig (siehe Protokoll)Kopieren Strg+C Kopiert das selektierte Objekt in die ZwischenablageAusschneiden Strg+X Verschiebt das selektierte Objekt in die ZwischenablageEinfügen Strg+V Fügt ein Objekt aus der Zwischenablage in das selektierte Objekt einBeim Einfügen mit Paste kann es vorkommen, dass das eingefügte Objekt nicht sichtbar ist und somit der Anscheinerweckt wird, der Vorgang sei fehlgeschlagen. Ursache hierfür ist die Tatsache, dass das Objekt mit all seinenEigenschaften kopiert wird. Hierzu zählen auch die Positionskoordinaten. Wenn die Zielposition z.B. in einem Panelliegt, ist es möglich, dass die Originalkoordinaten für den sichtbaren Bereich der Panel-Koordinaten zu groß sind. Indiesem Fall sollten die Objektkoordinaten (Left, Top) im Objektinspektor auf einen sinnvollen Wert gesetzt werden.Damit wird das Objekt sofort wieder sichtbar.


Objekt-DarstellungAktive ElementeAufzählungWertauswahlSliderFarbauswahlString im EditiermodusText-Box im EditiermodusPassive ElementeNormale VariableVariable mit HintergrundfarbeZeitstempelFarbanzeige


StringText-BoxHTML-BoxSonderelementeBildSkriptZyklisches EreignisE-MailDialogeFarbauswahl


Einmaliges EreignisTägliches Ereignis


Wöchentliches EreignisMonatliches EreignisJährliches Ereignis


IconsJedes Objekt in <strong>IP</strong>-<strong>Symcon</strong> kann ein Icon besitzen. Zusätzlich können Icons innerhalb von Variablenprofilen vorhandensein oder durch verlinkte Strukturen (siehe Links) vererbt werden. Icons werden nach folgender Reihenfolge priorisiertgesetzt:1. Das dem Link-Objekt zugewiesene Icon (bei Verlinkung)2. Das dem (verlinkten) Objekt zugewiesene Icon3. Objekttypabhängig:Bei Skripten: das Script-IconBei Bildern: das Image-IconBei Variablen:1. Das Standard-Icon des Variablenprofils2. Das anhand der Assoziationen im Variablenprofil ermittelte IconIcons, die anhand der Assoziationen in Variablenprofilen gesetzt werden, werden automatisch bei Variablenwertänderungaktualisiert. Wenn ein vererbtes Icon explizit entfernt werden soll, so kann das spezielle 'Transparent' Icon ausgewähltwerden.Benutzerdefinierte Icons einbindenAb <strong>IP</strong>-<strong>Symcon</strong> 3.0 werden benutzerdefinierte Icons über Skins eingebunden.Mehr Informationen dazu finden Sie in unserem Forum: WebFront SkinsÜbersicht der IconsFolgende Icons sind im WebFront enthalten und können an den jeweiligen Stellen in <strong>IP</strong>-<strong>Symcon</strong> ausgewählt werden. EinSonderfall ist das Icon Transparent. Wird dieses Icon ausgewählt, so kann ein anderes Icon, welches niedriger in derHierarchie ist (s.o.), überschrieben werden, so dass kein Icon angezeigt wird. Dies kann als Stilelement verwendet werden,um z.B. bei verlinken Objektkategorien kein Icon anzuzeigen, obwohl die Kategorie ein Icon zugewiesen hatte.Das Vorschaubild zeigt die Icons in einer verminderten Auflösung.


VorgehensweisenWollen Sie in <strong>IP</strong>-<strong>Symcon</strong> ein neues "Objekte hinzufügen", klicken Sie bitte auf diesen Dialog. Sie erhalten dann folgendeAuswahlmöglichkeiten:Mit einem Klick auf "Mehr >>" erhalten Sie diese weiteren Auswahlmöglichkeiten:Alternativ können Sie auch die "Rechte Maustaste" mit einem Klick auf die gewünschte Stelle im Baumdiagrammverwenden. Sie erhalten dann diese Auswahlmöglichkeit:


Geräte suchen<strong>IP</strong>-<strong>Symcon</strong> verfügt über eine sehr komfortable Funktion, die es dem Anwender ermöglicht, schnell und einfach neueGeräte dem System hinzuzufügen. Vorraussetzung ist, dass die neuen, anzulernenden Geräte von sich aus Meldugenverschicken (z.B. Funk-Temperatur-Fühler). Alternativ kann - oder muss - der Anwender eine "Anlern-Taste" oder ganzeinfach einen Knopf auf der Fernbedienung drücken. Bei einigen Systemen, wie z.B. das 1-Wire-System, kann <strong>IP</strong>-<strong>Symcon</strong>gezielt nach angeschlossenen, unbekannten Geräten suchen. Nach dem Motto: "Hallo wer ist denn da?". Und die Geräteantworen mit: "Ich bin es, der Helligkeissensor".Das folgende Beispiel zeigt die empfangenen Geräte des HomeMatic Systems:Es kann mehrere Minuten dauern, bis alle Geräte in der Liste erscheinen!Ein grüner Hintergrund signalisiert ein neues Modul. Durch einen Doppelklick kann es dann ausgewählt werden.Je nach Eigenschaften des Gerätes legt <strong>IP</strong>-<strong>Symcon</strong> automatisch Variablen an, die Funktionalität wiederspiegeln. DieNamen sowie den Ort können Sie jederzeit verändern.Das folgende Beispiel zeigt die drei Variablen eines Funkschalters bzw. einer Fernbedienung des HomeMatic System:Beim HomeMatic System muss zusätzlich für die Suche angegeben weden, ob funk- oder kabelgebundene Geräte gesuchtwerden sollen.Wenn die BidCoS-Seriennummer bekannt ist, kann diese auch direkt eingegeben werden:Beachten Sie bitte, dass erst beim zweiten Empfang eines Datensatzes des jeweiligen Gerätes seine Variablen mitWerten gefüllt werden.


Skripte wiederverwendenStelle Sie sich vor, Sie hätten eine Flurlicht-Steuerung, die auf allen Etagen gleich ist. Diese möchten Sie natürlich ungerndreimal programmieren.Sie könnten jetzt also dreimal Ihr Skript per Copy & Paste in die einzelnen Skripte kopieren, was für den Anfang aucheine gute Lösung ist. Wenn Sie damit aber irgendwie nicht so ganz glücklich sind und zu der Kategorie User gehören, dieRedundanz vermeiden wollen und/ oder ein System zum Code-Reusing zwischen Projekten brauchen, können Siefolgende Idee verwenden:Sie haben ein Skript mit dem Namen "Lichtsteuerung (xComfort, Flur, Bewegungsmelder, Helligkeitsregelung)". DerName sollte ausdrücken, was dieses tut und welche Systeme/ Geräte/ Stati es verwendet.Folgender Code könnte der Inhalt sein:if(!$_<strong>IP</strong>S['VALUE']) { //Wenn keine Bewegung - siehe Dokumentation für SpezialvariablenMXC_SwitchMode($lampenID, false);} else {if(!GetValueBoolean($istTag)) { //Nur nach Sonnenuntergangif((time() > strtotime("22:30")) || (time() < strtotime("06:00"))) {MXC_DimSet($lampenID, 15);} else {MXC_DimSet($lampenID, 50);}}}Dieses Skript muss von einem "Auslösenden Ereigniss" aufgerufen werden - hier normalerweise von einem/ mehrerenBewegungsmelder. Das Licht wird dann abhängig von der Tageszeit auf eine unterschiedliche Dimmstufe gestellt. Sobaldder Bewegungsmelder keine Bewegung mehr erkennt und den FALSE Impuls sendet, schaltet das Gerät ab.Sie habe nun die Logik ausgelagert und brauchen nur noch Skripte zu erstellen, die die fehlenden Variablen setzen undvon einem Ereignis aufgerufen werden. Nachfolgend ein Beispiel://Trigger durch Bewegungsmelder Variable!//Eindeutige Geräte-ID$lampenID = 53013 /*[Erdgeschoss\Flur\Deckenlampe]*/;//Tag/Nacht Variable$istTag = 31753 /*[IstTag]*/;includeScript(12345 /*[Szenarien\Lichtsteuerung (xComfort, Flur, Bewegungsmelder, Helligkeitsregelung)]*///Copy&Paste aus dem "Wie kann ich...?" Thema der Dokumentationfunction includeScript($scriptID){$s = <strong>IP</strong>S_GetScript($scriptID);include($s['ScriptFile']);}Sie können also "Funktionsvorlagen" erstellen und diese dann nur noch mit den nötigen IDs füttern. In diesen Skriptensind dann die IDs der Geräte/ Variablen, zu denen <strong>IP</strong>-<strong>Symcon</strong> aber immer vollständige und aussagekräftige Namenerstellt (sofern man seine Baumstruktur vernünftig erstellt hat).Bei Bedarf kann das Szenario auch für FS20 angepasst und dynamisch anhand der übergebenen InstanzID die richtigenFunktion aufgerufen oder die systemabhängigen Änderungen vorgenommen werden.


Variablenprofile verwendenVariablenprofile werden genutzt, um die sogenannten Variablenwerte (z.B. True / False oder 0, 1, 2, 3) in eine möglichsteinfach verständliche Form zu bringen.Dabei kann für die eigenen Variablen aus einer Vielzahl von Standardprofilen gewählt werden oder eigene erstellt werden,welche dann für beliebig viele Variablen verwendet werden können.Eine kleine Einführung bietet das folgende Video-Tutorial, welches Ihnen das Anleger einer Variable und das Hinzufügeneines Variablenprofils mit farbigen Zuständen vermittelt. Anschliessend wird die Variable im WebFront angezeigt und dieFunktion des Profils simuliert.Video-TutorialLaden …


Beispiel 1Wohlfühltemperatur auf dem BalkonStellen Sie sich vor, Sie haben einen Temperatursensor auf Ihrem Balkon angebracht und korrekt mit <strong>IP</strong>-<strong>Symcon</strong>verbunden. Auch die Anzeige des Temperaturwertes im WebFront ist bewerkstelligt. Nun wollen Sie aber auch noch imBüro mit einem Blick - beispielsweise auf Ihrem Handy - wissen, ob sich eine Reise nach “Balkonien” wirklich lohnt oderob Sie lieber ins Kino oder etwas Trinken gehen sollten.Um dieses Projekt zu bewerkstelligen, müssen Sie das Variablenprofil der Variable des Temperatursensors editieren.Dafür wählen Sie besagte Variable in der Objektbaumansicht aus und drücken per Kontextmenü (rechte Maustaste) auf“Objekt öffnen”. Sobald sie den ersten Dialog mit “Weiter” bestätigt haben, könne Sie Ihr eigenes Profil nach IhrenWünschen editieren. Um ein eigenes Profil zu erstellen, müssen Sie auf “Neu” klicken und dem Profil einen Namengeben. In unserem Beispiel nennen wir das Profil “Wohlfuehltemperatur” (Umlaute sind hier nicht möglich).Nun füllen Sie die einzelnen Felder nacheinander aus.Ein “Präfix” wird später im WebFront vor dem gemessenen Temperaturwert angezeigt. Wir geben in unserem Fall hier“Balkon” ein, weil nur die Temperatur auf dem Balkon angezeigt werden soll. Ein “Suffix” wird später nach dem vomThermometer ermittelt Wert angezeigt. In Europa erscheint hier die Einheit Grad Celsius (°C) sinnvoll, denn in dieserEinheit messen fast alle europäischen Temperatursensoren. Bei “Min Wert” und “Max Wert” geben Sie einfach dieMinimal- bzw. Maximaltemperatur ein, die später im Webfront angezeigt werden soll. “Schrittwerte” bedürfen in diesemFall keiner Veränderung. “Stellen” bezieht sich auf die Stellen des angezeigten Wertes nach dem Komma. In unseremFall erscheint “1” sinnvoll. Bei “Standard-Icon” können Sie nun ein Icon auswählen (z.B. “Temperature”). Dies istallerdings auch später etwas präziser möglich.Nun geht es um sogennannte “Assoziationen”. Bei Assoziationen handelt es sich um eine Kombination vonverschiedenen Variablenwerten und dazugehörigen Informationen (Text, Icon, Farbe). Dafür klicken Sie auf “Editieren”.Wenn Sie danach auf “Neu” klicken, erhalten Sie eine Vielzahl von Einstellmöglichkeiten. Bei “Wert” geben Sie - inunserem Beispiel - den Temperaturwert an, ab dem, die nachfolgend einzugebenden Eingaben (Text, Icon, Farbe) imWebFront angezeigt werden. Bei “Text”, schreiben Sie einen Text, der ab des Temperaturwertes, den Sie zuvor bei“Wert” eingegeben haben, im WebFront anstelle der gemessenen Temperatur angezeigt werden soll. Wenn Sie an dieserStelle möchten, dass Ihnen weiterhin die exakte Temperatur angezeigt wird, dann geben Sie hier “%.1f” ein. “%.1f” ist einPlatzhalter, der später im WebFront nicht dargestellt wird. Damit vermeiden Sie, dass im WebFront beim Temperaturwertsechs Stellen nach dem Komma angezeigt werden. Die Zahl in diesem Platzhalter bezieht sich dabei auf dieanzuzeigenden Stellen nach dem Komma. (Wollen Sie beispielsweise, dass der Temperaturwert nach dem Komma zweistellig angezeigtwird, geben Sie “%.2f” ein. - Achten Sie ggf. aber darauf, dass bei “Stellen” im Menü zuvor ebenfalls eine “2” steht und dass IhrTemperatursensor zweistellig nach dem Komma messen kann.)Bei Integer-Variablen ist an dieser Stelle lediglich “%d” notwendig.


Bei “Icon” können Sie sich nun ein geeignetes Symbol auswählen (auch das Zufügen von eigenen Icons ist möglich), welchesspäter im WebFront ab dem zuvor eingegebenen Temperaturwert angezeigt wird.Verschiedene Icons können sich unter Umständen überlagern. So überlagert ein Standard-Icon des Variablenprofilsein Icon einer Assoziation. Ein Objekt-Icon überlagert wiederum sowohl das Icon einer Assoziation als auch dasStandard-Icon. Haben Sie also bereits ein Standard-Icon im Menü “Variable editieren” ausgewählt, so können die hiereingefügten Icons im WebFront nicht angezeigt werden, da das Standard-Icon diese überlagert und erst entferntwerden muss. Gleiches gilt für Objekt-Icons. Weitere Überlagerungsmöglichkeiten finden Sie im Artikel IconsBei “Farbe” ist es möglich eine Farbe auszuwählen, in der der zuvor eingegebene Text oder die Temperatur (inkl. PräundSuffix) im WebFront ab dem zuvor eingegebenen Temperaturwert unterlegt wird. Um die Farbe zurückzusetzen,wählen Sie in der Farbauswahl die Farbe “Automatisch”.Mit “Neu” können Sie den eben beschriebenen Vorgang beliebig oft wiederholen und so Ihr WebFront individualisieren.Von 0 bis 40 Grad könnten Sie sich so beispielsweise die exakte Temperatur im WebFront anzeigen lassen, während beieiner von Ihrem Temperatursensor darüber oder darunter gemessenen Wert ggf. im WebFront “Zu kalt” bzw. “Zu heiß”(manuelle Texteingabe) anstelle des Temperaturwertes erscheint. Drücken Sie nun auf “OK” und dann zweimal auf“Weiter”. Für Testzwecke können Sie nun Ihr WebFront öffnen und im Menü “Variable editieren” im ersten Fenster auf“Wert editieren” klicken. Den Wert, den Sie hier eingeben können, simuliert in unserem Beispiel eine bestimmteTemperatur. Geben Sie ggf. dabei ein “-” immer erst ein, nachdem Sie den Zahlenwert eingetragen haben. Sie werdenirgendwann feststellen, dass hinter Ihren Texten im WebFront immer noch “°C” steht. Das ist unschön und lässt sichvermeiden.Damit hinter besagtem Text nicht “°C” erscheint, entfernen Sie “°C” unter “Suffix” im Menü “Variablen editieren”.Wenn Sie an dieser Stelle weiterhin möchten, dass Ihnen bei der Angabe der exakten Temperatur im WebFront “°C”angezeigt wird, fügen Sie bei zutreffenden Assoziationen bei “Text” einfach “°C” an, so dass dort beispielsweise“%.1f °C” steht.Wenn Sie die Werte Ihrer Assoziationen so eingeben wie im obigen Screenshot, danach auf “OK” und dann zweimal auf“Weiter” (Falls sich ein Häkchen bei “Datenbank-Logging aktivieren” befindet, wird zusätzlich im WebFront ein Symbol zum Öffnen einesGraphen angezeigt.) klicken, wird im WebFront bei folgendenen Temperaturen nun Folgendes dargestellt:-80 bis -40,1 °C:-40 bis -0,1 °C:0 bis 14,9 °C (Bsp.: 7,2 °C):


15 bis 24,9 °C (Bsp.: 21,5 °C):25 bis 39,9 °C:40 bis 80 °C:Voilà, mit nur einem Blick wissen Sie jetzt, wann auf Ihrem Balkon ein Aufenthalt nicht zu empfehlen ist (“Zu kalt” bzw.“Zu heiß”), wann es möglich ist, Sie aber vielleicht doch lieber ins Kino oder etwas Trinken gehen sollten (“Kalt” bzw.“Heiß”) und wann Sie sich getrost auf ihm aufhalten können (Temperatur ist türkis bzw. grün unterlegt). Hier wird dannauch die exakte Temperatur angezeigt, so dass Sie sich angemessen kleiden können.


Beispiel 2Darstellung der Zensuren in der KücheStellen Sie sich vor, Sie haben einen Sohn namens Kevin. Ihr Stammhalter besucht die 9. Klasse eines Gymnasiums.Leider hat Kevin seit einigen Wochen Probleme in der Schule. Deshalb wollen Sie nun wöchentlich von ihm erfahren wiees notentechnisch in den einzelnen Fächern läuft, um bei Bedarf Maßnahmen zu ergreifen, damit das Klassenziel dochnoch erreicht werden kann.Dafür hängen Sie ein iPad an die Küchenwand. Hier soll Kevin wöchentlich jeden Freitag um 18 Uhr seinen aktuellenLeistungsstand eintragen, den er zuvor bei den einzelnen Fachlehrern erfragt hat.Sie erstellen nun - wie in Beispiel 1 beschrieben - ein Variablenprofil mit Assoziationen, damit die einzelnen Fächer unddie dazugehörigen Noten im WebFront und damit auf ihrem iPad in der Küche erscheinen können.


Das ist sicher ein echter Hingucker in Ihrer Küche. Es gibt nun jedoch ein kleines Problem. Um die Zensuren jedenFreitag einzutragen, muss Kevin zu Ihnen ins Arbeitszimmer kommen, damit Sie dies in der <strong>IP</strong>-<strong>Symcon</strong> Konsole für ihnerledigen. (Kevin interessiert sich nämlich leider nur für Mofas und das weibliche Geschlecht und kann deshalb mit <strong>IP</strong>-<strong>Symcon</strong> nichtumgehen.)Nach dem ersten Eintragen sind sie derartig von Kevins chaotischer Notizenordnung genervt, dass Sie beschließen, ihnzu enterben. Irgendwie wollen Sie Ihr Vermögen nach Ihrem Ableben aber dann doch nicht der Wohlfahrt spenden,wollen aber auch keinen Nervenzusammenbruch erleiden.Kevin soll nun selbstständig direkt im WebFront auf dem iPad in der Küche seine Noten eintragen.Dafür müssen Sie Ihr bisher passives Variablenprofil in einen aktiven Zustand versetzen. Um dies zu erreichen, erstellenSie zuerst ein sogenanntes Skript. Ein Skript (oder auch Programm genannt) ist eine Aneinanderreihung von mehr oderweniger komplexen Befehlen. Dafür wählen Sie in der Objektbaumansicht “Objekt hinzufügen” (rechte Maustaste oderoben links) und dann “Skript hinzufügen”. Nun geben Sie Ihrem Skript einen Namen und drücken zwei Mal auf “Weiter”und einmal auf “OK”.Jetzt erscheint ein Skript-Editor-Fenster.


Dieses darf keinesfalls leer bleiben, da hier ein Code eingegeben werden muss, der es ermöglicht, dass eine Anforderungdes WebFronts (in unserem Beispiel ein Druck von Kevins Finger auf eine Zensur) als neuer Ist-Zustand übernommenund dargestellt wird. Ersetzen Sie nun die Zeile “//Fügen Sie hier Ihren Skriptquellcode ein” durch“SetValue($_<strong>IP</strong>S['VARIABLE'], $_<strong>IP</strong>S['VALUE']);”. Achten Sie unbedingt darauf dass “” stehen bleiben, da hiermitAnfang und Ende des Skripts markiert werden. Sie können das Fenster jetzt schließen. Drücken Sie nicht auf“Ausführen”, da diese Funktion nur auf eine Ausführung im WebFront korrekt reagiert. Details über dieses spezielleCode-Zeile können Sie unter Systemvariablen nachlesen.Finden Sie danach einen geeigneten Platz für Ihr Skript in der Baumstruktur.Darstellung: AufzählungSie müssen nun das Skript mit Ihren Variablen verknüpfen. Eine Variable muss stets einem Skript zugeordnet werden,damit dieses erkennt, was geschaltet werden soll. Dieses Skript wird fortan Aktions-Skript genannt. Per Doppelklick aufdie ausgewählte Variable gelangen Sie in das Menü “Variable editieren”. Klicken Sie auf “Weiter”. Nun drücken Sie“Auswählen”, suchen in der Objektbaumstruktur Ihr Aktions-Skript und bestätigen mit Doppelklick. Danach klicken Siezweimal auf “Weiter” und bestätigen einmal mit “OK”.Diesen Vorgang wiederholen Sie für alle Variablen (in unserem Fall Fächer), die Kevin später bearbeiten soll.Nun kann Kevin endlich seine Noten per Fingerdruck direkt im WebFront auf dem iPad in der Küche eingeben.Die Darstellung einer Aufzählung ist im WebFront nur möglich, wenn im Variablenprofil mindestens eineAssoziation hinzugefügt worden ist.Sie sind begeistert. Ihre Gattin leider nicht. Ihr ist das WebFront in der Küche nun zu unübersichtlich und wirktirgendwie durcheinander. So viele Informationen kann man doch gar nicht verarbeiten und außerdem kann man nun garnicht mehr richtig erkennen wie Kevin denn nun eigentlich in den einzelnen Fächern steht. Ihre beste Freundin sagt dasübrigens auch.Voll Tatendrang und dem Wunsch Ihre kleine Welt ein Stück zu verbessern, stürmen Sie ins Arbeitszimmer.Darstellung: WertauswahlWie können Sie die Darstellung im WebFront nun so verändern, dass Sie übersichtlicher wird, aber auch weiterhin vonKevin bedient werden kann?Dafür wählen Sie per Doppelklick eine Variable, die in unserem Fall ein Fach darstellt, aus. Sie gelangen dadurch in dasMenü “Variable editieren”. Klicken Sie auf “Weiter”. Nun drücken Sie auf “Verändern” und bestätigen mit “Ja”. Danach


auf “Editieren”. Nun löschen Sie alle Assoziationen (Mülleimer rechts) und bestätigen mit “OK”. Bei Schrittweite gebenSie in diesem Fall eine “1” ein. Die Schrittweite bestimmt in welchem Abstand die Zahlen (in unserem Fall Zensuren) derWertauswahl im WebFront angezeigt werden. Nun klicken Sie auf “Profil speichern” und verlassen das Menü. DieÄnderung wird für alle Variablen, die dieses Variablenprofil benutzen, also hier für alle Fächer, automatisch übernommen.Im WebFront wird nun eine simple Wertauswah (1 bis 6) dargestellt, die Kevin problemlos bedienen kann.Die Darstellung einer Wertauswahl ist nur möglich, wenn keine Assoziation vorhanden ist und wenn eine Schrittweiteim Menü “Variable editieren” angegeben wurde.Sie sind begeistert. Ihre Gattin leider nicht. Irgendwie ist das doof, dass jetzt z.b. die Noten 3 und 4 untereinanderangezeigt werden, weil die Skala zu groß ist, meint sie. So kann man doch gar nicht mehr richtig erkennen wie Kevin dennnun eigentlich in den einzelnen Fächern steht. Ihre beste Freundin sagt das übrigens auch.Wütend stürmen Sie ein letztes Mal ins Arbeitszimmer, um Ihrer Gemahlin zu beweisen, dass sich die Ausgaben für IhrHaussteuerungssystem mehr als gelohnt haben.Darstellung: SliderWie können Sie die Darstellung im WebFront abermals so verändern, dass Sie übersichtlicher wird, aber auch weiterhinvon Kevin bedient werden kann?Sie entschließen sich, die Noten in Form eines Sliders im WebFront auf dem iPad in der Küche darzustellen. Das hat denVorteil, dass es unglaublich übersichtlich ist und Kevin dadurch kostenlose Nachhilfe im Fach Mathematik erhält, denn ermuss nun vor dem wöchentliche Noteneintragungen den Zensurenwert in Prozent umrechnen, wobei 0 Prozent eine 6und 100 Prozent eine 1 darstellen sollen.Dafür wählen Sie per Doppelklick eine Variable, die in unserem Fall ein Fach darstellt, aus. Sie gelangen dadurch in dasMenü “Variable editieren”. Klicken Sie auf “Weiter”. Nun drücken Sie auf “Verändern” und bestätigen mit “Ja”. Auchhier werden nach Abschluss die Änderung für alle Variablen, die dieses Variablenprofil benutzen, also in unserem Fall füralle Fächer, automatisch übernommen. Geben Sie nun bei Suffix “%” ein, denn ein Slider kann nur in Prozent darstellen.Bei “Min Wert” bzw. “Max Wert” bietet sich “0” bzw. “100” an. Bei Schrittweite bleibt “1” stehen.Im WebFront werden die Noten nun als Slider dargestellt.Die Darstellung eines Sliders ist nur möglich, wenn keine Assoziation vorhanden ist, wenn “%” bei Suffixhinzugefügt wurde, wenn “Min Wert” und “Max Wert” definiert, aber nicht gleich sind, und wenn eine Schrittweiteim Menü “Variable editieren” angegeben wurde.Sie sind begeistert. Ihre Gattin auch. Kevin leider nicht. Sie haben seine Mathematikkenntnisse maßlos überschätzt. Erschafft es einfach nicht, seine Noten wöchentlich im WebFront auf dem iPad in der Küche einzutragen, weil er sie nichtin Prozent umrechnen kann. Seine Klassenkameraden können das angeblich auch nicht.Ihnen reicht es nun endgültig. Sie vereinbaren einen Termin mit Kevins Klassenlehrer.


Links verwendenStellen Sie sich vor, Sie sind stolzer Besitzer eines riesigen Eigenheimes, welches Sie mit einem komfortablenHaussteurungssystem ausgestattet haben. An dieses sind u.a. etliche Rauchmelder angeschlossen.Zur Sicherheit Ihrer Familie wollen Sie nun alle drei Monate, Ihre Rauchmelder kontrollieren. Nach der erste Kontrollesind Sie völlig genervt. Sie hatten sich bei Ihrer persönlichen WebFront Konfiguration an die sinnvolle Empfehlunggehalten, den Aufbau nach Etage / Zimmer / Gerät zu gestalten. Nun müssen Sie sich aber durch jedes Zimmer einzelnklicken, um jeden Rauchmelder kontrollieren zu können. Das erscheint Ihnen zu aufwendig.Sie erstellen jetzt neben den Stockwerken eine Kategorie namens “Rauchmelder” und ziehen alle Rauchmelder per “Dragand Drop” in diesen Ordner.Dadurch, dass Sie alle Rauchmelder in <strong>IP</strong>-<strong>Symcon</strong> einer neuen Kategorie zugeordnet haben, sind diese im WebFront nunnicht mehr in den einzelnen Räumen sichtbar, da Sie den einzelnen Räumen zugeordnet sind, in denen sie installiert sind.In mühevoller Kleinarbeit ordnen Sie nun wieder die Rauchmelder in <strong>IP</strong>-<strong>Symcon</strong> den einzelnen Räumen zu. IhreUnzufriedenheit bleibt aber leider bestehen, denn Sie wollen einerseits die Rauchmelder im WebFront in den einzelnenRäumen wiederfinden, andererseits aber auch alle Rauchmelder auf einen Blick auf einer Übersichtsseite sehen können.<strong>IP</strong>-<strong>Symcon</strong> bietet Ihnen die Möglichkeit, Verknüpfungen zu einzelnen Objekten zu erstellen. Um diese Verknüpfungen zuerstellen, müssen Sie mit der rechten Maustaste im Objektbaum auf ein ausgewähltes Objekt - in unserem Fall also aufeinen Rauchmelder - klicken.Sobald Sie auf “Objekt verlinken” klicken öffnet sich ein neues Fenster, in dem Sie per Doppelklick die Positionauswählen können, an der die Verknüpfung erstellt wird. In unserem Beispiel ist das der von Ihnen zuvor erstellte Ordner“Rauchmelder”. Dies wiederholen Sie mit all Ihren Rauchmelder und schon können Sie Ihre Rauchmelder problemlos imWebFront kontrollieren, ohne ständig hin und her zu klicken. Sie finden diese aber auch weiterhin ohne Schwierigkeitenwieder. Obendrein können Verknüpfungen per Rechtsklick auf “Objekt bearbeiten” einen eigenen Namen und eineigenes Icon erhalten.Darüber hinaus hält die <strong>IP</strong>-<strong>Symcon</strong> Professional-Version ein besonderes Extra für Sie bereit. Mit der Professional-Version ist es möglich, Kategorien (in unserem Fall also alle Rauchmelder) mit nur einem Klick auf einen IhrerReiterpunkte in der oberen Menüleiste im WebFront zu öffnen, so dass eine Extra-Kategorie zwischen den Etagen- oder


Zimmer-Kategorien im WebFront nicht mehr stört. Um das zu erreichen, klicken Sie in der <strong>IP</strong>-<strong>Symcon</strong>Verwaltungskonsole unter „WebFront“ auf „WebFront konfigurieren“ und dann auf „WebFront Configurator“. Nunklicken Sie auf „Hinzufügen“ (unten rechts), wählen „Kategorie“ und bei „Übergeordnet“ „roottp“ (Name für die obereMenüleiste (Tab Pane)) aus. Danach bestätigen Sie alles mit “OK” und klicken auf “Übernehmen”.Klicken Sie nun auf das Symbol rechts neben “Startkategorie” und wählen Sie per Doppelklick - in unserem Fall - dieKategorie Rauchmelder aus. Klicken Sie dann auf “OK” und danach auf “Übernehmen” und schon können Sie mit nureinem Klick im WebFront alle Ihre Rauchmelder sehen. Unter Umständen müssen Sie dazu Ihre WebFront neu laden.Die Kategorie “Rauchmelder” können Sie auch verstecken, damit diese im WebFront nur noch in der oberen Menüleistesichtbar ist. Dafür klicken Sie im Objektbaum mit der rechten Maustaste auf die Kategorie, dann auf “Objekt bearbeiten”,dann oben auf “Optionen”, danach setzen Sie ein Häkchen bei “Versteckt” an und bestätigen mit “OK”.


Zweites WebFront erstellenStellen Sie sich vor, Ihrer Frau ist Ihr geliebtes, auf Ihre persönlichen Bedürfnisse zugeschnittenes WebFront zuunübersichtlich und Sie möchte mit Ihrem Tablet PC nur bestimmte Funktionen Ihrer Haussteuerung nutzen.Dafür klicken Sie in <strong>IP</strong>-<strong>Symcon</strong> unter “WebFront” auf “WebFront konfigurieren”. Dann klicken Sie auf “Neu” undscrollen nach unten, wo individuelle Einstellungen vorgenommen werden können (Passwort, Icon, …). Bei “Login-Bildschirm” sollten Sie dringend einen Titel eintragen (z.B. den Namen Ihrer Frau), denn dieser wird später auch in derWebFront-Auswahl angezeigt. Jetzt klicken Sie auf das kleine “+” in der Tabelle und doppelklicken Sie danach“Kategorie”. Nun klicken Sie auf das Symbol rechts neben “Startkategorie” und wählen per Doppelklick die Kategorieaus, die im WebFront für Ihre Frau angezeigt werden sollen und bestätigen alles mit “OK”. Die ausgewählte Kategoriesollte zuvor per Link-Funktion mit allen Objekten bestückt worden sein, die später Ihrer Frau im Web-Front angezeigtwerden sollen.Im Objektbaum lassen sich außerdem die beiden WebFront Konfiguratoren per rechte Maustaste und Klick auf “Objektumbenennen” bequem umbenennen. Der Übersicht halber empfehlen wir Ihnen, den Anhang “Configurator”weiterzuführen.Wenn Sie jetzt das WebFront öffnen, stehen Ihnen nun zwei WebFronts zur Auswahl.


Wie kann ich...?Viele dieser Skripte verwenden spezielle <strong>IP</strong>-<strong>Symcon</strong> Funktionen.Bitte nutzen Sie die Befehlsreferenz/Modulreferenz, wenn Sie die genaue Funktionsweise verstehen wollen.... ein Gerät einschalten und nach z.B. 60 Sekunden wieder aussschalten?if($_<strong>IP</strong>S['SENDER'] == "TimerEvent"){//Aus Befehl...//Timer ausschalten<strong>IP</strong>S_SetScriptTimer($_<strong>IP</strong>S['SELF'], 0);} else {//An Befehl...}//Timer anschalten<strong>IP</strong>S_SetScriptTimer($_<strong>IP</strong>S['SELF'], 60);... eine Liste der Modulnamen samt GUID bekommen?foreach(<strong>IP</strong>S_GetModuleList() as $mid){$m = <strong>IP</strong>S_GetModule($mid);echo $mid."=".$m['ModuleName']."\n";}... eine Instanz aus PHP konfigurieren?//Eigenschaft verändernWWWReader_SetPage($id,"http://www.google.de");//Änderung abspeichern<strong>IP</strong>S_ApplyChanges($id);//Neue URL abrufenWWWReader_UpdatePage($id);... die Anzahl der Sekunden herausfinden, die ein ScriptTimer noch abwartet?echo GetTimeRemaining($_<strong>IP</strong>S['SELF']); //Von sich selbst herausfindenfunction GetTimeRemaining($id){$eid=@<strong>IP</strong>S_GetEventIDByName("ScriptTimer", $id);if($eid === false) {return -1;} else {$e=<strong>IP</strong>S_GetEvent($eid);if($e['NextRun'] == 0){return -1;


}}} else {}return $e['NextRun'] - microtime(true);... ein Skript per ID direkt includen?//Skript mit ID 14871 einbindeninclude(<strong>IP</strong>S_GetScriptFile(14871));... UpdateTime in einer eigenen String Variable ausgeben (1 Skript - n Variablen)?//Event auswertenif($_<strong>IP</strong>S['SENDER'] != "Variable")return;SetValue(CreateVariableIDByName($_<strong>IP</strong>S['VARIABLE'], 'Updated', 3), date("d.m.y H:i:s"));function CreateVariableIDByName($id, $name, $type){$vid = @<strong>IP</strong>S_GetVariableIDByName($name, $id);if($vid===false) {$vid = <strong>IP</strong>S_CreateVariable($type);<strong>IP</strong>S_SetParent($vid, $id);<strong>IP</strong>S_SetName($vid, $name);<strong>IP</strong>S_SetInfo($vid, "This Variable was created by Script #".$_<strong>IP</strong>S['SELF']);}return $vid;}... aus PHP einen Timer & Variable anlegen?Wenn das Skript ausgeführt wird, legt es einen Timer an der alle sechs Stunden startet und dann eine Variable mit derjeweiligen Tageszeit als Wert zwischen 0-3 in die Variable ablegt.//HINWEIS://~~~~~~~~//Dieses Script richtet sicht automatisch ein, wenn es ausgeführt wird////- Es wird abhängig von der Tageszeit eine Variable gesetzt (0-3)// 0 = 0-6// 1 = 6-12// 2 = 12-18// 3 = 19-24//-----------------------------------------------------------------------------//Ab diesem Punkt muss nichts verändert werden//-----------------------------------------------------------------------------if($_<strong>IP</strong>S['SENDER'] == "Execute"){$eventid = @<strong>IP</strong>S_GetEventIDByName("Timer", $_<strong>IP</strong>S['SELF']);if($eventid === false){$eventid = <strong>IP</strong>S_CreateEvent(1); //Cyclic<strong>IP</strong>S_SetEventActive($eventid, true);


<strong>IP</strong>S_SetName($eventid, "Timer");<strong>IP</strong>S_SetEventScript($eventid, $_<strong>IP</strong>S['SELF']);<strong>IP</strong>S_SetEventCyclic($eventid, 0, 0, 0, 0, 3, 6);}$variableid = @<strong>IP</strong>S_GetVariableIDByName("Daytime", $_<strong>IP</strong>S['SELF']);if($variableid === false){$variableid = <strong>IP</strong>S_CreateVariable(1);<strong>IP</strong>S_SetName($variableid, "Daytime");<strong>IP</strong>S_SetParent($variableid, $_<strong>IP</strong>S['SELF']);}}SetValue(<strong>IP</strong>S_GetVariableIDByName("Daytime", $_<strong>IP</strong>S['SELF']), floor(date("H") / 6));... eine Datei aus dem Internet herunterladen?$remoteImage = "https://www.google.com/images/srpr/logo3w.png";$localImage = <strong>IP</strong>S_GetKernelDir()."\\media\\bild.jpg";//<strong>Download</strong>en$content = @file_get_contents($remoteImage);if((strpos($http_response_header[0], "200") === false)){return;}//Speichernfile_put_contents( $localImage, $content );... einen Ordner rekrusiv in die MediaPlayer Playlist laden?function WAC_PlayDir($id, $dir){function ReadRecursive($dir, $subdir = "") {$result = Array();$files = scandir($dir."/".$subdir);foreach($files as $file){if(($file != ".") && ($file != "..")) {if(is_dir($dir."/".$subdir."/".$file)) {$res = ReadRecursive($dir, $subdir."/".$file);$result = array_merge($res, $result);} else {$filedir = $subdir."/".$file;$filedir = substr($filedir, 1, strlen($filedir));$result[] = $filedir;}}}return $result;}$allowed = Array("mp3", "wma");$files = ReadRecursive($dir);//Den Zufallsgenerator von PHP verwenden//shuffle($files);


}WAC_ClearPlaylist($id);foreach($files as $file){$ext = pathinfo($dir."/".$file, PATHINFO_EXTENSION);if(in_array(strtolower($ext), $allowed)){WAC_AddFile($id, $dir."/".$file);}}WAC_Play($id);... ein Variablenprofil exportieren?getVariableProfileCreationCode("~Temperature.FHT");getVariableProfileCreationCode("~Temperature.FHT", "TemperatureTest");// erster Funktionsparameter: Profilname, zweiter Parameter (optional): neuer Profilnamefunction getVariableProfileCreationCode ($profileName, $newProfileName = ""){$profile = <strong>IP</strong>S_GetVariableProfile($profileName);if ($profile !== false){$profileName = (strlen($newProfileName) > 0) ? $newProfileName : $profileName;echo '<strong>IP</strong>S_CreateVariableProfile("'.$profileName.'", '.$profile['ProfileType'].');'."\n";echo '<strong>IP</strong>S_SetVariableProfileText("'.$profileName.'", "'.$profile['Prefix'].'", "'.$profile['Suffix'echo '<strong>IP</strong>S_SetVariableProfileValues("'.$profileName.'", '.$profile['MinValue'].', '.$profile['MaxValuecho '<strong>IP</strong>S_SetVariableProfileDigits("'.$profileName.'", '.$profile['Digits'].');'."\n";echo '<strong>IP</strong>S_SetVariableProfileIcon("'.$profileName.'", "'.$profile['Icon'].'");'."\n";foreach ($profile['Associations'] as $association){echo '<strong>IP</strong>S_SetVariableProfileAssociation("'.$profileName.'", '.$association['Value'].', "'.$assoc}echo "\n";}}


TastenkombinationenBezeichnung der Sondertasten auf verschiedensprachigen Tastaturen:DeutschUmschaltStrgShortcutF1Strg + OStrg + TStrg+ SpaceEnglischShiftCtrlBeschreibungHilfe aufrufenObjekt auswählenEreignisse anzeigenFunktionsliste anzeigen


WebFront KonfiguratorEine generelle Anleitung finden Sie im Bereich Komponenten -> WebFront.Ab <strong>IP</strong>-<strong>Symcon</strong> Version 2.2 ist es möglich, das WebFront von <strong>IP</strong>-<strong>Symcon</strong> aus zu steuern und Meldungen an dasWebFront zu senden. Dem Benutzer stehen dabei vier Funktionen zur Verfügung, um das WebFront zu beeinflussen.FunktionWebFront neuladenWebFront ReiterauswählenNotificationsendenPush-NotificationsendenPopup öffnenBeschreibungLädt das WebFront komplett neu (gleicht einem Neuladen der Seite im Browser (F5)).Wählt den Reiter mit der angegebenen ID aus. Diese Funktion ist nützlich, um z.B. bei einer Bewegung an derHaustür zum Tür-Kamera-Reiter zu springen.Kleine Benachrichtigungen können gesendet werden, die mit einem Icon, Kopfzeile und Text an der rechten Seiteim WebFront angezeigt werden. (Ähnlich Growl/Snarl)Push-Benachrichtigungen können an die Mobilen Apps (iOS/Android) gesendet werden, die direkt auf demMobilgerät angezeigt und akustisch signalisiert werden.Um größere Meldungen anzeigen zu können, kann ein Popup geöffnet werden, welches fast den vollständigenBildschirm ausfüllt und wichtige Meldungen darstellt, die nicht in eine kleine Notification passen.


WFC_ReloadBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2boolean WFC_Reload ( integer $InstanzID )ParameterlisteInstanzIDID des WebFront KonfiguratorsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungLädt das WebFront, das dem Konfigurator mit der ID InstanzID zugeordnet ist neu.BeispielWFC_Reload(12345);


WFC_SwitchPageBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2boolean WFC_SwitchPage ( integer $InstanzID , string $PageName )ParameterlisteInstanzIDPageNameID des WebFront KonfiguratorsName des Reiters (z.B. item1234)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungWechselt im WebFront, das dem Konfigurator mit der ID InstanzID zugeordnet ist, auf den Reiter mit der IDPageName.BeispielWFC_SwitchPage(12345, "item1234");


WFC_SendNotificationBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2boolean WFC_SendNotification ( integer $InstanzID , string $Titel , string $Text , string $Icon , integer $Timeout )ParameterlisteInstanzIDTitelTextIconTimeoutID des WebFront KonfiguratorsTitel der MeldungText der Meldung. Kann auch leer sein.Wenn nicht leer, dann wird das Icon angezeigt. Siehe IconsAnzuzeigende Zeit in Sekunden. 0 = Nur ausblenden, wenn der Nutzer auf die Meldung klickt.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet eine kleine Nachricht mit Titel, Text und Icon an das WebFront, das dem Konfigurator mit der ID InstanzIDzugeordnet ist. Die Nachricht erscheint als kleiner Kasten in der oberen rechten Ecke des WebFronts und wird fürTimeout Sekunden angezeigt.BeispielWFC_SendNotification(12345, 'Test', 'Dies ist ein toller Test', 'Speaker', 4);


WFC_PushNotificationBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.7boolean WFC_PushNotification ( integer $InstanzID , string $Titel , string $Text , string $Icon , integer $TargetID )ParameterlisteInstanzIDTitelTextIconTargetIDID des WebFront KonfiguratorsTitel der Meldung. Kann auch leer sein.Text der Meldung.Wird von den Apps noch nicht ausgewertetWird von den Apps noch nicht ausgewertetRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet eine Push-Nachricht mit Titel, Text an alle mobilen iFront/Mobile Geräte, die dem Konfigurator mit der IDInstanzID zugeordnet sind.Bitte beachten Sie, dass Push-Benachrichtigungen verschlüsselt über den <strong>IP</strong>-<strong>Symcon</strong> Server an Apple/Googleweitergeleitet werden, und dies eine gewisse Verzögerungszeit impliziert. Bei zu vielen Nachrichten hintereinanderverzögern die Dienste von Apple/Google die Zustellungen automatisch, worauf <strong>IP</strong>-<strong>Symcon</strong> keinerlei Einflussnehmen kann.Die Nutzung dieser Funktion erfordert, wie schon in der Beschreibung der Mobile-Apps beschrieben, eine gültigeSubskription. Diese können Sie jederzeit über unseren Shop verlängern.BeispielWFC_PushNotification(12345, 'Warnung', 'Es regnet bald!', '', 0);


WFC_AudioNotificationBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 3.0boolean WFC_AudioNotification ( integer $InstanzID , string $Titel , integer $MediaID )ParameterlisteInstanzIDTitelMediaIDID des WebFront KonfiguratorsTitel der Audio-MeldungID des Media-Objekts, welches vom Typ "Ton" istRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet eine Audio-Nachricht mit Titel an das WebFront, das dem Konfigurator mit der ID InstanzID zugeordnet ist.Die Audio-Nachricht erscheint als kleiner Kasten in der oberen rechten Ecke des WebFronts und wird für dieAbspieldauer angezeigt.BeispielWFC_AudioNotification(12345, 'Gong!', 55541); //55541 ist die ID des Media Objekts in <strong>IP</strong>-<strong>Symcon</strong>


WFC_SendPopupBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2boolean WFC_SendPopup ( integer $InstanzID , string $Titel , string $Text )ParameterlisteInstanzIDTitelTextID des WebFront KonfiguratorsAngezeigter TitelAngezeigter Text (HTML wird gefiltert!)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet eine große Meldung an das WebFront, das dem Konfigurator mit der ID InstanzID zugeordnet ist. Es werdender Inhalt Text und der Titel angezeigt.BeispielWFC_SendPopup(12345, "Test", "Eine nette Meldung");


FHZ1X00PCDie FHZ1X00PC (WLAN) ist eine von Contronics entwickelte und von ELV vertriebene Schnittstelle, die es demEndanwender ermöglicht, mit FS20, HMS und FHT Komponenten über den PC zu kommunizieren. Ab der FHZ1300PCwird außerdem der Kombi-Wettersensor KS300 unterstützt. Die nur über Contronics erhältliche FHZ1350PC bietetaußerdem die Möglichkeit, auf das Telefonwählgerät der ELV zuzugreifen. Diese Funktion wird von <strong>IP</strong>-<strong>Symcon</strong> nichtunterstützt.Das FS20 System ermöglicht einen günstigen Einstieg in die Haustechnik und Automatisation. Teile davon werden auchunter anderen Label (z.B. Conrad) vertrieben – sind aber zu 100 Prozent kompatibel.Liste der unterstützten GeräteFS20 Sender und EmpfängerAlle FS20 Sender und EmpfängerHMS Sensoren und AktorenAlle HMS-Alaram Sensoren und AktorenFHT KomponentenFHT80B/FHT80B2 (FHT8 ist nicht kompatibel!)InstallationNachdem Sie das Gerät an den PC angeschlosse haben, müssen Sie die Treiber installieren. Diesen können siegegenbenfalls im Servicebereich des Herstellers ELV herunterladen.Tipps & TricksDie FHZ ist mit allen gängigen USB->LAN Umwandlern kompatibel. (z.B. von Silex, Lantronix)Information zum Umbau auf LAN oder zur Reichweitenerhöhung finden Sie im ForumDie FHZ1300PC WLAN wird in <strong>IP</strong>-<strong>Symcon</strong> nicht offiziell unterstützt. Um sie trotzdem in <strong>IP</strong>-<strong>Symcon</strong> verwenden zukönnen, muss der dort verwendete Verschlüsselungsalgorithmus deaktiviert werden.Die nötigen Schritte können Sie hier nachlesen:http://www.thinkwiki.org/wiki/User:Akw/FHZProblemlösungIn der Konfiguration steht: “Eine übergeordnete Konfiguration scheint fehlerhaft zu sein"Klicken Sie auf die Meldungen und aktivieren Sie den entsprechenden Treiber.Es werden keine Daten empfangen/gesendetÜberprüfen Sie, dass die FHZ an Ihrem System angeschlossen ist. (Hardware Manager)Überprüfen Sie, ob bei Senden/Empfangen die Rote LED an der FHZ blinkt.Falls nicht, hat die FHZ keinen Strom oder wurde noch nicht im System eingerichtet. Überprüfen Sie ob der FTDITreiber richtig aktiviert wurde. (s.o.)Geräte werden nur sporadisch geschaltet (FS20)Ist das Gerät zu weit entfernt?Versuchen Sie die FHZ woanders zu platzieren oder erweitern Sie Ihr System um eine weitere FHZ.Gibt es Störsender in der Nähe?


FS20Beim Erstellen der Instanz haben Sie für das FS20 System drei Möglichkeiten zur Auswahl:InstanznameFS20 EmpfängerFS20 SenderFS20 FernbedienungVerwendungszweckSteckdosen, Dimmer, Markisensteuerung, …Bewegungsmelder, …Mehrkanalfernbedienungen, -taster, -senderFalls Sie Ihr Gerät noch nicht eingerichtet haben, folgen Sie bitte den Schritten auf dieser Seite: Geräte einbindenFS20 Empfänger / Sender konfigurieren1. Sie können den Hauscode per Hand eingeben und übernehmen. Mögliche Zeichen: 1-42. Sie können den Hauscode von einem anderen Sender empfangen (z.B. von einer Fernbedienung).3. Sie können überprüfen, ob die angegebene Adresse bereits von einer anderen Instanz verwendet wird.4. Wenn aktiviert, empfängt die Instanz Daten von FS20 Sendern und aktualisiert entsprechend die Statusvariable.5. Wenn aktiviert, empfängt die Instanz Daten von FS20 Sendern, wertet die Timerdaten aus und emuliert den Zustanddes Timers (z.B. AN für 30Sek).6. Nachdem die neuen Einstellungen übernommen wurden, können Sie diese testen, indem Sie An/Aus-Telegrammeverschicken. Der Wert im Feld Dauer wird beim Übermitteln auf die nächste mögliche Zeit gerundet, die das FS20System auswerten kann.7. Nachdem die neuen Einstellungen übernommen wurden, können Sie einen FS20 Empfänger (z.B. Schaltsteckdose)anlernen. Dazu müssen Sie diese in den “Anlernmodus” versetzen und innerhalb der nächsten 15 Sekunden durchdrücken des Anlerne-Buttons programmieren.FS20 Fernbedienung konfigurieren


1. Sie müssen den Hauscode per Hand eingeben, bevor Sie die Konfiguration fortsetzen können. Mögliche Zeichen: 1-42. Die Liste zeigt bereits angelernte Tastern der Fernbedienung.3. Wenn Sie die Adresse kennen, können Sie diese auch manuell eingeben. Mögliche Zeichen: 1-44. Wenn Sie die Adresse nicht kennen, können Sie diese von Ihrere Fernbedienung empfangen. Beachten Sie bitte, dassSie den Hauscode eingegeben haben müssen und dass dieser via “Übernehmen” gespeichert sein muss.Verfügbare StatusvariablenVariableFunktionStatus VariableZeigt den Status des Geräts anIntensity Variable Zeigt den Dimwert des Geräts in % an. Beachten Sie, dass intern die Werte 0-16 verwendet werden, falls Sie dieVariable in Ihren Skripten einlesen.Timer VariableData VariableDie Zeit in Sekunden, die der Timer läuft. Pkt. 5 muss in der Konfiguration aktiviert sein, damit diese Variable von<strong>IP</strong>-<strong>Symcon</strong> auch ausgewertet wird. (Es wird die empfangene Gesamtzeit angezeigt – nicht die Restlaufzeit.)Zeigt den intern empfangenen Statuscode an.Verfügbare Statuscodes:0-16 => 0% – 100%17 => an, alter Wert (entspricht Wert 11 bei PIRI)18 => swap19 => dim up (Einfache Kanalzahl)20 => dim down (Einfache Kanalzahl)21 => dim up/down (Doppelte Kanalzahl)24 => PIRI; aus für die Einschaltdauer, danach an25 => PIRI; an, 100% für die Einschaltdauer, danach aus26 => PIRI; an, alter Wert für die Einschaltdauer, danach aus30 => PIRI; an, 100% für die Einschaltdauer, danach alter Zustand31 => PIRI; an, danach alter Zustand für die Einschaltdauer


FS20_SwitchModeboolean FS20_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert Status.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.BeispielFS20_SwitchMode(12345, true); //Gerät einschalten


FS20_SwitchDurationboolean FS20_SwitchDuration ( integer $InstanzID , boolean $Status , integer $Dauer )ParameterlisteInstanzIDStatusDauerID des zu schaltenden GerätsTRUE für An, FALSE für AusEin-/Ausschaltdauer in SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert Status für Dauer Sekunden.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.BeispielFS20_SwitchDuration(12345, true, 60); //Gerät für 60 sek einschalten


FS20_SetIntensityboolean FS20_SetIntensity ( integer $InstanzID , integer $Intensität , integer $Dauer )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität 0-16 (0=0%, 16=100%)DauerDauer des DimmvorgangsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert Intensität in Dauer Sekunden.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.BeispielFS20_SetIntensity(12345, 16, 5); //Gerät auf 100% in 5 sekunden dimmen


FS20_DimUpboolean FS20_DimUp ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID eine Stufe höher.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.BeispielFS20_DimUp(12345); //Gerät hochdimmen


FS20_DimDownboolean FS20_DimDown ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID eine Stufe runter.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.BeispielFS20_DimDown(12345); //Gerät runterdimmen


HMSInstallationFalls Sie Ihr Gerät noch nicht eingerichtet haben, folgen Sie bitte den Schritten auf dieser Seite: Geräte einbinden


HMS_ReleaseFIboolean HMS_ReleaseFI ( integer $InstanzID , integer $Auslöseverzögerung )ParameterlisteInstanzIDAuslöseverzögerungID des zu schaltenden GerätsVerzögerung in SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungLöst den FI Trenner über das HMS Gerät mit der ID InstanzID aus. Der Auslöseverzögerung Parameter wird inSekunden angegeben.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.Wenn der FI Trenner keinen FI auslösen kann, wird seine Status Variable auf FALSE gesetzt.BeispielFS20_ReleaseFI(12345, 0); //FI sofort auslösen


FHTDas Funk-Heizungssystem FHT ist hervorragend geeignet, um durch intelligente Regelung der Heizungsventile Energiezu sparen und flexibel zu verschiedenen Zeiten ein angenehmes Raumklima zu schaffen.Nur FHT8b/FHT80b können mit der FHZ1000PC Professional, FHZ1300PC oder FHZ1300PC WLAN verbundenwerden. Die wesentlich günstigeren FHT8R sind nur für den Einzel-Betrieb geeignet und können nicht mit der FHZverbunden werden.Wochen- und Tagesprogramme können/ werden von <strong>IP</strong>-<strong>Symcon</strong> nicht an den FHT übertragen werden. DiesesFeature wurde schon des Öfteren gewünscht, wird es aber definitiv nicht geben.Link: Feature-RequestKonfigurationFHT an FHZ anmelden:Halten Sie die Taste “PROG” gedrückt bis “Sond” im Display erscheint.Drehen Sie das Stellrad bis “Code” erscheint und drücken Sie die Taste “Funktion".Nun haben Sie die Möglichkeit, einen Code aus einem Zahlenpaar (00-99) auszuwählen.Bestätigen Sie jeweils durch Drücken der “PROG” Taste.Drücken Sie die “PROG” Taste erneut.FHT in <strong>IP</strong>-<strong>Symcon</strong> einrichten:FHT Instanz erstellen. Siehe Geräte einbindenDen o.g. Code in der Eigenschaft-Seite angeben und mit “Übernehmen” bestätigen.Falls der Raumregler eventuell schon an einer Zentrale angemeldet war, muss diese Anmeldung gelöschtwerden.“PROG” gedrückt halten bis “Sond” im Display erscheint.Drehen Sie das Stellrad, bis “Cent” erscheint und drücken Sie “PROG”.Drehen Die das Stellrad, bis “nA ” erscheint und drücken Sie “PROG”.Warten Sie zur Sicherheit ca. 15 Minuten bis der Abmeldevorgang abgeschlossen wurde.Führen Sie den oben beschriebenen Anmeldevorgang durch.StatusDurch die Option “Emuliere Status” wird der Wert der Soll-Variable sofort nach Absenden des Befehls aktualisiert,ohne das eigentliche Feedback vom FHT abzuwarten.Nach dem Anmeldevorgang muss mindestens ein Befehl (z.B. Soll-Temperatur setzen) an den FHTgesendet werden, um die Kommunikation zu starten.Verfügbare StatusvariablenLowBatteryWindow OpenBeschreibungZeigt an, ob der FHT eine Batteriewarnung anzeigt. Falls der Wert TRUE wird, sollten Sie einen Batteriewechselvornehmen und im Anschluß den Wert manuell auf FALSE zurücksetzen.Zeigt an, ob der am FHT angeschlossene Fensterkontakt ein geöffnetes Fenster meldet. TRUE = Fenster offen,FALSE = Fenster geschlossenPosition Wert der Stellventils von 0%-100%TemperatureTarget ModeBeim AuslesenTarget Mode(Pending)TargetTemperatureTargetTemperatureDie vom FHT empfangene Ist-TemperaturDer vom FHT emfangene ModusDer Integer Variable werden folgende Werte verwendet: 0: Automatik; 1: Manuell; 2: Urlaub; 3: PartyDer an den FHT gesendete Modus. Sobald der Funkbefehl abgesetzt werden konnte, sind “Target Mode” und“Target Mode (Pending)” identisch.Die vom FHT emfangene Soll-TemperaturDie an den FHT gesendete Soll-Temperatur. Sobald der Funkbefehl abgesetzt werden konnte, sind “TargetTemperature” und “Target Temperature (Pending)” identisch.


(Pending)


FHT_SetTemperatureboolean FHT_SetTemperature ( integer $InstanzID , float $Temperatur )ParameterlisteInstanzIDTemperaturID des zu schaltenden GerätsTemperaturwert in 0,5°C SchrittenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die neue Soll-Temperatur für den FHT mit der ID InstanzID auf Wert Temperatur.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.Die FHT Befehle werden von der FHZ zwischengepuffert und nur alle paar Minuten an den FHT gesendet. Bittebeachten Sie, dass der Sendepuffer beschränkt ist und mehrmaliges Senden von Werten die Übertragungszeit erhöhtund ggf. den FHT überlastet.BeispielFHT_SetTemperature(12345, 22.5); //Auf 22.5°C stellen


FHT_SetModeboolean FHT_SetMode ( integer $InstanzID , float $Modus )ParameterlisteInstanzIDModusID des zu schaltenden Geräts0 = Automatisch, 1 = ManuellRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den neuen Soll-Modus für den FHT mit der ID InstanzID auf Wert Modus.Da das FS20 System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war. Fehlermeldungenwerden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B., wenn die FHZ nicht angeschlossen ist.Die FHT Befehle werden von der FHZ zwischengepuffert und nur alle paar Minuten an den FHT gesendet. Bittebeachten Sie, dass der Sendepuffer beschränkt ist und mehrmaliges Senden von Werten die Übertragungszeit erhöhtund ggf. den FHT überlastet.BeispielFHT_SetMode(12345, 1); //Auf manuellen Modus wechseln


KS300InstallationFalls Sie Ihr Gerät noch nicht eingerichtet haben, folgen Sie bitte den Schritten auf dieser Seite: Geräte einbindenTipps & TricksEs ist bekannt, dass die FHZ1300PC vom KS300 nur unregelmäßig empfängt.Eine Diskussion dazu kann im Forum verfolgt werden. Link


Eaton xComfortDiese Anleitung soll Ihnen helfen, die Eaton (ehemals Moeller) xComfort Kommunikations-Schnittstelle (CKOZ-00/03) - zur Anbindung an <strong>IP</strong>-<strong>Symcon</strong> - und die Eaton xComfort Programmier-Schnittstelle (CRSZ-00/01) - zurProgrammierung des Systems im Eaton Komfort-Modus - möglichst schnell und unkompliziert mit dem Computer zuverbinden, um die Voraussetzung zu schaffen, <strong>IP</strong>-<strong>Symcon</strong> zur Steuerung verschiedenster Geräte, benutzen zu können.Alternativ ist auch der Anschluss eines Eaton USB-Gateways oder eines LAN-Gateways zur Anbindung an <strong>IP</strong>-<strong>Symcon</strong>möglich. Durch das Eaton xComfort Funksystem lässt sich die Überwachung von Fenstern, Klima- undBeleuchtungsanlagen sowie viele andere Gebäudefunktionen automatisiert steuern. Das System lässt sich nachträglichinstallieren, ohne dass neue Leitungen verlegt werden müssen. Es handelt sich dabei um ein bidirektionales System, d.h.alle Sensoren und Aktoren (Schalter) können untereinander kommunizieren, da sie je eine Sende- und eineEmpfangseinheit enthalten.Liste der unterstützten Geräte:Funk-SchaltaktorFunk-DimmaktorFunk-BinäreingangFunk-RaumcontrollerFunk-Raumcontroller mit Eco SwitchFunk-Raumcontroller mit FeuchtigkeitFunk-JalousieaktorFunk-TasterFunk-FernbedienungFunk-Fernbedienung 2-KanalFunk-Fernbedienung 12-Kanal (neues Design)Funk-BewegungsmelderFunk-Jalousieaktor mit SicherheitsabfrageFunk-ThermometerFunk-AnalogaktorFunk-AnalogeingangFunk-EnergiemesssensorFunk-Impulseingang (S0)Funk-StellventilRoom-ManagerRauchmelder (via Funk-Binäreingang)Luftgütesensor (via Funk-Binäreingang)Liste der unterstützten Schnittstellen:Eaton ECI LAN Interface CCIA-02/01Eaton ECI LAN Interface Power over Ethernet CCIA-03/01Eaton ECI WLAN Interface CCIA-01/01PC-Manager CKOZ-00/03XComfort USB-Gateway Funk CKOZ-00/14Hersteller: http://www.moeller.net/de/xcomfort/funk/index.jspVideo-Tutorial zur Einrichtung


Laden …Schritt 1: AufbauNehmen Sie Ihre Geräte aus der Verpackung und legen Sie diese an einen Ort, der für Ihre Verwendungszwecke geeignetist. Achten Sie bei der Aufstellung darauf, dass sich die Geräte einerseits in der Nähe des PCs , denn an diesen müssen Sieper Kabel angeschlossen werden, andererseits aber nicht zu weit entfernt von den für Sie relevanten Aktoren befinden, dadiese per Funk erreicht werden müssen.Schritt 2: AnschlussUm das Eaton Xcomfort System mit <strong>IP</strong>-<strong>Symcon</strong> verbinden zu können, wird ein entsprechendes Gateway benötigt. Inunserem Beispiel ist dies die Kommunikations-Schnittstelle CKOZ-00/03. Die Programmier-Schnittstelle CRZ-00/01 fürden Comfort-Modus ist nicht dazu geeignet, wird aber ebenfalls benötigt, da Sie zur Programmierung des Systems imKomfort-Modus von Eaton gebraucht wird.Bei Benutzung des RS232-Anschlusses ist zu beachten, dass zusätzlich Strom über den USB-Port zugeführt werdenmuss. Dies ist über einen passenden Adapter (230V->USB) möglich.Die Programmier-Schnittstelle CRZ-00/01 kann ebenfalls über die USB-Schnittstelle (optionales Kabel: RS232->USB)oder über den RS232-Anschluss angeschlossen werden. Schließen Sie außerdem den Netzstecker an und verbinden siediesen mit der Spannungsversorgung. Die Buchse für den Hohlstecker befindet sich an der Programmier-Schnittstelle.Schritt 3: InstallationWenn sie Ihre Geräte korrekt angeschlossen haben, dann sind diese nun mit Ihrem PC verbunden. Klicken Sie auf dasStartsymbol Ihres Windows-PCs, dann auf „Systemsteuerung“, auf “Hardware und Sounds” und danach auf „Geräte undDrucker“. Dort suchen Sie nach “Prolific USB-to-Serial Comm Port”. In der Klammer dahinter finden Sie den Port (z.B.:COM4), den Sie sich merken (oder notieren) sollten, da Sie diese Information gleich noch benötigen.Laden Sie nun die neuste Version der Eaton Firmware / MRF Software herunter und installieren Sie diese. Öffnen Siedanach die neu installierte Software. Dann klicken Sie auf “Bearbeiten” und “Optionen”, wählen den korrekten Port aus(z.B. COM4) und setzen die für Sie passenden Häkchen.


Nun klicken Sie im oberen Reiter auf “Gateway” und dort auf “Einlesen”. Ihr System kann nun im Komfort-Modusprogrammiert werden.Schritt 4: Hinzufügen sekundärer GeräteMit der Eaton Firmware können Sie nun recht problemlos Ihre sekundären Geräte der Firma Eaton (z.B.Zwischenstecker, Raumcontroller, Fernbedienung, usw.) in Ihr System einbinden. Klicken Sie dafür im oberen Reiter auf“Aktionen” und danach zweimal auf “Einlesen”. Jetzt wird zuerst nach den netzversorgten Geräten gesucht. Ggf. müssenSie sich zum Scannen in die Nähe der sekundären Geräte begeben, falls sich diese nicht im unmittelbarenEmpfangsbereich befinden.Wenn alle netzversorgten Geräte eingelesen worden sind, klicken Sie auf “Weiter zu den batterieversorgten Geräten”. Siemüssen nun die batterieversorgten Geräte betätigen, damit eine Verbindung zum Gateway hergestellt werden kann. Istdies geschehen, klicken Sie auf “Beenden”. Sie werden jetzt dazu aufgefordert, ein Passwort einzugeben. Geben Sie hier


als Passwort “0000” ein und bestätigen Sie dieses. Klicken Sie jetzt im oberen Reiter auf “Aktionen” und danach auf“Empfangsqualität einlesen...” und dann nochmals auf “Einlesen”.Sollten noch Geräte mit Fragezeichen angezeigt werden, alle Ihre sekundären Geräte aber bereits einem anderenSymbol zugeordnet sein, so können Sie diese getrost löschen. Dafür klicken Sie mit der rechten Maustaste auf das zulöschende Symbol und dann mit der linken auf “Entfernen”, danach klicken Sie auf “Ja” und dann auf “Nein”. AuchUmbenennungen sind mit einem Klick auf die rechte Maustaste und danach auf “Umbenennen” möglich.Nun werden Ihre Geräte in der Eaton Firmware angezeigt. Klicken Sie jetzt auf das Bleistift-Symbol und verbinden SieIhre Geräte via virtuellem Bleistift mit dem Gateway und klicken jeweils auf “OK”. Danach klicken Sie unter “Aktionen”auf “Änderungen laden”. Damit <strong>IP</strong>-<strong>Symcon</strong> später weiß, was beispielsweise auf Datenpunkt 1 oder auf Datenpunkt 2 ist,müssen Sie mit der rechten Maustaste auf das Gateway und nachfolgend mit der linken auf “Datenpunktliste erstellen”klicken. Diese speichern Sie. Zum Abschluss speichern Sie, wie aus Windows bekannt, das gesamte Projekt. Jetzt könnenSie die Eaton Firmware schließen.Geschafft! Nun können Sie sich endlich <strong>IP</strong>-<strong>Symcon</strong> zuwenden.Schritt 5: Verbindung von Eaton xComfort mit <strong>IP</strong>-<strong>Symcon</strong>Nachdem Sie mithilfe Ihres Benutzernamens und Ihres Keys (per E-Mail von <strong>IP</strong>-<strong>Symcon</strong> erhalten) unsere Softwareinstalliert haben, können Sie jetzt Ihre Eaton xComfort Geräte mit <strong>IP</strong>-<strong>Symcon</strong> verbinden.Hierfür öffnen Sie die <strong>IP</strong>-<strong>Symcon</strong> Konsole (auf Ihrem Desktop). Danach verbinden Sie sich mit einem der <strong>IP</strong>-<strong>Symcon</strong>Server. Dann klicken Sie auf „Konfigurator erstellen“ und gehen auf „xComfort Konfigurator“, klicken zweimal auf„Weiter“, einmal auf „OK“ und dann auf das Zahnrad (unten links). Die Warnung “Kein HID Gerätausgewählt/gefunden.” erscheint nun. Lassen Sie sich davon nicht beunruhigen. Um ein HID Gerät zu erstellen, klickenSie auf das Symbol “Neu” rechts neben dem Zahnrad (unten links), klicken auf “HID”, zweimal auf “Weiter” und einmalauf “OK”.Es öffnet sich die Konfiguration des HID Gerätes. Machen Sie ein Häkchen bei “HID Gerät öffnen” und wählen Sie dasEaton Communication Interface aus. Klicken Sie dann auf “Übernehmen” und danach auf “OK”. Nun aktualisieren Sieund klicken abermals auf “Übernehmen” und auf “OK”. Mit dem Button “Datenpunktliste hochladen” laden Sie


anschließend Ihre zuvor gespeicherte Datenpunktlisten hoch und klicken nochmals auf “Übernehmen” und dann auf“OK”.Nun klicken Sie auf „Willkommen“ (unten links) und unter „WebFront“ auf „WebFront öffnen“. Ihr Browser öffnetdaraufhin die Benutzeroberfläche von <strong>IP</strong>-<strong>Symcon</strong> und schon können Sie z.B. Ihre Wohnzimmerbeleuchtung An- undAusschalten.Herzlichen Glückwunsch! Die ersten Schritte für ein automatisiertes Heim sind getan.Tipps & TricksNeue Versionen der Firmware/MRF Software erhalten Sie hier:Eaton <strong>Download</strong>sDas Gateway ist mit allen gängigen USB->LAN Umwandlern kompatibel (z.B. von Silex, Lantronix).Statusvariablen werden vom Eaton Xcomfort System nicht geroutet. Das bedeutet, dass Sie ihr Gateway an einem Ortpositionieren müssen, an dem Sie zu allen relevanten Geräten in Reichweite sind.Sie können in <strong>IP</strong>-<strong>Symcon</strong> mehrere Gateways gleichzeitig verwenden und über Skripte auch Befehle weiterleiten. So istes üblich, pro Etage ein Gateway zu platzieren.Erst ab der RF Version 9.2 (ca. Juli/2008) werden die auf der Protokollebene versendeten “Acknowledge” vom USB-Gateway ausgewertet. In den vorherigen Versionen ist im System nicht erkennbar, ob ein Befehl erfolgreich an einGerät übermittelt worden ist. Die RF Version ist ein Hardware-Upgrade und darf nicht mit der FW Versionverwechselt werden, die per Software aktualisiert werden kann. (Betrifft nur PC-Manager CKOZ-00/03)Das neue Thermostat benötigt ein ECI LAN Gateway oder ein USB-Gateway mit mindestens Firmware 2.6 und RFVersion 9.2. Falls das Gerät zu alt sein sollte, kann im Meldungsfenster folgende Fehlermeldungen auftreten: Invalid


RF-firmware revisionDer Port für die ClientSocket-Konfiguration vom ECI ist 7153


MXC_RequestStatusboolean MXC_RequestStatus ( integer $InstanzID )ParameterlisteInstanzIDID des GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFordert ein erneutes Senden der Statusmeldungen für Gerät mit der ID InstanzID an.Da Statusmeldungen im xComfort System nicht geroutet werden, kann es sein, dass der Befehl erfolgreich ausgeführt,aber kein neuer Status empfangen wird. Dieser Befehlt fragt den Status nicht ab, sondern fordert nur einen neueStatusmeldung an.Diese Funktion belastet den Funkverkehr erheblich. Sie sollte ausschließlich verwendet werden, um kritischeGerät zum <strong>IP</strong>-<strong>Symcon</strong>-Start zu aktualisieren. Ein erneutes Abfragen zur Laufzeit wird nicht benötigt, da xComfortalle Statusänderungen direkt an <strong>IP</strong>-<strong>Symcon</strong> weiterleitet.BeispielMXC_RequestStatus(12345); //Statusmeldung anfordern


MXC_SwitchModeboolean MXC_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert StatusBeispielMXC_SwitchMode(12345, true); //Gerät einschalten


MXC_DimSetboolean MXC_DimSet ( integer $InstanzID , integer $Intensität )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität Wert von 0-100 (in %)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert IntensitätBeispielMXC_DimSet(12345, 50); //Auf 50% dimmen


MXC_DimBrighterboolean MXC_DimBrighter ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBeginnt den Dimmvorgang für Gerät mit der ID InstanzID auf einer höheren Helligkeitsstufe. Der Vorgang kann mitdem Befehl MXC_DimStop beendet werden. Wird die maximale Stufe erreicht, stoppt der Vorgang automatisch. DieStatusmeldung wird von dem Gerät gesendet, sobald der Vorgang beendet wurde. Es werden keine Meldungenzwischendurch versandt.BeispielMXC_DimBrigther(12345); //Heller dimmen<strong>IP</strong>S_Sleep(1000): //1sek wartenMXC_DimStop(12345);


MXC_DimDarkerboolean MXC_DimDarker ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBeginnt den Dimmvorgang für Gerät mit der ID InstanzID auf einer niedrigeren Helligkeitsstufe. Der Vorgang kann mitdem Befehl MXC_DimStop beendet werden. Wird die maximale Stufe erreicht, stoppt der Vorgang automatisch. DieStatusmeldung wird von dem Gerät gesendet, sobald der Vorgang beendet wurde. Es werden keine Meldungenzwischendurch versandt.BeispielMXC_DimDarker(12345); //Dunkler dimmen<strong>IP</strong>S_Sleep(1000);MXC_DimStop(12345);


MXC_DimStopboolean MXC_DimStop ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert StatusBeispielMXC_DimStop(12345, true); //Gerät einschalten


MXC_ShutterMoveDownboolean MXC_ShutterMoveDown ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der ID InstanzID nach unten, bis MXC_ShutterStop ausgeführt wird oder die Endpositionerreicht wird.Beachten Sie, dass die Laufzeitlimitierung über das MRF Tool von Moeller programmiert wird. <strong>IP</strong>-<strong>Symcon</strong> kann dieseLimitierung nicht beeinflussen.BeispielMXC_ShutterMoveDown(12345); //Nach unten bewegen


MXC_ShutterMoveUpboolean MXC_ShutterMoveUp ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der ID InstanzID nach oben, bis MXC_ShutterStop ausgeführt wird oder die Endpositionerreicht wird.Beachten Sie, dass die Laufzeitlimitierung über das MRF Tool von Moeller programmiert wird. <strong>IP</strong>-<strong>Symcon</strong> kann dieseLimitierung nicht beeinflussen.BeispielMXC_ShutterMoveUp(12345); //Nach oben bewegen


MXC_ShutterStepDownboolean MXC_ShutterStepDown ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der ID InstanzID einen Schritt nach unten.BeispielMXC_ShutterStepDown(12345); //Einen Schritt nach unten bewegen


MXC_ShutterStepUpboolean MXC_ShutterStepUp ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der ID InstanzID einen Schritt nach oben.BeispielMXC_ShutterStepUp(12345); //Einen Schritt nach unten bewegen


MXC_ShutterStopboolean MXC_ShutterStop ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungStoppt eine aktuelle Bewegung des Rolladens.BeispielMXC_ShutterStop(12345); //Anhalten


MXC_SetTemperatureboolean MXC_SetTemperature ( integer $InstanzID , float $Temperatur )ParameterlisteInstanzIDID des zu schaltenden GerätsTemperatur Temperatur in °CRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die neue Soll-Temperatur des Stellventils mit der InstanzID InstanzID auf die neue Temperatur.BeispielMXC_SetTemperature(12345, 21.5); //Auf 21.5°C stellen


MXC_SendBooleanboolean MXC_SendBoolean ( integer $InstanzID , boolean $Wert )ParameterlisteInstanzIDWertID des zu schaltenden GerätsTrue für An, False für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen booleanischen Wert an die Instanz mit der InstanzID, welche an einen Room-Manager angeschlossen ist.BeispielMXC_SendBoolean(12345, true);


MXC_SendIntegerboolean MXC_SendInteger ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDWertID des zu schaltenden GerätsZahlenwert ohne NachkommastellenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen booleanischen Wert an die Instanz mit der InstanzID, welche an einen Room-Manager angeschlossen ist.BeispielMXC_SendInteger(12345, 40); //Wert 40 senden


MXC_SendFloatboolean MXC_SendFloat ( integer $InstanzID , float $Wert )ParameterlisteInstanzIDWertID des zu schaltenden GerätsZahlenwert mit NachkommastelleRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet eine Gleitkommazahl an die Instanz mit der InstanzID, welche an einen Room-Manager angeschlossen ist.BeispielMXC_SendFloat(12345, 35.34); //35.34 als Wert senden


HomeMaticDiese Anleitung soll Ihnen helfen, Ihre Central Control Unit (CCU) möglichst schnell und unkompliziert mit IhremComputer zu verbinden, um die Voraussetzung zu schaffen, <strong>IP</strong>-<strong>Symcon</strong> zur Steuerung verschiedenster Geräte, benutzenzu können. Das bidirektionale HomeMatic Funksystem bietet eine große Produktpalette aus den Bereichen: Heizung,Klima, Wetter, Umwelt, Sicherheit, Komfort und die meist verwendete: die Beleuchtungssteuerung. Alle Sensoren undAktoren (Schalter) können untereinander kommunizieren. Ein Schaltbefehl der nicht ausgeführt wird, kann eineentsprechende Fehlermeldung generieren. Dies ist ein Sicherheitsmerkmal, das ausschlaggebend dafür war, dass sich vieleHomeMatic Kunden für dieses Produkt entschieden haben. Das Herzstück des Systems ist die Zentrale (CCU). In ihrarbeitet ein kleiner Linux PC, der selbstständig kleine Steuerungsaufgaben übernimmt – auch bei ausgeschaltetemWindows PC. Die CCU besitzt eine eigene Weboberfläche, deren Funktionen dem Bediener zur Verfügung stehen. DieAnbindung an <strong>IP</strong>-<strong>Symcon</strong> erfolgt über die LAN-Schnittstelle der ‘CCU’ oder optional über den preiswerteren ‘LAN-Konfigurations-Adapter’.Vorteile der CCU:HomeMatic Wired RS485 Komponenten werden unterstützt.Programme können in der CCU ausgeführt werden.Status der Aktoren können per Skript abgefragt werden.HomeMatic gibt es auch als “Wired-System” – also kabelgebunden. Hierfür sind Schalt- und Dimmaktoren sowie EinundAusgabemodule erhältlich.<strong>IP</strong>-<strong>Symcon</strong> unterstützt alle funk- und kabelgebundenen Komponenten.Video-Tutorial zur EinrichtungLaden …Schritt 1: AufbauNehmen Sie Ihr CCU aus der Verpackung und montieren Sie eine für Ihren Anwendungszweck geeigneteBefestigungsmöglichkeit.Möglichkeit 1: Standfuß (Fuß wird von der Rückseite in die Nuten an der Unterseite der Zentrale geschoben.)Möglichkeit 2: Wandmontage (Halter mit beigefügten Schrauben in geeigneter Höhe anbringen, wobei die Seite mit nureiner Bohrung und einer Rastnase nach oben muss.)Schritt 2: AnschlussLegen Sie die mitgelieferten Batterien in die CCU ein. Achten Sie auf korrekte Polung. Die Batterien dienen lediglich derPufferung bei Ausfall der Netzspannung. Schließen Sie den Netzstecker an. Die Buchse für den Hohlstecker befindet sichan der Zentrale. Verbinden Sie nun Ihre CCU durch ein Netzwerkkabel mit Ihrem Netzwerk.Die Antenne der Zentrale dient nur der Funkverbindung mit den einzelnen Aktoren. Eine WLAN-Verbindung miteinem PC ist jedoch nicht möglich.


(Sollte bei Ihnen kein Netzwerk vorhanden sein, ist die Verbindung auch über USB möglich. Diese stellt jedoch nur eine„Notlösung“ dar, da hierfür USB-Treiber, welche sich auf der mitgelieferten CD befinden, benötigt werden, was dasGanze komplizierter macht und ein vorhandenes CD-Rom Laufwerk voraussetzt. Deshalb wird an dieser Stelle nichtmehr weiter auf die USB-Verbindung eingegangen.)Schritt 3: InstallationWenn Ihre CCU korrekt angeschlossen ist und Sie einen DHCP-Server verwenden, dann ist Ihre Zentrale nun mit IhremNetzwerk verbunden. (Der DHCP-Server übernimmt automatisch die Adressvergabe für die Netzwerkteilnehmer, so dassSie sich um nichts Weiteres kümmern müssen. Steht Ihnen kein DHCP-Server zur Verfügung, können Sie natürlich auchmanuell eine <strong>IP</strong>-Adresse über das Menü der Zentrale unter dem Menüpunkt „Network“ eingeben. Hierbei müssen auchdie Subnetzmasken und die Standardgateways vergeben werden. Klicken Sie nun auf das Startsymbol Ihres Windows-PCs,klicken Sie dann auf „Computer“ und danach auf „Netzwerk“. Ihrer Zentrale erscheint nun unter „Andere Geräte“ als„HomeMatic Central“.Sollte Ihre CCU nicht in Ihrem Netzwerk erscheinen, ziehen Sie den Netzstecker der Zentrale für 30 Sekundenheraus, lassen Sie diese wieder hochfahren und klicken danach nochmals auf Netzwerk.Klicken Sie jetzt auf „HomeMatic Central“. Daraufhin öffnet sich ein Fenster. Im unteren Bereich dieses Fensters findenSie die <strong>IP</strong>-Adresse der CCU. (Optional ist diese auch im Menü der CCU zu finden.) Diese kopieren Sie sich jetzt alsAdresse in Ihren Browser, so dass sich eine HomeMatic Webpage öffnet.Schritt 4: Hinzufügen sekundärer GeräteAuf der HomeMatic Webpage können Sie nun recht problemlos Ihre sekundären HomeMatic-Geräte (z.B.Temperaturfühler, Zwischenstecker, Handsender usw.) mit Ihrer CCU verbinden. Hierfür müssen Sie einfach auf „Geräteanlernen“ klicken (rechts oben) und den weiteren Anweisungen folgen.Geschafft! Nun können Sie sich endlich <strong>IP</strong>-<strong>Symcon</strong> zuwenden.Schritt 5: Verbindung der CCU mit <strong>IP</strong>-<strong>Symcon</strong>Nachdem Sie mithilfe Ihres Benutzernamens und Ihres Keys (per E-Mail von <strong>IP</strong>-<strong>Symcon</strong> erhalten) unsere Softwareinstalliert haben, können Sie jetzt Ihre CCU mit <strong>IP</strong>-<strong>Symcon</strong> verbinden.Hierfür öffnen Sie die <strong>IP</strong>-<strong>Symcon</strong> Konsole (auf Ihrem Desktop). Danach verbinden Sie sich mit einem der <strong>IP</strong>-<strong>Symcon</strong>Server. Dann klicken Sie auf „Konfigurator erstellen“ und gehen auf „HomeMatic Konfigurator“, klicken zweimal auf„weiter“, einmal auf „OK“ und dann auf das Zahnrad (unten links).Es öffnet sich die Konfiguration des „HomeMatic Sockets“. Sie müssen daraufhin ein Häkchen bei „Socket öffnen“machen. Bei Modus muss „CCU Modus“ stehen und bei „Host“ geben Sie die <strong>IP</strong>-Adresse der CCU ein (diese ist auch imMenü der CCU zu finden). Dann drücken Sie auf „OK“.


Im Fenster in der Mitte erscheinen jetzt verschiedene Geräte. Die oberen Geräte sind dabei erst mal zu vernachlässigen.Interessant sind die zuletzt aufgeführten Geräte, denn hierbei handelt es sich um die Geräte, die Sie sofort bedienenkönnen (z.B. Dimmer).Konfigurator nutzen:Seit <strong>IP</strong>-<strong>Symcon</strong> 2.3 #1776 haben Sie die Möglichkeit Ihre HomeMatic Geräte über einen Konfigurator einzurichten,der automatisch alle Ihre Geräte aus der CCU/LAN-Adapter-Konfiguration ausliest. Es ist leider nicht möglich, dieNamen aus der Konfiguration auszulesen. Der Konfigurator gibt Ihnen einen guten Überblick über die bereitseingerichteten, doppelten oder fehlerhaft eingerichteten Geräte sowie Geräte, die Sie neu anlegen können.Nun klicken Sie auf „Willkommen“ (unten links) und danach unter „WebFront“ auf „WebFront öffnen“. Ihr Browseröffnet daraufhin die Benutzeroberfläche von <strong>IP</strong>-<strong>Symcon</strong> und schon können Sie z.B. Ihre Wohnzimmerbeleuchtungdimmen.Unter Umständen funktioniert Ihr Rückkanal nicht, d.h.wenn Sie nun z.B. Ihre Wohnzimmerbeleuchtung direkt amSchalter im Wohnzimmer ausschalten, visualisiert Ihre <strong>IP</strong>-<strong>Symcon</strong> Benutzeroberfläche dies nicht. Dieses kleineProblem ist schnell zu beheben, denn es liegt nur an der Windows-Firewall. Klicken Sie auf das WindowsStartsymbol, dann auf „Systemsteuerung“, danach auf „System und Sicherheit“ und daraufhin auf „Windows-Firewall“. Jetzt drücken Sie auf „Ein Programm oder Feature durch die Windows-Firewall zulassen“, nun auf„Einstellungen ändern“ und danach auf „Anderes Programm zulassen...“. Wenn Sie auf „Durchsuchen“ klickensuchen Sie nach der <strong>IP</strong>-<strong>Symcon</strong> (<strong>IP</strong>-<strong>Symcon</strong> Service) Datei und klicken auf „öffnen“. Danach funktioniert auch derRückkanal!Eine andere Möglichkeit die Disfunktion des Rückkanals zu vermeiden, ist darauf zu achten, dass unter den Firewall-


Einstellungen in der CCU “HomeMatic XML-RPC API” Vollzugriff ausgewählt oder die <strong>IP</strong>-Adresse des <strong>IP</strong>-<strong>Symcon</strong>PCs eingetragen wird:Herzlichen Glückwunsch! Die ersten Schritte für ein automatisiertes Heim sind getan.Optional:Konfiguration des LAN-AdaptersAls erstes muss die aktuelle Usersoftware (V 1.404 Stand August 2010) von der HomeMatic-Seite installiert werden. Wirempfehlen, eine feste <strong>IP</strong>-Adresse (DHCP: Off) zu vergeben:Nach erfolgreicher Installation wurde dem PC ein neues Verzeichnis angelegt: "x:\ProgramData\Bidcos-Service\" Darinmuss in der Datei ‘bidcos.conf’ die Serial Number (siehe Etikett) sowie die <strong>IP</strong>-Addresse des Adapters angepasst werden.Beispiel:[Interface 0]Type = Lan InterfaceSerial Number = GEQ0123456# Key ist auf der Rückseite des Interfaces.# Funktion kann über das LAN Tool auch deaktiviert werden.# Dann kann das Feld leergelassen werdenEncryption Key =Description = First Lan Interface# <strong>IP</strong>-Adresse vom LAN Interface<strong>IP</strong> Address = 192.168.2.61Weitere Einstellungen in der bidcos.conf sind nicht erforderlich.Essenziell ist, dass folgender Eintrag unverändert bleibt:# TCP Port for XmlRpc connectionsListen Port = 2001Testen des AdaptersEine erfolgreiche Konfiguration kann nun mit dem Programm "Test-Run BidCos-Service" überprüft werden. Die letzteZeile im DOS-Fenster lautet dann: "… Connected to Lan Interface …".Eine blinkende Power LED deutet auf einen nicht verbundenen BidCos-Service hin.Bei Bedarf können die Startoptionen angepasst werden (Systemsteuerung > Verwaltung > Dienste) oder der Servicemanuell gestartet werden:


Geschafft! Nun können Sie sich endlich <strong>IP</strong>-<strong>Symcon</strong> zuwenden.HomeMatic-Komponenten konfigurierenIm Programm "HomeMatic Konfigurator" muss unter "Datei > Einstellungen" die Verbindung "entfernter BidCoSService" ausgewählt werden. Danach folgt noch die Eingabe der <strong>IP</strong>-Adresse (localhost) sowie des Ports (2001). ZumSchluss können nun nacheinander im Menü "Geräte anlernen" die HomeMatic-Komponenten hinzugefügt werden.Client Socket in <strong>IP</strong>-<strong>Symcon</strong>Der HomeMatic Socket (in den I/O Instanzen) muss konfiguriert werden. Als Modus muss "LAN Mode" ausgewähltwerden. Sollte der BidCoS Service auf einem anderen PC laufen, so ist als Host noch dessen <strong>IP</strong>-Adresse einzutragen. Fallsmehrere Netzwerk-Adapter vorhanden sein sollten, so muss im Event-Server die <strong>IP</strong>-Adresse des Netzwerk-Adapersausgewählt werden, an dem der LAN-Apapter angeschlossen ist. Der Port (5544) muss nicht verändert werden, sondernnur in einer ggf. vorhandenen Firewall freigeschaltet werden.Tipps & TicksHomeMatic-Script Dokumentationen und Tutorials (speziell: Datenpunkte)Sie können das Display der 19 Tasten Fernbedienung verändern.Sie können Ihre KeyMatic HM öffnen/schliessen.Um bei der Fernbedienung die PressLong/PressShort Meldungen zu erhalten, müssen Sie die Verschlüsselungdeaktiveren.Um den Status aller Aktoren und Sensoren anzufragen (nur mit der CCU möglich!).Die Einschaltdauer für einen Aktor kann mit “ON_TIME” und bei einem Dimmer kann zusätzlich eine Rampeangegeben werden.Hier ein fertiges Beispiel-Skript für drei Dimmer, die eine Licht-Szene gestalten:$id_bar = 54392 /*[EG\Tisch Bar]*/;$id_ecken = 24601 /*[EG\Strahler Ecken]*/;$id_tisch = 38758 /*[EG\Tischlampe]*/;$ramp = 2;HM_WriteValueFloat($id_bar, "ON_TIME", 60*10);// x Minuten AN


HM_WriteValueFloat($id_bar, "RAMP_TIME", $ramp);// X Sekunden RampeHM_WriteValueFloat($id_bar , "LEVEL" , .4); // und ausführen auf X%HM_WriteValueFloat($id_ecken , "RAMP_TIME", $ramp);// X Sekunden RampeHM_WriteValueFloat($id_ecken , "LEVEL" , .4); // und ausführen auf X%HM_WriteValueFloat($id_tisch , "RAMP_TIME", $ramp);// X Sekunden RampeHM_WriteValueFloat($id_tisch , "LEVEL" , .4); // und ausführen auf x%Beispiel-Skript WinMatic 60 Minuten Belüften:$id_aktor = 49712 /*[OG\Schlafzimmer\HM WinMatic]*/;HM_WriteValueFloat($id_aktor, "SPEED" , 1.0); // Maximum Speed ;)HM_WriteValueFloat($id_aktor, "RELOCK_DELAY" , 60*60); // Fenster nach XX Minuten wieder zuHM_WriteValueFloat($id_aktor, "LEVEL" , 0.7); // Fenster AufBeispiel-Skript um eine Rückmeldung zu erhalten, ob ein Aktor den Schaltbefehl korrekt ausgeführt hat:$id_aktor = 12345;$err = HM_WriteValueBoolean($id_aktor, "STATE" , False);//echo "Err: " .(int) $err . "\n";if ($err === False){echo "Fehler: Schaltaktor - Befehl wurde nicht ausgeführt\n";SetValue($id_done, False);} else {SetValue($id_done, True);echo "OK: Schaltaktor - Befehl wurde ausgeführt\n";}Beispiel-Skript, um einen Aktor (Lampe) zu toggeln (ein- und ausschalten):$id_aktor = 25404 /*[Hof Garten\Lampe]*/;$id_state = 55194 /*[Hof Garten\Lampe\STATE]*/;HM_WriteValueBoolean($id_aktor, "STATE" , !GetValue($id_state));


HM_WriteValueBooleanboolean HM_WriteValueBoolean ( integer $InstanzID , string $Parameter , boolean $Wert )ParameterlisteInstanzIDParameterWertID des zu schaltenden GerätsWertSTATEWertSTATEBeschreibungStatus eines ZwischensteckersBeschreibungTRUE für an, FALSE für ausRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Parameter des Gerätes mit der ID InstanzID auf Wert Wert.Den Parameter-Wert können Sie anhand des Namens der Status-Variable ableiten. In der Parameterliste werdeneinige Beispiele gegeben. Anhand des Typs der Variable können Sie auch die notwendige HM_WriteValue Funktionerkennen.Sollte die Fehlermeldung Failure auftreten, so ist dies im Normalfall auf eine mangelhafte Funkverbindungzurückzuführen.BeispielHM_WriteValueBoolean(12345, "STATE", true); //Gerät einschalten


HM_WriteValueIntegerboolean HM_WriteValueInteger ( integer $InstanzID , string $Parameter , integer $Wert )ParameterlisteInstanzIDParameterID des zu schaltenden GerätsWertBeschreibungWertWertBeschreibungRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Parameter des Gerätes mit der ID InstanzID auf Wert Wert.Den Parameter-Wert können Sie anhand des Namens der Status-Variable ableiten. In der Parameterliste werdeneinige Beispiele gegeben. Anhand des Typs der Variable können Sie auch die notwendige HM_WriteValue Funktionerkennen.Sollte die Fehlermeldung Failure auftreten, so ist dies im Normalfall auf eine mangelhafte Funkverbindungzurückzuführen.Beispiel//Zur Zeit nicht verfügbar


HM_WriteValueFloatboolean HM_WriteValueFloat ( integer $InstanzID , string $Parameter , float $Wert )ParameterlisteInstanzIDParameterID des zu schaltenden GerätsWertLEVELBeschreibungDimmwert der ZwischenstärkeWertWertBeschreibungLEVEL 0-1, 0=0%, 1=100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Parameter des Gerätes mit der ID InstanzID auf Wert Wert.Den Parameter-Wert können Sie anhand des Namens der Status-Variable ableiten. In der Parameterliste werdeneinige Beispiele gegeben. Anhand des Typs der Variable können Sie auch die notwendige HM_WriteValue Funktionerkennen.Sollte die Fehlermeldung Failure auftreten, so ist dies im Normalfall auf eine mangelhafte Funkverbindungzurückzuführen.BeispielHM_WriteValueFloat(12345, "LEVEL", 0.25); //Gerät auf 25% dimmen


HM_WriteValueStringboolean HM_WriteValueString ( integer $InstanzID , string $Parameter , string $Wert )ParameterlisteInstanzIDParameterID des zu schaltenden GerätsWertBeschreibungWertWertBeschreibungRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Parameter des Gerätes mit der ID InstanzID auf Wert Wert.Den Parameter-Wert können Sie anhand des Namens der Status-Variable ableiten. In der Parameterliste werdeneinige Beispiele gegeben. Anhand des Typs der Variable können Sie auch die notwendige HM_WriteValue Funktionerkennen.Sollte die Fehlermeldung Failure auftreten, so ist dies im Normalfall auf eine mangelhafte Funkverbindungzurückzuführen.Beispiel//Zur Zeit nicht verfügbar


HM_ReadServiceMessagesarray HM_ReadServiceMessages ( integer $InstanzID )ParameterlisteInstanzIDID der HomeMatic Socket InstanzRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungAddress string Adresse des betreffenden GerätsMessage string Kryptische Beschreibung der Fehlermeldung. Text kann teilweise derstringtable_de.txt aus dem HomeMatic Konfigurationstool entnommen werden.Value variant Wert der FehlermeldungBeschreibungLiest die Service-Meldungen der CCU/LAN-Adapters mit der ID InstanzID aus.Beispiel//Erstellt eine Variable die im WebFront alle ServiceMeldungen anzeigt. Einfach in ein Skript kopieren und a//Ab hier nichts mehr ändern$object = <strong>IP</strong>S_GetObject($_<strong>IP</strong>S['SELF']);$parentID = $object['ParentID'];//Installerif ($_<strong>IP</strong>S['SENDER'] == "Execute"){<strong>IP</strong>S_SetHidden($_<strong>IP</strong>S['SELF'], true);<strong>IP</strong>S_SetName($_<strong>IP</strong>S['SELF'], "Auslese-Skript");$parentObject = <strong>IP</strong>S_GetObject($parentID);if ($parentObject['ObjectType'] !== 1){$instanceID = <strong>IP</strong>S_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");<strong>IP</strong>S_SetParent($instanceID, $parentID);$parentID = $instanceID;<strong>IP</strong>S_SetParent($_<strong>IP</strong>S['SELF'], $parentID);<strong>IP</strong>S_SetName($instanceID, "Servicemeldungen");}<strong>IP</strong>S_SetScriptTimer($_<strong>IP</strong>S['SELF'], 300);}$texte = Array("CONFIG_PENDING" => "Konfigurationsdaten stehen zur Übertragung an","LOWBAT" => "Batterieladezustand gering","STICKY_UNREACH" => "Gerätekommunikation war gestört","UNREACH" => "Gerätekommunikation aktuell gestört");$str = ""; // Farbe anpassen oder style entfernen$str .= "GerätnameGeräteIDMeldung";


$ids = <strong>IP</strong>S_GetInstanceListByModuleID("{A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}");if(sizeof($ids) == 0)die("Keine HomeMatic Socket Instanz gefunden!");$msgs = HM_ReadServiceMessages($ids[0]);if($msgs === false)die("Verbindung zur CCU fehlgeschlagen");if(sizeof($msgs) == 0)$str .= "Keine Servicemeldungen!";foreach($msgs as $msg){if(array_key_exists($msg['Message'], $texte)) {$text = $texte[$msg['Message']];} else {$text = $msg['Message'];}$id = GetInstanceIDFromHMID($msg['Address']);if(<strong>IP</strong>S_InstanceExists($id)) {$name = <strong>IP</strong>S_GetLocation($id);} else {$name = "Gerät nicht in <strong>IP</strong>-<strong>Symcon</strong> eingerichtet";}}$str .= "".$name."".$msg['Address']."".$text."";$str .= "";$vid = CreateVariableByName($parentID, "Content", 3);<strong>IP</strong>S_SetIcon($vid, "Information");<strong>IP</strong>S_SetVariableCustomProfile($vid, "~HTMLBox");SetValue($vid, $str);function GetInstanceIDFromHMID($sid){$ids = <strong>IP</strong>S_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");foreach($ids as $id){$a = explode(":", HM_GetAddress($id));$b = explode(":", $sid);if($a[0] == $b[0]){return $id;}}return 0;}function CreateVariableByName($id, $name, $type){$vid = @<strong>IP</strong>S_GetVariableIDByName($name, $id);if($vid === false){$vid = <strong>IP</strong>S_CreateVariable($type);<strong>IP</strong>S_SetParent($vid, $id);<strong>IP</strong>S_SetName($vid, $name);


}}<strong>IP</strong>S_SetInfo($vid, "this variable was created by script #".$_<strong>IP</strong>S['SELF']);return $vid;


HM_RequestStatusboolean HM_RequestStatus ( integer $InstanzID , string $Parameter )ParameterlisteInstanzIDParameterID des zu schaltenden GerätsWertSTATELEVELBeschreibungStatus eines AktorsDimmwertRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFragt den Parameter des Gerätes mit der ID InstanzID ab.Den Parameter-Wert können Sie anhand des Namens der Status-Variable ableiten. In der Parameterliste werdeneinige Beispiele gegeben.Diese Funktion belastet den Funkverkehr erheblich. Sie sollte ausschliesslich verwendet werden, um kritischeGeräte zum <strong>IP</strong>-<strong>Symcon</strong>-Start zu aktualisieren. Ein erneutes Abfragen zur Laufzeit wird nicht benötigt, da dieHomeMatic alle Statusänderungen direkt an <strong>IP</strong>-<strong>Symcon</strong> weiterleitet.Bei batteriebetriebenen Geräten wird nur der gespeicherte Status des CCU/LAN-Adapters abgefragt. NetzbetriebeneGeräte werden per Funk direkt abgefragt.Beispiel$ids = <strong>IP</strong>S_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");echo "Geräte: ".sizeof($ids)."\n";foreach($ids as $id){$svs=<strong>IP</strong>S_GetStatusVariableIdents($id);if(sizeof($svs) > 0) {if(@HM_RequestStatus($id, $svs[0]) === false) {echo "Fehler: ".<strong>IP</strong>S_GetLocation($id)."\n";}}}


Z-WaveUm eine einfache und komfortable Installation zu ermöglichen, wird empfohlen sich den Tricklestar USB-Stick (ab jetztGateway genannt) und die Tricklestar Remote (ab jetzt Inclusion Controller genannt) zu kaufen. Auf dieser Hardwarebaut auch diese Anleitung zur Installation und Einrichtung des Systems in <strong>IP</strong>-<strong>Symcon</strong> auf. Folgende Schritte müssen Siedurchführen, um ihre Geräte über <strong>IP</strong>-<strong>Symcon</strong> ansprechen zu können.Video-Tutorial zur EinrichtungLaden …Konfiguration von Gateway und Inclusion ControllerInstallieren Sie die Treiber für das Gateway.Erstellen Sie einen neuen Z-Wave Konfigurator (Konfiguratoren verwalten -> Neu -> Z-Wave Konfigurator ->Bestätigen).Die zu sehende Liste zeigt alle auf dem Gateway angelernte Geräte und deren Verbindungen in <strong>IP</strong>-<strong>Symcon</strong> an. DieKodierung der Farben können Sie hier nachsehen.Klicken Sie auf das Zahnrad im unteren Bereich des Konfigurators, um zur Konfiguration des Gateways zu gelangen.Falls eine rote Fehlermeldung im unteren Berich zu sehen ist, müssen Sie diese anklicken und in der I/O Instanz denseriellen Port öffnen und den richtigen Port auswählen. Bestätigen Sie den Dialog mit OK. Die Konfigurationsseitesollte sich schließen und die rote Fehlermeldung auf der Gatewaykonfiguration verschwinden.Resetten Sie jetzt das Gateway, um es als Primary Controller einzurichten und den SIS Modus zu aktivieren.Diese Operation löscht alle Verknüpfungen, die bereits auf dem Gateway eingerichtet waren.Nach der Operation sollte die Konfiguration wie folgt aussehen:Schließen Sie diese Konfiguration, indem Sie auf OK klicken.Zurück im Konfigurator müssen Sie nun den Inclusion Controller anlernen.Durch den Inclusion Controller werden alle neuen Geräte angelernt. Dieser sendet dann die Geräteinformationenautomatisch auf das USB-Gateway, so dass <strong>IP</strong>-<strong>Symcon</strong> diese Geräte sehen und bedienen kann. <strong>IP</strong>-<strong>Symcon</strong> kann auch


ohne SIS/SUC betrieben werden. Das hat aber den Nachteil, dass neue Geräte direkt am Gateway angelernt werdenmüssen, da der Einlernprozess nur im Low-Power Modus erfolgt und dadurch eine geringe Reichweite hat. DieMethode mit dem Inclusion Controller ist dagegen Routingfähig und erlaubt ein optimales Einrichten inklusive derBerechnung der korrekten Routingtabellen. Bei dem Modus ohne SIS/SUC muss nach der erfolgten Platzierung desGeräts eine optimierung der Routing Tabellen erfolgen, um ein stabiles Netzwerk zu gewährleisten.Drücken Sie im Konfigurator auf "Gerät hinzufügen" und bringen Sie den Inclusion Controller in den Lern-Modus,indem Sie folgende Kombination verwenden:Zwei Sekunden den Hoch-Knopf halten, bis die grüne LED leuchtet. Danach viermal den Hoch-Knopf betätigen,um in den richtigen Modus zu gelangen.Überprüfen Sie, ob sich die Tricklestar Remote im Konfigurationsmodus befindet (siehe Tricklestar Anleitung).Nach dem Einlernvorgang sollte der Anlern-Dialog verschwinden und der neue Inclusion Controller als GenericController in der Liste erscheinen.Anlernen der GeräteNachdem das Gateway und der Inclusion Controller bereit sind, können Sie die einzelnen Gerät in das Netzwerkaufnehmen. Platzieren Sie dazu die Geräte an ihrem Endstandort. Dies ist besonders wichtig, um die korrektenRoutingtabellen beim Anlernvorgang zu berechnen.Wenn Sie die Position eines Gerätes verschieben wollen, so müssen Sie es auf dem Netzwerk entfernen und hinterherwieder erneut in das Netzwerk aufnehmen!Um den Inclusion Controller in den Hinzufüge-Modus zu versetzen, müssen Sie folgende Kombination anwenden:Zwei Sekunden den Hoch-Knopf halten, bis die grüne LED leuchtet. Danach einmal den Hoch-Knopf betätigen,um in den richtigen Modus zu gelangen.Die LED sollte nun blicken. Drücken Sie nun die Anlernkombination auf ihrem Endgerät. Die LED auf demInclusion Controller sollte für zwei Sekunden aufleuchten und dann erlöschen.Zurück im Konfigurator in <strong>IP</strong>-<strong>Symcon</strong> sollte nun Ihr Gerät in der Liste sichtbar sein.Wählen Sie es aus und drücken Sie die Knöpfe Erstellen und danach Konfiguration.In der Gerätekonfiguration haben Sie die Möglichkeit, die Funktion ihres Geräte zu testen.Ihr Gerät ist jetzt eingerichtet und kann im WebFront direkt bedient werden. Über die PHP-Funktionen können Sieeigene Aktionen programmieren.Spezialgeräte – EinrichtungLink zum ForenbeitragGetestete GeräteLink zum ForenbeitragUnterstützte Command-KlassenCOMMAND_CLASS_BASICCOMMAND_CLASS_SWITCH_BINARYCOMMAND_CLASS_SWITCH_MULTILEVELCOMMAND_CLASS_SWITCH_SHUTTERCOMMAND_CLASS_SENSOR_BINARYCOMMAND_CLASS_SENSOR_MULTILEVELCOMMAND_CLASS_METERCOMMAND_CLASS_MULTI_INSTANCECOMMAND_CLASS_THERMOSTAT_MODECOMMAND_CLASS_THERMOSTAT_OPERATING_STATECOMMAND_CLASS_THERMOSTAT_SETPOINTCOMMAND_CLASS_THERMOSTAT_FAN_MODECOMMAND_CLASS_THERMOSTAT_FAN_STATECOMMAND_CLASS_ALARMCOMMAND_CLASS_MANUFACTURER_SPECIFIC


COMMAND_CLASS_PROTECTIONCOMMAND_CLASS_LOCKCOMMAND_CLASS_BATTERYCOMMAND_CLASS_CLOCKCOMMAND_CLASS_ASSOCIATIONCOMMAND_CLASS_CONFIGURATIONCOMMAND_CLASS_WAKE_UPCOMMAND_CLASS_VERSIONCOMMAND_CLASS_PROPRIETARYCOMMAND_CLASS_MULTI_CMDCOMMAND_CLASS_MANUFACTURER_PROPRIETARYCOMMAND_CLASS_SENSOR_ALARM


ZW_RequestStatusboolean ZW_RequestStatus ( integer $InstanzID )ParameterlisteInstanzIDID des GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFragt den Status für das Gerät mit der ID InstanzID ab. Nur netzbetriebene Geräte können per Befehl direkt abgefragtwerden, da batteriebetriebene Geräte nicht dauerhaft dem Abfragen lauschen.Diese Funktion belastet den Funkverkehr erheblich. Sie sollte ausschließlich verwendet werden, um kritischeGerät zum <strong>IP</strong>-<strong>Symcon</strong>-Start zu aktualisieren. Ein erneutes Abfragen zur Laufzeit wird nicht benötigt, da Z-Wave imNormalfall alle Statusänderungen direkt an <strong>IP</strong>-<strong>Symcon</strong> weiterleitet. Ältere Geräte die dies nicht tun, sollten durchneuere Geräte ersetzt werden.BeispielZW_RequestStatus(12345);


ZW_Basicboolean ZW_Basic ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des GerätsWert 0..255RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet die Basisfunktion vom angegeben Gerät mit der InstanzID InstanzIDDie Basisfunktion kann in den meisten Geräten über Parameter bestimmt werden. Bitte entnehmen Sie weitereInformationen der Anleitung ihres spezifischen Gerätes.BeispielZW_Basic(12345, 255); //z.B. Anschalten


ZW_SwitchModeboolean ZW_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert StatusBeispielZW_SwitchMode(12345, true); //Gerät einschalten


ZW_DimSetboolean ZW_DimSet ( integer $InstanzID , integer $Intensität )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität Wert von 0-100 (in %)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert IntensitätBeispielZW_DimSet(12345, 50); //Auf 50% dimmen


ZW_ShutterMoveUpboolean ZW_ShutterMoveUp ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der ID InstanzID nach oben, bis ZW_ShutterStop ausgeführt oder die Endposition erreichtwird.Beachten Sie, dass einige Rollladensteuerungen bei Z-Wave über ZW_DimSet wie Dimmer angesprochen werdenmüssen.BeispielZW_ShutterMoveUp(12345); //Nach oben bewegen


ZW_ShutterMoveDownboolean ZW_ShutterMoveDown ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der ID InstanzID nach unten, bis ZW_ShutterStop ausgeführt oder die Endposition erreichtwird.Beachten Sie, dass einige Rollladensteuerungen bei Z-Wave über ZW_DimSet wie Dimmer angesprochen werdenmüssen.BeispielZW_ShutterMoveDown(12345); //Nach unten bewegen


ZW_ShutterStopboolean ZW_ShutterStop ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungStoppt eine aktuelle Bewegung des Rolladens.Beachten Sie, dass einige Rollladensteuerungen bei Z-Wave über ZW_DimSet wie Dimmer angesprochen werdenmüssen.BeispielZW_ShutterStop(12345); //Anhalten


digitalSTROMDiese Anleitung soll Ihnen helfen, einen digitalSTROM-Server möglichst schnell und unkompliziert mit dem Computerzu verbinden, um die Voraussetzung zu schaffen, mit <strong>IP</strong>-<strong>Symcon</strong> verschiedenste Anwendungsbereiche abzudecken unddiese zu visualisieren. DigitalStrom vernetzt elektrische Geräte über die vorhandene Stromleitung und ermöglicht dieSteuerung und Regelung dieser. Dafür wird in dem zu bedienende Gerät eine digitalSTROM-Klemme eingebaut, bzw. dieherkömmliche Lüsterklemme ersetzt.Alle elektrischen Geräte, die via digitalSTROM-Klemme mit dem digitalSTORM-Server kompatibel sind, sind auch mit<strong>IP</strong>-<strong>Symcon</strong> kompatibel und können eingebunden werden.Video-Tutorial zur EinrichtungLaden …Schritt 1: AufbauNehmen Sie das Gerät aus der Verpackung und platzieren Sie dieses an einen Ort, der für Ihre Verwendungszweckegeeignet ist. Achten Sie bei der Aufstellung darauf, dass sich das Gerät problemlos per LAN-Kabel mit dem PC verbindenlässt. Das Gerät darf nur in gebäudetechnischen Anlagen und nur für die beschriebenen Anwendungen vom Fachmanneingesetzt werden. Die örtlichen Vorschriften (Installation etc.) sind einzuhalten.Schritt 2: AnschlussBevor der digitalSTROM-Server mit dem PC verbunden wird, sollten Ihre übrigen elektrischen Geräte, die Sie mit demPC bedienen wollen, korrekt via digitalSTROM-Klemme mit diesem verbunden sein. Verbinden Sie nun das Gerät durchein Netzwerkkabel mit dem Netzwerk und schließen Sie es an die Spannungsversorgung an.Schritt 3: InstallationWenn der digitalSTROM-Server korrekt angeschlossen ist und Sie einen DHCP-Server verwenden, dann ist derdigitalSTROM-Server nun mit dem lokalen Netzwerk verbunden. (Der DHCP-Server übernimmt automatisch dieAdressvergabe für die Netzwerkteilnehmer, so dass Sie sich um nichts Weiteres kümmern müssen.)Klicken Sie nun auf das Startsymbol Ihres Windows-PCs, klicken Sie dann auf „Computer“ und danach auf „Netzwerk“.Der digitalSTROM-Server erscheint nun unter „Andere Geräte“ als „dSS“. Klicken Sie jetzt auf „dSS“. Daraufhin öffnetsich ein Fenster. Im unteren Bereich dieses Fensters finden Sie die <strong>IP</strong>-Adresse des digitalSTROM-Servers. Diese kopierenSie sich jetzt als Adresse in Ihren Browser, so dass sich eine digitalSTROM Webpage öffnet. Es erscheint eineSicherheitswarnung. Wählen Sie: "Ich kenne das Risiko". Beim ersten Login gilt:"Name" = "dssadmin" und "Passwort" = "dssadmin".Das Passwort sollte nach dem ersten Login geändert werden. Beachten Sie Groß- und Kleinschreibung. Hier können Sienun einige Voreinstellungen vornehmen.Es ist selbstverständlich auch möglich, die <strong>IP</strong>-Adresse manuell zu vergeben.Schritt 4: Verbindung mit <strong>IP</strong>-<strong>Symcon</strong>


Nachdem Sie mithilfe Ihres Benutzernamens und Ihres Keys (per E-Mail von <strong>IP</strong>-<strong>Symcon</strong> erhalten) unsere Softwareinstalliert haben, können Sie jetzt den digitalSTROM-Server mit <strong>IP</strong>-<strong>Symcon</strong> verbinden.Hierfür öffnen Sie die <strong>IP</strong>-<strong>Symcon</strong> Konsole (auf Ihrem Desktop). Danach verbinden Sie sich mit einem der <strong>IP</strong>-<strong>Symcon</strong>Server.Dann klicken Sie auf „Konfigurator erstellen“ und gehen auf „ds Konfigurator“, klicken zweimal auf „weiter“, einmal auf„OK“ und dann auf das Zahnrad (unten links).Es öffnet sich die Konfiguration des „dS Splitters“. Bei <strong>IP</strong>-Adresse tragen Sie nun die <strong>IP</strong>-Adresse des digitalSTROM-Servers (siehe Schritt 3) ein und klicken auf “Übernehmen”. Danach klicken Sie auf “Request Token” und tragen Name(Username) und Passwort (Password) der digitalSTROM Konfigurations-Web-Page ein (Standard: "Name" = "dssadmin"und "Passwort" = "dssadmin"). Bei korrekter Eingabe erscheinen neben Token nun viele Zahlen und kleine Buchstaben.Danach können Sie die Ansicht schließen. Im digitalSTROM Konfigurator klicken Sie jetzt auf “Suchen”. Anschließenderscheinen alle an den digitalSTROM-Server per digitalSTROM-Klemmen angeschlossenen Geräte.Bei der ID auf der linken Seite handelt es sich um die Identifikationsnummer, die sich auch auf der Rückseite dereinzelnen digitalSTROM-Klemmen wiederfindet. Im Falle einer großen Anzahl von installierten Geräten ist damit eineproblemlose Zuordnung und Konfiguration gewährleistet. Bei der ID auf der rechten Seite handelt es sich um die von <strong>IP</strong>-<strong>Symcon</strong> zugeordnete InstanzID. Diese ist einmalig und unveränderbar.Klicken Sie nun jedes Gerät nacheinander an und drücken danach jeweils “Erstellen”. Die Geräte sind nun bedienbar.Nach einem Klick auf ein ausgewähltes digitalSTROM-Gerät und dann einen Klick auf “Konfigurieren” können Sie dieFunktion jedes einzelnen Gerätes testen.


Diese Möglichkeit haben Sie auch, wenn Sie direkt im Objektbaum doppelt auf ein ausgewähltes Gerät klicken. (DieseGeräte sind im Objektbaum unter Splitter-Instanzen wieder zu finden.) Nach dieser Konfiguration können Sie dieAnsicht schließen.Wählen Sie in der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole den Reiter “Willkommen” aus. Nun klicken Sie unter „WebFront“ auf„WebFront öffnen“. Ihr Browser öffnet daraufhin die Benutzeroberfläche von <strong>IP</strong>-<strong>Symcon</strong>, und schon können Sie Ihremit dem digitalSTROM-Server verbundenen Geräte komfortabel via PC (mit den im Shop erhältlichen Apps auch viaTablet-PC oder Smartphone) bedienen.Herzlichen Glückwunsch! Die ersten Schritte für ein automatisiertes Heim sind getan.


DS_SwitchModeboolean DS_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert Status.BeispielDS_SwitchMode(12345, true); //Gerät einschalten


DS_DimSetboolean DS_DimSet ( integer $InstanzID , integer $Intensität )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität Wert von 0-255RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert IntensitätBeispielDS_DimSet(12345, 128); //Auf 50% dimmen


DS_ShutterMoveboolean DS_ShutterMove ( integer $InstanzID , integer $Position )ParameterlisteInstanzIDID des zu schaltenden GerätsPosition Position von 0-255RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen/Markise/Jalousie mit der ID InstanzID auf die Position Position, bis DS_ShutterStop ausgeführtwird oder die Zielposition erreicht wird.BeispielDS_ShutterMove(12345, 128); //Auf 50% fahren


DS_ShutterMoveDownboolean DS_ShutterMoveDown ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen/Markise/Jalousie mit der ID InstanzID nach unten, bis DS_ShutterStop ausgeführt wird oder dieEndposition erreicht wird.BeispielDS_ShutterMoveDown(12345); //Nach unten bewegen


DS_ShutterMoveUpboolean DS_ShutterMoveUp ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen/Markise/Jalousie mit der ID InstanzID nach oben, bis DS_ShutterStop ausgeführt wird oder dieEndposition erreicht wird.BeispielDS_ShutterMoveUp(12345); //Nach oben bewegen


DS_ShutterStopboolean DS_ShutterStop ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungStoppt eine aktuelle Bewegung des/der Rolladens/Markise/Jalousie.BeispielDS_ShutterStop(12345); //Anhalten


EnOceanDie patentierte EnOcean-Funktechnik ermöglicht, ein Datenpaket mit geringen Mengen Umgebungsenergie (z.B. einerSolarzelle) auszusenden. Die Technologie wird in der Gebäudetechnik u.a. in folgenden Produkten eingesetzt:Temperatur- und Feuchtigkeitssensoren, Tür- und Fensterkontakten, batterielosen Lichtschaltern, Präsenzmeldern undLichtsensoren...Das lästige und kostenintensive Austauschen der Batterien gehört hier der Vergangenheit an. Eines von vieleninteressanten Produkten ist beispielsweise ein Sensor, der meldet, ob jemand auf einem (Büro-) Stuhl sitzt. Mit dieserInformation kann dann die Arbeitsplatzbeleuchtung angepasst werden oder der PC in den Stand-By-Modus gebrachtwerden.Für die Kommunikation mit <strong>IP</strong>-<strong>Symcon</strong> ist ein USB-Interface (z.B. BSC-BOR, USB300) oder ein LAN-Interface (z.B.Thermokon STC oder <strong>IP</strong>S-TCM310) erforderlich.Weitere Informationen über die verwendete Technologie und Bezugsquellen gibt es auf der Seite von EnOcean.Link: http://www.enocean.com/deInstallationDas EnOcean USB-Interface muss angeschlossen und der virtuelle ComPort muss vorhanden sein. Für LAN-Gatewaysmuss als übergeordnete Instanz ein ClientSocket angelegt werden. Ab <strong>IP</strong>-<strong>Symcon</strong> 2.5 werden auch Gateways mit demneuen ESP3 Protokoll unterstützt. Das jeweilige Protokoll kann in der EnOcean Splitter Instanz eingestellt werden.Installation des TCM310Laden und Starten des Lantronix DeviceInstallersLantronix > Products > Device Networking > Utilities and Tools > DeviceInstallerDen betreffenden XPort im Objektbaum auswählen (ggf. MAC-Adresse überprüfen)‘TelnetConfiguration’, ‘Connect’ und ‘Enter” drücken’0" um den Server zu konfigurierenGewünschte <strong>IP</strong>-Adresse eingeben: z.B. 192.168.2.40Alle weiteren Einstellungen nicht verändern und mit ‘Enter’ bestätigen’1" Channel 1 > Baudrate auf 57600. Alles andere so lassen und mit ‘Enter’ bestätigen’9", um die Eingaben zu speichen und Telnet zu beendenDer DeviceInstaller kann nun ebenfalls beendet werden.In <strong>IP</strong>-<strong>Symcon</strong> / Modul “EnOcean Gateway” Modus: ESP3und ‘Übergeordnete Instanz’: ‘Client Socket’ mit der gewünschten <strong>IP</strong>-Adresse und dem Port: 10001Tipps & TricksUm Empfangsprobleme zu beseitigen oder um größere Distanzen zu überbrücken, können bis zu zwei Repeater vom Typ“TCM 120! eingesetzt werden.Bei Eltako Geräten muss der Schaltaktor im Richtungstastermodus eingelernt werden. Der Dimmaktor muss im ModusP,L,C eingelernt werden. Dafür ist die speziell dafür vorgesehene Instanz und der Einlernen-Button zu nutzen. (Ab <strong>IP</strong>-<strong>Symcon</strong> 2.5)Bei Bidirektionalen System von Eltako muss nach dem Einlernen des Geräts zusätzlich die Rückmeldeadresse eingelerntwerden. Dazu kann in den Eltako Instanzen ein zusätzlicher Suchdialog gestartet werden, der das jeweilige Geräte fünfmalan- und ausschaltet, um somit die Rückmeldeadresse herauszufinden.KonfigurationFalls Sie ihr Gerät noch nicht eingerichtet haben, folgen sie bitte den Schritten auf dieser Seite: Geräte einbindenBevor Sie die Suche starten können, müssen Sie noch die übergeordnete Instanz konfigurieren, indem Sie den korrektenCom Port angeben und die Konfiguration übernehmen. Die Einstellung von Baudrate ect. ist nicht notwendig, da Sievom System automatisch vorgenommen wird.Der Suchdialog zeigt ein Gerät erst an, wenn Daten empfangen wurden. Bei einem Taster können Sie die Tasten drücken,um einen Sendevorgang aufzurufen. Bei Temperatursensoren müssen Sie das nächste Intervall abwarten oder die IDmanuell angeben.Sobald Sie eine ID angegeben haben, müssen Sie die Konfiguration übernehmen. Dadurch werden auch die passenden


Status Variablen automatisch erstellt. Beispiel PTM250 / 4-fach Taster:


ENO_SwitchModeboolean ENO_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert StatusDa das EnOcean System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war.Fehlermeldungen werden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B. wenn das Interface nichtangeschlossen ist.BeispielENO_SwitchMode(12345, true); //Gerät einschalten


ENO_SwitchModeExboolean ENO_SwitchModeEx ( integer $InstanzID , boolean $Status , integer $SendeModus )ParameterlisteInstanzIDStatusSendeModusID des zu schaltenden GerätsTRUE für An, FALSE für Aus0 = NMessage, 1 = UMessage, 2 = Beide (Wie ENO_SwitchMode)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert StatusDa das EnOcean System unidirektonal ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war.Fehlermeldungen werden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist, z.B. wenn das Interface nichtangeschlossen ist.Für die Erklärung der NMessage und UMessage wenden Sie sich bitte an die EnOcean Dokumentation.BeispielENO_SwitchModeEx(12345, true, 0); //NMessage senden<strong>IP</strong>S_Sleep(500); //WartenENO_SwitchModeEx(12345, true, 1); //UMessage senden


ENO_SetIntensityboolean ENO_SetIntensity ( integer $InstanzID , boolean $Status , integer $Intensität )ParameterlisteInstanzIDID des zu schaltenden GerätsStatusTRUE für An, FALSE für AusIntensität 1..20, 1 = 5%, 20 = 100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert Intensität. Der Wert Status gibt an, ob das Gerät an/aus geschaltetwerden soll.Da das EnOcean System unidirektional ist, kann nicht festgestellt werden, ob der Befehl erfolgreich war.Fehlermeldungen werden nur gesendet, wenn ein systeminterner Fehler aufgetreten ist (z.B. wenn das Interface nichtangeschlossen ist).Das EnOcean Protokoll sieht keine Dimmfunktion vor. Der Opus-Dimmer wird durch einen “Trick” über eineZeitfunktion angesteuert, sodass das Resultat der Helligkeit je nach Vorgang ein wenig abweichen kann. DieProzentwerte sind nur ungefähr und es kann keine lineare Helligkeitssteigerung angenommen werden.Diese Funktion kann nur mit der Opus Dimmer Instanz verwendet werden.BeispielENO_SetIntensity(12345, true, 10); //Gerät auf ca. 50% dimmen


ENO_DimSetboolean ENO_DimSet ( integer $InstanzID , integer $Intensität )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität 1..100RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert Intensität.Diese Funktion kann nur mit Eltako Dimmer Instanzen verwendet werden.BeispielENO_DimSet(12345, 10); //Gerät auf 10% dimmen


<strong>IP</strong>S-868Diese Anleitung soll Ihnen helfen, Ihr <strong>IP</strong>-<strong>Symcon</strong> Funksystem 868 (LAN-Transceiver LAN-T 868 (optional:Funktransceiver USB-T 868)) möglichst schnell und unkompliziert mit Ihrem Computer zu verbinden, um dieVoraussetzung zu schaffen, mit <strong>IP</strong>-<strong>Symcon</strong> verschiedenste Anwendungsbereiche abzudecken.Das <strong>IP</strong>-<strong>Symcon</strong> Funksystem 868 ergänzt mit seinen bidirektionalen Funkkomponenten Anwendungsbereiche, die vonanderen Systemen oft nicht zufriedenstellend abgedeckt werden. Hierzu zählen die Verbrauchserfassung per S0-Eingang,die Anwesenheitskontrolle per Fernbedienung, das Anzeigen und Schalten per Displayeinheit, sowie die Ansteuerung vonLED-Stripes.Schritt 1: AufbauNehmen Sie den LAN-Transceiver LAN-T 868 aus der Verpackung und legen Sie dieses an einen Ort, der für IhreVerwendungszwecke geeignet ist. Achten Sie bei der Aufstellung darauf, dass sich Ihr Gerät einerseits in der Nähe desPCs , denn an diesen muss es per LAN-Kabel angeschlossen werden, andererseits aber nicht zu weit entfernt von den fürSie relevanten Aktoren befindet, da diese per Funk erreicht werden müssen.Schritt 2: AnschlussVerbinden Sie nun Ihren LAN-Transceiver durch ein Netzwerkkabel mit Ihrem Netzwerk.(Die bidirektionale Datenübermittlung kann optional auch über einen USB-T 868 Funktransceiver im 868 MHz Frequenzband erfolgen,der dann per USB mit dem PC verbunden wird. Die hierfür notwendigen Treiber sind in unserem direkt zum <strong>Download</strong> verfügbar.)Schließen Sie jetzt den Netzstecker an und verbinden Sie diesen mit der Spannungsversorgung. Die Buchse für denHohlstecker befindet sich am LAN-Transceiver.Schritt 3: InstallationWenn Ihr LAN-Tranceiver korrekt angeschlossen ist und Sie einen DHCP-Server verwenden, dann ist Ihre Zentrale nunmit Ihrem Netzwerk verbunden. (Der DHCP-Server übernimmt automatisch die Adressvergabe für die Netzwerkteilnehmer, so dass Siesich um nichts Weiteres kümmern müssen.)Ein Treiber muss nicht installiert werden, da der LAN-Transceiver einen hochwertigen LAN-Chip von Lantronix enthält.Die <strong>IP</strong>-Adresse des Transceivers, die zur Verbindung mit <strong>IP</strong>-<strong>Symcon</strong> benötigt wird, können Sie über Ihre FRITZ-Boxherausfinden. Steht Ihnen diese nicht zur Verfügung, so laden und starten Sie einfach den Lantronix DeviceInstaller(<strong>Download</strong>). Wählen Sie hier den betreffenden XPort im Objektbaum aus. Überprüfen Sie anhand der MAC-Adresse, obes sich beim ausgewählten Gerät um das korrekte Gerät handelt. Die MAC-Adresse (Media-Access-Control-Adresse) istdie Hardware-Adresse eines Netwerkadapters, die zur eindeutigen Identifizierung des Geräts in einem Netzwerk dient.Die MAC-Adresse des LAN-Transceivers befindet sich unter der Plastikabdeckung des Geräte, die mit einem Klick zuöffnen ist.Sollten Sie einen DHCP-Server benutzen, so steht Ihnen die Netzwerkadresse nun zur Verfügung.(Es ist aber natürlich auch möglich, die <strong>IP</strong>-Adresse selbst zu vergeben (z.B. falls kein DHCP-Server vorhanden ist). Dies funktioniertfolgendermaßen:Laden und Starten des Lantronix DeviceInstaller (http://ltxfaq.custhelp.com/app/answers/detail/a_id/644).


Den betreffenden Xport im Objektbaum auswählen (ggf. MAC-Adresse überprüfen).“TelnetConfiguration”, “Connect” und “Enter” drücken.“0”, um den Server zu konfigurierenGewünschte <strong>IP</strong>-Adresse eingeben: z.B. 192.168.2.40Alle weiteren Einstellungen nicht verändern und mit “Enter’” bestätigen.“9”, um die Eingaben zu speichen und Telnet zu beendenDer DeviceInstaller kann nun beendet werden.Geben Sie die <strong>IP</strong>-Adresse in einen Browser ein, steht Ihnen ein Lantronix-Web-Interface zur Verfügung. “Name” und “Passwort” könnenleer bleiben. Zur Konfigurationen ist dieses allerdings nur bedingt geeignet.)Geschafft! Nun können Sie sich endlich <strong>IP</strong>-<strong>Symcon</strong> zuwenden.Schritt 4: Verbindung mit <strong>IP</strong>-<strong>Symcon</strong>Nachdem Sie mithilfe Ihres Benutzernamens und Ihres Keys (per E-Mail von <strong>IP</strong>-<strong>Symcon</strong> erhalten) unsere Softwareinstalliert haben, können Sie jetzt Ihren Transceiver mit <strong>IP</strong>-<strong>Symcon</strong> verbinden. Zuvor müssen jedoch die einzelnenGeräte korrekt angeschlossen worden sein. Das genaue Verfahren entnehmen Sie der Bedienungsanleitung des jeweiligenGerätes; ebenfalls die Geräte-ID. Hierfür öffnen Sie die <strong>IP</strong>-<strong>Symcon</strong> Konsole (auf Ihrem Desktop). Danach verbinden Siesich mit einem der <strong>IP</strong>-<strong>Symcon</strong> Server. Wollen Sie beispielsweise das Energiekontrollmodul EKM-868 zusammen mit demLAN-Transceiver verwenden, gehen Sie wie folgt vor: Sie klicken unter “Objekt erstellen” auf “Instanz hinzufügen”,wählen dort auf der linken Seite “<strong>IP</strong>-<strong>Symcon</strong>/Pro Jet” und auf der rechten in unserem Fall für das Energiekontrollmodul“EKM-868” aus und bestätigen zweimal mit “Weiter” und einmal mit “OK”. Nun erscheint das Konfigurationsmenü.Informationen über die einzelnen Auswahlmöglichkeiten finden Sie unter EKM-868.Klicken Sie jetzt auf das Zahnrad (unten links). Bei “Übergeordnete Instanz” findet sich ein sogenannter Serial Port.Dieser ist lediglich für den Funktransceiver USB-T 868 geeignet. Für den LAN-Transceiver müssen Sie eine neue“Übergeordnete Instanz” erstellen. (Dies ist nur bei erstmaliger Installation nötig. Beim Zufügen weiterer Geräte könnenSie diesen Schritt überspringen.) Dies tun Sie, indem Sie auf das Symbol “Neu” (unten links, rechts neben dem Zahnrad)klicken. Hier wählen Sie “Client Socket” und klicken zweimal auf “Weiter” und einmal auf “OK”.Daraufhin machen Sie ein Häkchen vor “Socket öffnen”, geben die <strong>IP</strong>-Adresse des LAN-Transceivers (Näheres: siehe


Schritt 3: Installation) bei Host und bei Port “10001” ein, klicken auf “Übernehmen” und auf “OK” und danach nocheinmal auf “OK”. Um Ihr System auszuprobieren, ziehen Sie das Kontaktkabel am Energiekontrollmodul und klicken auf“Werte auslesen”, danach auf “OK”.Nun klicken Sie auf „Willkommen“ (unten links) und danach unter „WebFront“ auf „WebFront öffnen“. Ihr Browseröffnet daraufhin die Benutzeroberfläche von <strong>IP</strong>-<strong>Symcon</strong> und schon können Sie unter “EKM-868 (Counter)” bei“Counter” die Anzahl der Impulse erkennen. Bei “Current” handelt es sich sozusagen um eine Stoppuhr, die inMillisekunden misst. Sind die Impulse korrekt gewählt (z.B. 2000), dann lässt sich so beispielsweise problemlos derMomentanstromverbrauch in W darstellen (Näheres: siehe EKM-868). Jetzt können Sie Ihr System ganz IhrenBedürfnissen anpassen.Die Einbindung der anderen Geräten des <strong>IP</strong>-<strong>Symcon</strong> Funksystems 868 finden Sie hier:- AKM-868- FD-868- RGBW-868- WDT-868Herzlichen Glückwunsch! Die ersten Schritte für ein automatisiertes Heim sind getan.


AKM-868BeschreibungDas AnwesenheitsKontrollModul AKM 868 besteht aus einer kleinen Fernbedienung im Schlüsselanhängerformat ineinem ovalen Gehäuse (Größe: 55* 44 *15 mm) und einem Repeater. Die Fernbedienung besitzt eine Taste mit einerDoppelfunktion: kurzer und langer Tastendruck. Somit lassen sich zwei Geräte (z.B. Licht und ein Garagentor) ein- oderausschalten. Das Besondere an dieser Fernbedienung ist, dass sie ca. alle 40 Sekunden einen ‘Ping’ sendet. Er besteht auseiner eindeutigen ID, die wiederum von <strong>IP</strong>-<strong>Symcon</strong> ausgewertet wird. Befindet sich die Fernbedienung nicht mehr inReichweite, so wird nach fünf Minuten eine entsprechende Variable auf FALSE gesetzt. Somit können bestimmteSzenarien beim Verlassen oder Betreten der Wohnung gestartet werden.Die Batterie hält mindestens sechs Monate – nach heutigen Erkenntnissen sogar über ein Jahr (reiner Ping-Betrieb). DieDatenübermittlung erfolgt über das 868 MHz Frequenzband.InstallationUm Daten empfangen zu können, muss zuvor unter Windows der virtuelle Comport Treiber von Silicon Labs (CP210x)installiert und der USB-T 868 Funktransceiver angeschlossen werden. In <strong>IP</strong>-<strong>Symcon</strong> muss ‘AKM-868 (Tracker)’hinzugefügt werden. Die übergeordneten Instanzen (z.B. das Gateway) werden automatisch angelegt.KonfigurationUm das Gerät in <strong>IP</strong>-<strong>Symcon</strong> verwenden zu können, fügen Sie eine neue AKM-868 Instanz (Hersteller: <strong>IP</strong>-<strong>Symcon</strong> /ProJet) hinzu:GeräteID:Standardmäßig wird 0 vorgegeben. Dies bedeutet, dass von allen Repeatern Daten empfangen werden können.Um gezielt ein Gerät auszuwählen, kann z.B die 160 gewählt werden. Jumper-Belegung (Blick in das Gerät,Antenne oben, untere 2 Jumper-Paare):160: beide offen161: rechter geschlossen162: linker geschlossen163: beide geschlossenTrackerID:Die ID wird von der Fernbedienung automatisch generiert. Sie bleibt auch nach einem Batteriewechsel erhalten.Um die ID zu ändern, lassen Sie die Taste gedrückt, während Sie die Batterie einlegen.Meistens ist die TrackerID: 8191 (Vorgabe)Wird ein ‘Ping’ empfangen, wird ‘Available’ automatisch auf TRUE gesetzt und zusätzlich der Zeitstempel in ‘Update’aktualisiert. Werden keine ‘Ping’-Signale über eine Dauer von mehr als fünf Minuten (fest, nicht änderbar) empfangen,wird ‘Available’ auf FALSE gesetzt. Zusätzlich können noch die Tasten-Impulse ausgewertet werden. (Bei ‘Special’wurden beide Tasten gleichzeitig gedrückt – alte Version: mit zwei Tasten.)Beachten Sie bitte, dass die Key-Variablen immer auf TRUE verbleiben und sich nur der Zeitstempel ändert.Wird trotz einer neuen Batterie die Fernbedienung nicht erkannt, dann vergeben Sie die TrackerID neu(siehe oben) und lernen Sie anschließend im Tracker-Modul mit “Suchen” neu ein.Tipps & TricksDie Empfangsempfindlichkeit des Repeaters lässt sich auf “HI / LO” einstellen. Dazu muss der Jumper neben demATMEL Prozessor gebrückt werden (niedrige Empfangsempfindlichkeit).Ist die Sendeleistung niedrig (LO) gewählt, kann mit einem zweiten oder dritten Repeater die ungefähre Position derFernbedienung bestimmt werden. Dies ist natürlich stark von den jeweiligen örtlichen Gegebenheiten abhängig. Eine


Unterscheidung - wie z.B. Keller, Garten oder Obergeschoss - sollte jedoch möglich sein.Um die Reichweite der Fernbedienung nochmals deutlich zu erhöhen, kann die SMD-Antenne durch eineDrahtantenne (Lambda-Viertel: 87mm) ersetzt werden. Auf Anfrage ist diese bei uns erhältlich.


FD-868FunktionDas Funkdisplay 868 dient der Anzeige von Text-Meldungen auf einem 2*16-stelligen LC-Display. Zusätzlich können dreiLEDs und ein Tongeber geschaltet werden.Optional ist eine IO-Box (Relais-Platine) mit zwei Ausgängen (10A/250V) sowie zwei Eingängen (TTL +5V) erhältlich.Die bidirektionale Datenübermittlung erfolgt über einen USB-Funktransceiver im 868 MHz Frequenzband.InstallationDas Funkdisplay 868 dient der Anzeige von Text-Meldungen auf einem 2*16-stelligen LC-Display. Zusätzlich können dreiLEDs und ein Tongeber geschaltet werden. Optional ist eine IO-Box (Relais-Platine) mit zwei Ausgängen (10A/250V)sowie zwei Eingängen (TTL +5V) erhältlich. Die bidirektionale Datenübermittlung erfolgt über einen USB-Funktransceiver im 868 MHz Frequenzband.KonfigurationDie folgenden Eigenschaften können wie folgt verändert werden (nicht per Befehl): linke Taste am Display gedrückthalten und Gerät dabei einschalten. Folgen Sie den weiteren Anweisungen auf dem Display.WertGeräte-AdresseBeschreibungStandardmäßig wird die ID:1 vorgegeben. Sind mehr Displays in einem System vorhanden, muss eine neue IDvergeben werden.Gruppen-Adresse Hier können alle Displays z.B. des Erdgeschoss gemeinsam angesprochen werden. Diese Funktion ist bei derersten Generation nicht verfügbar.Broadcast-Adresse Fest: 255 – es werden alle Displays gemeinsam angesprochenTastenklickEin / AusEs darf nur jeweils ein Gerät mit derselben ID in einem Funknetzwerk vorhanden sein.Optional ist eine externe IO-Box (Relais-Platine) mit zwei Ausgängen (10A/250V) sowie zwei Eingängen (TTL +5V)erhältlich. RJ-11-Buchse-Belegung (Display):1 – Eingang 1 / TTL2 – GND3 – Ausgang 1 / Open Collector4 – Ausgang 2 / Open Collector5 – VCC /+5V6 – Eingang 2 / TTLIO-BOX Buchse über der Klemme von ‘Ausgang 1"Tipps & TricksSkripte für eine Menü-Steuerung sind in unserem Forum verfügbar:Link zum ForenbeitragDer Tasten-Klick lässt sich bei der ersten Generation nicht abstellen.Er signalisiert dem Bediener, dass der Befehl vom USB-Funk-Transceiver angenommen worden ist (Quittierung).


PJ_LCDTextboolean PJ_LCDText ( integer $InstanzID , integer $Line , string $Text )ParameterlisteInstanzIDID des zu schaltenden GerätsLine Zeilennummer des Display (1 oder 2)TextZeilentext, maximal 16 Zeichen – der Rest wird abgeschnittenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen Text an das FD-868 der ID InstanzID.Da das ‘Komma’ als Steuerzeichen verwendet wird, darf es im Text nicht vorkommen. Der o.g. Befehl ersetzt esautomatisch in einen ‘Punkt’. Sonderzeichen wie z.B. ‘äöü’ dürfen nicht vorkommen.BeispielPJ_LCDText($id_lcd, 1, "ALARM - Meldung"); // Text in Zeile 1 ausgeben


PJ_SwitchLEDboolean PJ_SwitchLED ( integer $InstanzID , integer $LED , boolean $Status )ParameterlisteInstanzIDLEDStatusID des zu schaltenden Geräts1: Rot, 2: Gelb, 3 GrünTrue = Ein / False = AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet eine Leuchtdiode vom FD-868 mit der ID InstanzID ein oder aus.BeispielPJ_SwitchLED($id_lcd,1,False); // RotPJ_SwitchLED($id_lcd,3,True); // Gruen


PJ_Beepboolean PJ_Beep ( integer $InstanzID , integer $ZehntelSekunden )ParameterlisteInstanzIDZehntelSekundenID des zu schaltenden GerätsLänge des Tones in 1/10 SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungGibt ein Tonsignal im FD-868 mit der ID InstanzID aus.BeispielPJ_Beep($id_lcd, 50); // Beep fuer 0,5 Sekunden


PJ_SwitchModeboolean PJ_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden RelaisTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Relais mit der ID InstanzID auf Wert Status.BeispielPJ_SwitchMode($id_lcd, True); //Relais einschalten


EKM-868BeschreibungDas EnergieKontrollModul EKM 868 ist ein 4-Kanal-Zählermodul mit je 32 Bit, das Zählimpulse von vier Eingängensowie deren Dauer erfasst. Die bidirektionale Datenübermittlung erfolgt über einen USB-Funktransceiver im 868 MHzFrequenzband. Es dient der Visualisierung und Hochrechnung von Verbrauchskosten im Zusammenspiel mit <strong>IP</strong>-<strong>Symcon</strong>.Der Zählerstand bleibt solange erhalten, wie eine Spannungsversorgung (9V= Steckernetzteil) besteht. Eine Löschung(Reset) des Zählerstand durch eine Spannungsunterbrechung wird durch <strong>IP</strong>-<strong>Symcon</strong> erkannt; eine Batterie-Pufferung istsomit nicht erforderlich. Den eingeschalteten PC benötigt man nur, um einzelne Werte mit einen Zeitstempel zu versehenund Grafiken zu generieren. Eine Besonderheit des EKM 868 ist es, dass zusätzlich die aktuelle Leistung (Verbrauch)erfasst wird.InstallationUm Zählerdaten abfragen zu können, muss zuvor unter Windows der virtuelle Comport Treiber installiert werden undder USB-Funktransceiver angeschlossen werden.KonfigurationFügen Sie nun eine neue EKM-868 (Hersteller: <strong>IP</strong>-<strong>Symcon</strong> / ProJet) hinzu:WertGeräteIDBeschreibungStandardmäßig wird 128 vorgegeben. Sind zwei EKM in einen System vorhanden, kann im Gerät ein Jumpergesetzt werden: die beiden unteren Pins (Richtung Steckleiste, obere PIN: NC). Die neue ID ist dann 129.ACHTUNG: Sind rote LEDs verbaut (1 bis 4), so ist die ID 129 bei geöffnetem Jumper ! Geräte mit der ID130/131 usw. sind auf Anfrage erhältlich.ZählerID Die ID entspricht den jeweiligen Eingängen (Kanälen): 1,2,3,4Modus: LeseZählerModus: Lese An-ZeitModus: Lese Aus-ZeitImpulseTimer aktiviertEs wird der Zählerstand (Variable: Counter) sowie der zeitliche Abstand in 1/100 Sekunden zwischen zweiImpulsen (Current) ausgelesen.Die Einschaltdauer (Kontakt geschlossen) wird in 1/10 Sekunden zurückgegeben (bei 32 Bit ergibt dies eineZeitspanne von mehr als 13 Jahren!)Die Ausschaltdauer (Kontakt geöffnet) wird in 1/10 Sekunden zurückgegebenBei Stromzählern werden hier die Impulse pro kWh eingetragen. Die Einheit der Variable “Current” ist dannebenfalls kWh. Bei einer 0 ist die Einheit 1/100 Sekunde – also ideal um z.B. den Volumenstrom bei Gas- oderWasser-Zähler zu ermitteln.Bei einem gesetztem Häkchen werden Werte im angegebenen Zeitintervall abgefragt. Diese ist auf ein Minimum


von 60sec limitiert.Test CenterEin Befehl zur Ausgabe von Werten wird an das EMK gesendet. Bei ordnungsgemäßer Installation werden dieVariablen im Objektbaum entsprechend aktualisiert.Achtung:Die Eingänge sind nicht galvanisch getrennt – sie dürfen nicht +5V überschreiten. Bei Draufsicht ist die gemeinsameMasse der vier Eingänge jeweils der rechte Anschluss. An jedem Eingang wurde ein RC-Glied verbaut: 1K als Pull-Upund 100nF an Masse. Ein Schalten z.B. mit einem Reed-Kontakt gegen Masse bewirkt einen Zählimpuls. DieSpannungsversorgung darf =12V nicht überschreiten. Höhere Spannungen oder eine Verpolung führen zu einerZerstörung des Gerätes. Dann ist eine externe Schutzschaltung (Z-Diode, Vorwiderstand) vorzusehen.Tipps & TricksDer interne Zeitmessung (Current) hat eine Auflösung von 16-Bit und 1/100 Taktung.Dies bedeutet, es können Impulsfolgen von einer Länge von maximal 655 Sekunden (fast 11 Minuten) erfasst werden.Bei einem Überlauf wird eine -0- zurückgegeben.Intern wird folgende Formel für die Umrechnung der aktuellen Leistung in Watt verwendet:P = (3600 * 1000) / (Current / 100 * Impulses) [Watt]Wobei “Current” die Zeit zwischen zwei Impulsen in 1/100 Sekunden ist.Zur Anzeige des aktuellen Energieverbrauchs (Energie-Ampel) haben sich in der Praxis Intervalle von 20 Minuten alsoptimal herausgestellt.Stromversorgung: Bitte unbedingt das beiliegende =9V Steckernetzteil verwenden – keinen “Klingel-Trafo”.Intern ist ein Low-Drop 3,3V Spannungswandler verbaut.Der Eingangsspannungsbereich liegt bei =5,0V bis =10,0V. Der innere Kontakt der DC-Buchse ist der Pluspol.Wird der Zähler z.B. durch eine Spannungsunterbrechung gelöscht, so ist dies nicht relevant, da <strong>IP</strong>-<strong>Symcon</strong> diesautomatisch erkennt und bei der Generierung der Grafiken berücksichtigt.Problem: LED leuchtet permanentLösung: Ggf. die Adern des betreffenden Zählereingangs tauschen (elektronisch) oder warten bis der Zähler sichweiter dreht und den Reed-Kontakt freigibt (mechanisch).Technische DatenAbmessungen (ohne Antenne): 70 * 70 * 25 mmGewicht: 100gStromversorgung: 9V bis 12V DC / 100 mA / Anschluss: DC-Buchse für Hohlstecker 2,1mm4 * S0 Eingänge / 4 * 32-Bit Zähler (TTL – 5V)maximale Zähl-Frequenz: 100 Hzminimale Impulslänge: 20 msec (intern für mechanische Kontakte entprellt)Schutzklasse: <strong>IP</strong> 20Funkmodul: 868MHz (PC-Funk-Interface: USB-T 868 ist nicht im Lieferumfang)


PJ_RequestStatusboolean PJ_RequestStatus ( integer $InstanzID )ParameterlisteInstanzIDID des GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFragt die aktuellen Werte für das Gerät mit der ID InstanzID ab und schreibt diese in die entsprechenden Status-Variablen.Diese Funktion belastet den Funkverkehr erheblich. Sie sollte ausschließlich verwendet werden, wenn der interneTimer nicht eingesetzt werden soll, um ungleichmäßige Intervalle zu realisieren. Eine ständige Abfrage der Werteblockiert ggf. den Funkverkehr anderer Teilnehmer.BeispielPJ_RequestStatus(12345); //Werte abfragen


RGBW-868Bedienungsanleitung als PDFBeschreibungDer LED-Stripe Controller dient der Ansteuerung von LED-Stripes, um unterschiedliche Licht-Szenarien undStimmungen in Wohnräumen zu ermöglichen.InstallationUm mit dem Controller zu kommunizieren, muss zuvor der virtuellen Comport Treiber installiert und der USB-Funktransceiver angeschlossen werden. In <strong>IP</strong>-<strong>Symcon</strong> muss ‘RGBW-868 (Stripe)’ hinzugefügt werden. Dieübergeordneten Instanzen (z.B. das Gateway) werden automatisch angelegt. Bitte überprüfen Sie, ob hier der richtigeCOM-Port ausgewählt wurde.KonfigurationWertGeräte-AdresseBeschreibungStandardmäßig wird die ID:144 vorgegeben. Sind mehr Controller in einem System vorhanden, muss eine neue IDvergeben werden. Die Jumper-Belegung entnehmen Sie bitte der Bedienungsanleitung. Hinweis: Ggf. sind dieAdressen: 149,150 und 151 vom System belegt.Broadcast-Adresse Fest: 254 – Es werden alle Controller gemeinsam angesprochen.Es darf nur jeweils ein Gerät mit der selben ID in einem Funknetzwerk vorhanden sein.Ein erster TestFür einen schnellen ersten Funktionstest klicken Sie mit der rechten Maustaste auf das ‘RGBW-868 (Stripe)’ Modul, dannauf ‘Objekt öffnen’ (oder Doppelklick) und wählen eine Farbe, bzw. -wenn angeschlossen- einen Helligkeitswert für denWeiß-Kanal. Anschließend betätigen Sie ‘RGBW setzen’. Die LED-Stripe leuchtet nun in der gewünschten Farbe.Bei Problemen überprüfenBeim Einschalten der 12V Spannungsversorgung blitzt der LED-Stripe kurz auf.Die rote LED auf der Platine leuchtet ebenfalls hell auf und blinkt dann gleichmäßig (sehr) schwach weiter.Alle Jumper offen bedeutet Adresse 144.Werden Befehle empfangen, leuchtet die LED zusätzlich.


Werden Befehle gesendet, leuchtet die Rx/Tx LED auf dem USB-TDer Splitter ‘ProJet Gateway’ muss mit dem richtigen COM-Port verbunden seinTipps & TricksZusätzlich zu den Lichtstimmungen lassen sich auch z.B. blinkende Warnmeldungen oder blitzende Hinweis ausgeben.Diese können durch die beiden Tatsteingänge des Controllers positiv (als JA) oder negativ (als NEIN) quittiert werden, dadas verwendete Funksystem bidirektional ist. In <strong>IP</strong>-<strong>Symcon</strong> muss dazu das ‘FD-868 (Stripe) Input’ Modul hinzugefügtwerden.


PJ_RunProgramboolean PJ_RunProgram ( integer $InstanzID , integer $Programm )ParameterlisteInstanzIDProgrammID des zu schaltenden Geräts0 – alle RGBW auf Aus; 1 – alle RGBW auf den letzten Helligkeits-Wert; 2- Blinken langsam; 3- Blinken schnell;4- Blitzen (Flash) langsam; 5- Blitzen (Flash) schnell; 6- An- u. Abschwellen (Fade) langsamRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen Programm-Befehl an den RGBW-868 Controller der ID InstanzID.Beispiel//LEDs schnell blinken lassenPJ_RunProgram(12345, 3);


PJ_DimRGBWboolean PJ_DimRGBW ( integer $InstanzID , integer $R , integer $RZeit , integer $G , integer $GZeit , integer $B, integer $BZeit , integer $W , integer $WZeit )ParameterlisteInstanzIDRID des zu schaltenden GerätsHelligkeitswert 0 (aus) bis 255 (an, maximale Helligkeit)RZeit In Sekunden in die der gewünschte Helligkeitswert erreicht werden soll: 0 (sofort) bis 2550 Sekunden (42,5Minuten)GHelligkeitswert 0 (aus) bis 255 (an, maximale Helligkeit)GZeit In Sekunden in die der gewünschte Helligkeitswert erreicht werden soll: 0 (sofort) bis 2550 Sekunden (42,5Minuten)BHelligkeitswert 0 (aus) bis 255 (an, maximale Helligkeit)BZeit In Sekunden in die der gewünschte Helligkeitswert erreicht werden soll: 0 (sofort) bis 2550 Sekunden (42,5Minuten)WHelligkeitswert 0 (aus) bis 255 (an, maximale Helligkeit)WZeit In Sekunden in die der gewünschte Helligkeitswert erreicht werden soll: 0 (sofort) bis 2550 Sekunden (42,5Minuten)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen Dimm-Befehl an den RGBW-868 Controller der ID InstanzID.Der Wert für die Zeit ist intern in zwei Bereiche unterteilt. Werden Zeiten über 255 Sekunden angegeben, werdenautomatisch alle Zeiten, die kleiner als 255 waren auf 255 gesetzt. Dieser Bereich ist für langsame Szenarien zumAufwecken oder in Terrarien gedacht.Beispiel//in 2 Sekunden auf Gelb dimmenPJ_DimRGBW(12345,255,2,255,2,0,0,0,0);


WDT-868BeschreibungDer Watch-Dog-Timer dient der Überwachung von PC-Systemen bzw. einzelnen Programmen. Hierzu wird zyklisch ein“Lebenszeichen” vom PC an den WDT gesendet. Wird dies nicht korrekt empfangen, kann über einen potentialfreienKontakt z.B. eine Sirene angesteuert oder ein Hardware-Reset ausgeführt werden.Zusätzlich kann das UM-Relais (5A/230V) ein- und ausgeschaltet oder über einen Timer (bis 65.535 Sek.) angesprochenwerden. Das Gerät verfügt außerdem über einen Tast-Eingang zur freien Verfügung. Der Status wird als Variable in <strong>IP</strong>-<strong>Symcon</strong> dargestellt.InstallationUm Daten empfangen zu können, muss zuvor unter Windows der virtuelle Comport Treiber von Silicon Labs (CP210x)installiert und der USB-T 868 Funktransceiver angeschlossen werden. In <strong>IP</strong>-<strong>Symcon</strong> muss ‘WDT-868" hinzugefügtwerden. Die übergeordneten Instanzen (z.B. das Gateway) werden automatisch angelegt.KonfigurationBei der GeräteID wird standardmäßig 165 vorgegeben (Position 0). Diese kann durch Drehen des Codier-Schalters bis174 (Position 9) verändert werden.VariableInputStatusTimerBeschreibungFalse: Taster offen / True: Taster gedrücktFalse: Relais stromlos / True: Relais angezogenZeit in Sekunden, nach der das Relais seinen Status wechseltNach Ablauf des Timers sendet der WDT den neuen Zustand des Relais. Die Status-Variable wird entsprechendaktualisiert (keine Simulation).Bei einem aktiven Timer blinkt die LED im Sekundentakt.Ein kurzes Blitzen signalisiert Funkbefehle im <strong>IP</strong>-<strong>Symcon</strong>-868-Funksystem.Es darf nur jeweils ein Gerät mit derselben ID in einem Funknetzwerk vorhanden sein.Tipps & TricksAn die beiden Kontakte das Tasters kann z.B. auch ein externer Schalter (Klingel, Bewegungsmelder, Lichtschranke usw.)angeschlossen werden.


PJ_SwitchModeboolean PJ_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen Schalt-Befehl an das WDT-868 Modul der ID InstanzID.BeispielPJ_SwitchMode(12345, True);


PJ_SwitchDurationboolean PJ_SwitchDuration ( integer $InstanzID , boolean $Status , integer $Dauer )ParameterlisteInstanzIDStatusDauerID des zu schaltenden GerätsTRUE für An, FALSE für AusEin- oder Ausschaltdauer in SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Relais vom WDT mit der ID InstanzID auf Wert Status für Dauer SekundenDas <strong>IP</strong>-<strong>Symcon</strong> 868 Funksystem ist bidirektional. Dadurch sendet der WDT den neuen Status des Relais nach Ablaufdes Timer.Beispiel//Der folgende Befehl schaltet das Relais 60 Sekunden ein:PJ_SwitchDuration(12345, True, 60);


JKM-868 (LevelJET)BeschreibungDer JKM-868 (LevelJET) dient dem Auslesen der einzelnen Werte der LevelJET Füllstandsanzeige.InstallationUm Daten empfangen zu können, muss zuvor unter Windows der virtuelle Comport Treiber von Silicon Labs (CP210x)installiert und der USB-T 868 Funktransceiver angeschlossen werden. In <strong>IP</strong>-<strong>Symcon</strong> muss ‘JKM-868 (LevelJET)"hinzugefügt werden. Die übergeordneten Instanzen (z.B. das Gateway) werden automatisch angelegt. Alternativ kannauch das 868-LAN-Gateway verwendet werden. Als 'Übergeordnete Instanz' muss ein Client Socket mit denentsprechenden Einstellungen ausgewählt werden.KonfigurationBei der GeräteID wird standardmäßig 166 vorgegeben und muss zu der Adresse des jeweiligen Gerät hinzuaddiertwerden. Beispiel: der LevelJET hat die Adresse 12 - also muss hier die 178 eingetragen werden.VariableDistanceOutput (1)Output (2)BeschreibungAnstand in cmZustand des 1. RelaisZustand des 2. RelaisTipps & TricksUm das Volumen in Liter zu berechnen müssen eigene PHP-Skripte erstellt werden.


JKM-868 (ThermoJET)BeschreibungDer JKM-868 (ThermoJET) dient dem Auslesen der einzelnen Werte des ThermoJET Temperaturreglers.InstallationUm Daten empfangen zu können, muss zuvor unter Windows der virtuelle Comport Treiber von Silicon Labs (CP210x)installiert und der USB-T 868 Funktransceiver angeschlossen werden. In <strong>IP</strong>-<strong>Symcon</strong> muss ‘JKM-868 (ThermoJET)"hinzugefügt werden. Die übergeordneten Instanzen (z.B. das Gateway) werden automatisch angelegt. Alternativ kannauch das 868-LAN-Gateway verwendet werden. Als 'Übergeordnete Instanz' muss ein Client Socket mit denentsprechenden Einstellungen ausgewählt werden.KonfigurationBei der GeräteID wird standardmäßig 166 vorgegeben und muss zu der Adresse des jeweiligen Gerät hinzuaddiertwerden. Beispiel: der ThermoJET hat die Adresse 4 - also muss hier die 170 eingetragen werden. Der ThermoJET besitzt8 Eingänge - sind mehr als 4 Temperaturführer angeschlossen, so muss eine zweite JKM-Instanz mit der Modus-Einstellung: 'Eingang (5-8)' in <strong>IP</strong>-<strong>Symcon</strong> hinzugefügt werden.VariableOutput (1)Output (2)BeschreibungZustand des 1. RelaisZustand des 2. RelaisTemperature(1..4) Temperatur-Wert in °CHinweis: Ist kein Fühler angeschlossen, wird -99,9°C ausgegebenWird eine zweite Instanz für den Eingang 5-8 erstellt, so heißen die neuen Variablen trotzdem Temperatur 1-4. Siekönnen diese bei Bedarf umbenennen. Die Variablen für die Ausgänge 1+2 sind in beiden Modi gleich.


FS10 WetterDas FS10 Funk-System ist das Vorgängersystem vom FS20-System und arbeitet im 433 MHz Bereich. Sämtliche Gerätesind nicht mehr im freien Handel verfügbar.Die interne Codierung ermöglicht bis zu 392 Codevarianten. Um die FS10 Wetter-Komponenten der WS2000er Serie mit<strong>IP</strong>-<strong>Symcon</strong> auswerten zu können, benötiget man den PC-Wettersensor der Firma ELV. Dieser wird einfach an die serielleSchnittstelle angeschlossen und somit können leicht bestehende Wetterkomponenten mit in das Haussteuerungssystemintegriert werden. Zur Erhöhung der Empfangsqualität empfiehlt sich der Einbau eines Superhet Empfängers.InstallationFür den Wetterempfänger ist keine besondere Installation nötig. Es ist nur ein Anschluss an den Seriellen Port notwendig.KonfigurationBevor Sie die Suche starten können, müssen Sie noch die übergeordnete Instanz konfigurieren, indem Sie denkorrekten Com Port angeben und die Konfiguration übernehmen. Die Einstellung von Baudrate ect. ist nichtnotwendig, da Sie vom System automatisch vorgenommen wird.Der Suchdialog zeigt ein Gerät erst an, wenn Daten empfangen wurden. Bei einer Fernbedienung können Sie dieTasten drücken, um einen Sendevorgang aufzurufen. Bei Temperatursensoren müssen Sie das nächste Intervallabwarten oder die ID manuell angeben.Sobald Sie eine ID angegeben haben, müssen Sie die Konfiguration übernehmen. Dadurch werden auch die passendenStatus-Variablen automatisch erstellt.


ALLNET<strong>IP</strong>-<strong>Symcon</strong> unterstützt den “Steuer- u. Messcomputer All4000! – für ihn sind zahlreiche Sensoren und Aktorenverfügbar. Der ALL4000 wird über seine 100Mbit-Ethernet-Schnittstelle an das Netzwerk angeschlossen, und stellt einenWebserver zur Verfügung, auf dem in übersichtlicher Form die Messwerte grafisch und numerisch angezeigt werden.Alle Produkte besitzen einen eigenen Webserver zur Konfiguration.Hersteller und weitere Produktinfos als PDF: http://www.allnet.deListe der unterstützten Geräte:ProduktbezeichnungALL3000ALL3000RF MK2ALL3073ALL3075ALL3075 V2ALL3076ALL3090 / All 3096ALL3100ALL3270ALL3275ALL3418ALL3418 V2ALL3421ALL3690ALL3691ALL4000ALL4001ALL4075ALL4076ALL4100ALL4500ALL5000BeschreibungInternet ThermometerSteuerungseinheit für Intertechno FunksteckdosenNetzwerksteckdose zum Schalten über LAN/W-LANNetzwerksteckdose zum Schalten über LANNetzwerksteckdose zum Schalten über LAN (inkl. Verbrauchsmessung)Netzwerksteckdose zum Dimmen über LAN8 Port Reset SwitchEthernet Power SwitchNarrowband Powerline Master Ethernet Bridge / Vorraussetzung für:Narrowband Powerline Slave Steckdose zum Schalten über Powerline<strong>IP</strong> Triometer<strong>IP</strong> Triometer<strong>IP</strong> TriometerPM1 PowerMeter (3 Phasen)PM2 PowerMeter (2x3 Phasen, 2xS0, 2xD0)Ethernet SensormeterHUT Ethernet Sensormeter für Hutschiene4-fach Netzwerkrelais (LAN/WLAN)6-fach <strong>IP</strong> Steckdosenleiste8 Port Power Switch 19! mit 8 KaltgerätesteckdosenSensoric Appliance<strong>IP</strong> Facility Control Server


ALL_SwitchModeboolean ALL_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert StatusBeispielALL_SwitchMode(12345, true); //Gerät einschalten


1-WireDas 1-Wire Bussystem ähnelt dem I2C. Es lassen sich auf einfache Weise verschiedene Sensoren an ein normales 3-adriges Kabel (Masse, Daten, und +5V) anschließen. Für den Anschluss an einen PC steht ein USB-Adapter (DS9490R)oder ein serielles Interface (DS9097U-S09) zur Verfügung.Derzeit werden folgende 1-Wire Komponenten unterstützt:DS18B20 / Thermometer 55°C bis +125°C, 0.5 genau bei -10°C bis +85°CDS18S20 / ThermometerDS2405 / 1-fach: Switch & Input (PIO)DS2406 / 2-fach: Switch & Input (PIO)DS2413 / 2-fach: Switch & Input (PIO)DS2408 / 8-fach: Switch & Input (PIO)DS2408+ / 8-fach: Switch & Input (PIO)DS2450 / A/D-WandlerDS2890 / Digital PotentiometerDS2423P / 4KB ZählerDS2438 / Strom- und SpannungsmessungWeitere Links:Wikipedia: http://de.wikipedia.org/wiki/1-WireHersteller: http://www.maxim-ic.com/products/1-wireVideo-Tutorial zur EinrichtungLaden …InstallationVoraussetzung für den Betrieb mit <strong>IP</strong>-<strong>Symcon</strong> ist der aktuelle 1-Wire Treiber (TMEX), der auf folgender MAXIM Seitezu beziehen ist: http://www.maxim-ic.com/products/ibutton/software/tmex/index.cfmDie ordnungsgemäße Funktion des Busses und die daran angeschlossenen Komponenten sollte mit dem“OneWireViewer” überprüft werden: http://www.maximic.com/products/ibutton/software/1wire/OneWireViewer.cfm<strong>IP</strong>-<strong>Symcon</strong> unterstützt nicht den parasitären Modus.Eine +5V Spannungsversorgung ist zwingend notwendig!Weitere Hinweise entnehmen Sie bitte der Bedienungsanleitung sowie der Produktbeschreibung des Herstellers.Tipps & TricksDer serielle Adapter hat eine andere Pinbelegung als der USB-Adapter und liefert keine +5V Busspannung.Zur Spannungsversorgung wird ein stabilisiertes 5V-Netzteil mit Strombegrenzung empfohlen.


Für kleinere Systeme empfehlen wir ein Modular-Kabel mit RJ12 oder RJ45 Stecker zum Selbercrimpen und zurVerteilung eine 3er-Modular-Buchse. Das System wird dann 1:1 verkabelt (sternförmige Abzweigungen).KonfigurationWenn Sie mehrere Adapter verwenden, können diese unter “Übergeordnete Instanz” angewählt werden. Wie sie eineneue übergeordnete Instanz erstellen können, finden Sie hier.Geräte sollte im Suchdialog sofort oder nach einer kurzen Verzögerung angezeigt werden. Nach Auswahl einesGerätes muss die Konfiguration übernommen werden, bevor die erweitere Konfiguration sichtbar wird.Leider versenden die angeschlossenen Bausteine am 1-Wire-Bus nicht automatisch ihre Werte – sie müssen angefragtwerden. Wie oft dies geschehen soll, dass können Sie im Timer angeben:Jede Abfrage kosten Zeit und belegt den Bus. Darum sollte man sparsam mit dem “Timer” umgehen. In der Praxis istz.B. ein Abfragezyklus von 60 Sekunden, um eine Zimmertemperatur auszulesen, mehr als ausreichend. KleinereWerte unter einer Sekunde können aus den o.g. Gründen nicht eingestellt werden.Desweiteren sollte man beachten, dass je mehr Geräte an einem Adapter angeschlossen werden, die Busauslastung steigt.In unserem Musterhaus laufen 30 Geräte an einem Adapter ohne Probleme. Wir empfehlen bei größeren Installationeneine eigene Spannungsversorgung sowie mehrere Adapter einzusetzen.


DS2405Der DS2405 ist ein 1-fach Switch (4mA) & Input (PIO) Baustein.Leider wird er nicht mehr hergestellt. Als Ersatztyp empfehlen wir den DS2413.Wahlweise können Sie den Pin als “Digitaler Ausgang” oder “Digitaler Eingang” einstellen.Zusätzlich lässt sich der ”Status invertieren” (siehe DS2413).Zu Testzwecken haben Sie die Möglichkeit, Ausgang “AN" und “AUS” zu schalten.


TMEX_F05_TogglePinboolean TMEX_F05_TogglePin ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungWechselt den Zustand des Geräts mit der ID InstanzID. Der aktuelle Wert kann nach dem Vorgang in der StatusVariable abgefragt werden.BeispielTMEX_F5_TogglePin(12345); //Gerät togglen


TMEX_F05_SetPinboolean TMEX_F05_SetPin ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Zustand des Geräts mit der ID InstanzID auf Wert StatusDa der Baustein kein definiertes Setzen unterstützt, funktioniert der Befehl auf dem Prinzip, den Eingang zu lesenund für den Fall, dass Status Eingangsstatus ist, den Ausgang des Bausteins zu toggeln. Beim Design externerSchaltungen sollte dies unbedingt beachtet werden.BeispielTMEX_F05_SetPin(12345, true); //Gerät einschalten


DS2406


TMEX_F12_SetPinboolean TMEX_F12_SetPin ( integer $InstanzID , integer $Pin , boolean $Status )ParameterlisteInstanzIDID des zu schaltenden GerätsPin Pin des Bausteins (0..1)StatusTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Zustand des Geräts mit der ID InstanzID auf Wert StatusBeispielTMEX_F12_SetPin(12345, 0, true); //Gerät einschalten


DS2408Der DS2408 und DS2408+ ist ein 8-fach Switch & Input (PIO) Baustein.Wahlweise können Sie jeden der acht Kanäle als “Digitaler Ausgang” oder “Digitaler Eingang” einstellen.Zusätzlich lässt sich der ”Status invertieren” (siehe DS2413).Zu Testzwecken haben Sie die Möglichkeit, Ausgang “AN" und “AUS” zu schalten.


TMEX_F29_SetPinboolean TMEX_F29_SetPin ( integer $InstanzID , integer $Pin , boolean $Status )ParameterlisteInstanzIDID des zu schaltenden GerätsPin 0-7StatusTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Zustand vom Pin Pin des Geräts mit der ID InstanzID auf Wert StatusBeispielTMEX_F29_SetPin(12345, 2, true); //Pin 2 vom Gerät einschalten


TMEX_F29_SetPortboolean TMEX_F29_SetPort ( integer $InstanzID , integer $Bitmaske )ParameterlisteInstanzIDBitmaskeID des zu schaltenden Geräts0-255 (Bit0 = Pin0 … Bit7 = Pin7)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Zustand von allen acht Pins auf den Wert von Bitmaske des Geräts mit der ID InstanzID.BeispielTMEX_F29_SetPort(12345, 0); //Alles ausschalten


TMEX_F29_SetStrobeboolean TMEX_F29_SetStrobe ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungErmöglicht es, den RSTZ-Pin des DS2408 des Geräts mit der ID InstanzID auf Wert Status zu setztenBeispielTMEX_F29_SetStrobe(12345, true); //Strobe einschalten


TMEX_F29_WriteBytesboolean TMEX_F29_WriteBytes ( integer $InstanzID , string $Daten )ParameterlisteInstanzIDDatenID des zu schaltenden GerätsFolge von Bytes, die versendet werden sollenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt eine Abfolge von Bytes (Daten) über alle Pins des Geräts mit der ID InstanzID ab.Nur als Output definierte Pins werden beschrieben.BeispielTMEX_F29_WriteBytes(12345, Chr(0).Chr(1)); //Abfolge senden


TMEX_F29_WriteBytesMaskedboolean TMEX_F29_WriteBytesMasked ( integer $InstanzID , string $Daten , integer $Maske )ParameterlisteInstanzIDDatenMaskeID des zu schaltenden GerätsFolge von Bytes, die versendet werden sollenBitmaske der Bit die gesetzt werden sollenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt eine Abfolge von Bytes (Daten)unter Berücksichtung einer Bitmaske Maske über alle Pins des Geräts mit der IDInstanzID ab.Nur als Output definierte Pins werden beschrieben!BeispielTMEX_F29_WriteBytesMasked(12345, Chr(255), Chr(1)); //Nur Bit 0 setzen


DS2413Der DS2413 ist ein 2-fach Switch & Input (PIO) Baustein.Seine Ausgänge können 20mA liefern. Weitere Einzelheiten entnehmen Sie bitte dem Datenblatt.Definition des “Status Pins”:Ein logischer Low-Pegel am Ausgang wird als “Aus” / “False” gewertet (hierbei ist der interne Transistor aktiv).Wird z.B. eine LED mit gemeinsamer Anode angeschlossen, leuchtet diese bei “Status Pin = Aus”.In diesem Fall sollte “Status invertieren” aktiviert werden.Wird ein Pin als “Digitaler Eingang” verwendet, so ist darauf zu achten, dass der DS205 kein Latch besitzt. Es werdenalso keine Schaltimpulse gespeichert.Um z.B. einen PIRI (Bewegungsmelder) auszuwerten, sollte der Timer auf zehnSekunden eingestellt werden. Zusätzlich ist am Eingang, ein Widerstand 1M sowie ein Kondensator 10µF vorzusehen.Beide werden gemeinsam mit 0V verbunden. Ein Schaltimpuls zieht den Eingang kuzfristig auf +5V. Der Kondensatorpuffert solange die Spannung, bis der nächste Abfragezyklus den Pin als HI erkennt.


TMEX_F3A_SetPinboolean TMEX_F3A_SetPin ( integer $InstanzID , integer $Pin , boolean $Status )ParameterlisteInstanzIDID des zu schaltenden GerätsPin 0-1StatusTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Zustand vom Pin Pin des Geräts mit der ID InstanzID auf Wert StatusBeispielTMEX_F3A_SetPin(12345, 0, true); //Pin 0 einschalten


DS2450Der DS2450 ist ein A/D-Wandler-Baustein mit einer Auflösung von bis zu 16-Bit.Zusätzlich können die vier Kanäle auch als Ausgang (4mA) verwendet werden.Weitere Einzelheiten entnehmen Sie bitte dem Datenblatt.KonfigurationWahlweise können Sie jeden der vier Kanäle als “Digitaler Ausgang” oder “Analoger Eingang” einstellen.Zusätzlich sind zwei Spannungsbereiche wählbar: 2,55V sowie 5,1V.Desweiteren ist die Auflösung zwischen 1-Bit und 16-Bit frei einstellbar:


TMEX_F20_SetPinboolean TMEX_F20_SetPin ( integer $InstanzID , integer $Pin , boolean $Status )ParameterlisteInstanzIDPinStatusID des zu schaltenden Geräts0-3 (A-D)TRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Zustand vom Pin Pin des Geräts mit der ID InstanzID auf Wert StatusBeispielTMEX_F20_SetPin(12345, 2, true); //Pin C vom Gerät einschalten


DS2438Der DS2438 ist ursprünglich ein “Smart Battery Monitor”.Für den Einsatz in der Hausautomation besitzt er vier interessante Eigenschaften:Ein Spannungsmesser, dieser liefert die Busspannung – ideal um diese zu überwachen (VDD)Ein Thermometer – kann man immer gebrauchen (Temperatur)Ein AD-Wandler (VAD) – kann u.a. zur Messung der Feuchtigkeit oder Helligkeit verwendet werdenEinen Stromeingang (XSENS) - zur freien VerfügungPraxisbeispiel: FeuchtigkeitsmessungDer Feuchtigkeitsfühler HIH-4000 von HONEYWELL besitzt eine Genauigkeit von 3,5% im Bereich von 0 to 100%RH.Wegen seines linearen Ausgangs kann er direkt mit dem DS2438 ausgelesen werden. Da dieser einen internenTemperatur-Sensor hat, kann auch eine Temperatur-Kompensation berücksichtigt werden.Wie es geht, veranschaulicht das folgende Skript:$Vad = GetValue(44045);$Vdd = GetValue(14570);$temp = GetValue(18691;$Srh = ($Vad - 0.958062) * 30.680;$Srh = $Srh / ((1.0305 + (0.000044 * $temp) - (0.0000011 * pow($temp,2))));echo "Feuchte: $Srh %rh Temp.Comp.\n";SetValue(49935 /*[Feuchte %rh]*/, $Srh);


DS2490Der DS2490 ist ein Digital-Potentiometer mit 8-Bit-Auflösung.Leider wird er nicht mehr hergestellt. Einen Ersatztyp gibt es leider nicht.Um auf dem 1-Wire-Center 0 bis 10V auszugeben, sollte “CHARGE PUMP CONSIDERATIONS” verwendet werden.Hierzu aktivieren Sie “Benutze CPC”.Für einen Test kann der Schieberegler verändert werden und “SETZEN” gedrückt werden.


TMEX_F2C_SetPositionboolean TMEX_F2C_SetPosition ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert 0-255RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt das Gerät mit der ID InstanzID auf Wert WertBitte beachten Sie den CPC Parameter in der Konfiguration.BeispielTMEX_F2C_SetPosition(12345, 123); //Gerät auf den Wert 123 setzen


TMEX_RequestReadboolean TMEX_RequestRead ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFührt einen erneuten Lesevorgang für das Gerät mit der ID InstanzID aus.Sobald die Funktion ausgeführt wurde, sind die neuen Werte in den Status-Variablen abrufbar.BeispielTMEX_RequestRead(12345); //Gerät auslesen


LCNLCN (Local Control Network) ist ein Installationsbus-System für Wohn- und Gewerbegebäude. Es integriert die gesamteGebäudeinstallation in einem Bussystem. Wo bisher Schalter saßen, werden jetzt kleine Controller eingebaut. Alle Modulewerden über eine zusätzliche Ader der gewöhnlichen Installationsleitung miteinander verbunden. Über dieser Ader undden Neutralleiter tauschen die LCN-Module untereinander Nachrichten aus. Ein wesentlicher Vorteil ist, dass die Moduleabsolut selbständig arbeiten. Sie brauchen weder eine eigene Stromversorgung, noch eine spezielle Zuleitung. Außerdembieten sie immer gleich mehrere Funktionen: Zwei Schaltausgänge und zwei/drei unabhängige Eingänge ermöglichen es,mit weniger Modulen und weniger Verdrahtungsaufwand auszukommen, als das bisher nötig war.Die Kommunikation mit <strong>IP</strong>-<strong>Symcon</strong> erfolgt mit einem Buskoppler LCN-PK (RS-232) und einem Koppelprogramm, derso genannten “PCHK”.Wichtig für Neubauten und Bauherren, die sich noch nicht entscheiden können:Bei der Planung 5-adriges NYM-Kabel verlegen und tiefe Unterputzdosen verwenden. Eine Investition von nur wenigenhundert Euro, die sich später bezahlt macht.Die neuen Module mit 12 Variablen (ab Firmware 160B13) werden mit <strong>IP</strong>-<strong>Symcon</strong> 3.0 unterstützt.Video-Tutorial zur EinrichtungLaden …InstallationUm ihren LCN-Bus an <strong>IP</strong>-<strong>Symcon</strong> anschließen zu können, benötigen Sie einen Bus-Koppler (LCN-PK) und dieMiddleware-Software PCHK (Alternativ: LinHK).Sobald alle diese Komponenten vorhanden und installiert sind, können Sie mit der Einrichtung in <strong>IP</strong>-<strong>Symcon</strong> beginnen.Auf der Willkommensseite der Verwaltungskonsole können Sie über “Konfigurator hinzufügen” einen Konfigurator fürihr LCN System erstellen, welches die Einrichtung wesentlich erleichtert und ihnen viel Handarbeit abnimmt.KonfiguratorSobald Sie einen Konfigurator erstellt haben, werden Sie unter Umständen eine rote Meldung im unteren Bereich finden,die Sie auf eine fehlerhafte oder unvollständige Konfiguration hinweist. Öffnen Sie die übergeordnete Instanz (Zahnrad-Icon), um ihren Benutzernamen und das Passwort anzugeben. Bestätigen Sie die Änderung mit Übernehmen.Falls Sie nach dem Übernehmen nicht eingeloggt sind, überprüfen Sie bitte Ihre Netzwerkkonfiguration.


Bestätigen Sie die Konfiguration mit “OK”, um zum Konfigurator zurückzukehren.Im Konfigurator können Sie nun Ihren Bus nach Modulen durchsuchen, diese in <strong>IP</strong>-<strong>Symcon</strong> erstellen und die einzelnenKomponenten (Ausgänge, Relais…) als <strong>IP</strong>-<strong>Symcon</strong> Instanzen anlegen lassen.Module konfigurierenSobald Sie im Konfigurator ein Modul erstellt haben und auf die Konfigurationstaste drücken, öffnet sich ein neuerDialog, in dem Sie auswählen können, welche Ein-/Ausgänge an ihrem Modul angeschlossen sind und in <strong>IP</strong>-<strong>Symcon</strong>erstellt werden sollen.Um die einzelnen Instanzen erstellen zu lassen, wählen Sie bitte die gewünschten Geräte aus und drücken im Nachhineinauf die “Instanzen aktualisieren”-Taste.Dadurch werden neu ausgewählte Geräte hinzugefügt und abgewählte Geräte wieder entfernt. Neu hinzugefügte Gerätewerden in der Hauptkategorie von <strong>IP</strong>-<strong>Symcon</strong> erstellt und müssen dann entsprechend benannt und einsortiert werden.


LCN_SwitchModeboolean LCN_SwitchMode ( integer $InstanzID , integer $Rampe )ParameterlisteInstanzIDRampeID des zu schaltenden GerätsAnzahl Sekunden, 0 = SofortRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID um.BeispielLCN_SwitchMode(12345, 0); //Gerät sofort umschalten


LCN_SwitchMemoryboolean LCN_SwitchMemory ( integer $InstanzID , integer $Rampe )ParameterlisteInstanzIDRampeID des zu schaltenden GerätsAnzahl Sekunden, 0 = SofortRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf einen abgespeicherten WertBeispielLCN_SwitchMemory(12345, 0); //Gerät sofort schalten


LCN_SetIntensityboolean LCN_SetIntensity ( integer $InstanzID , integer $Intensität , integer $Rampe )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität 0-100%Rampe0 = Sofort; n = SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert Intensität in Rampe SekundenBeispielLCN_SetIntensity(12345, 100, 0); //Gerät auf 100% sofort dimmen


LCN_AddIntensityboolean LCN_AddIntensity ( integer $InstanzID , integer $Intensität )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität 0-100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID um den Wert Intensität heller.BeispielLCN_AddIntensity(12345, 50); //Gerät um 50 Prozentpunkte heller dimmen


LCN_DeductIntensityboolean LCN_DeductIntensity ( integer $InstanzID , integer $Intensität )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität 0-100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID um den Wert Intensität dunkler.BeispielLCN_DeductIntensity(12345, 10); //Gerät um 10 Prozentpunkte dunkler dimmen


LCN_FadeOutboolean LCN_FadeOut ( integer $InstanzID , integer $Intensität , integer $Rampe )ParameterlisteInstanzIDID des zu schaltenden GerätsIntensität 0-100%Rampe0-200 SekundeRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt das Gerät mit der ID InstanzID auf Wert Intensität und dimmt dann mit der Rampe Sekunden auf 0%herunter.BeispielLCN_FadeOut(12345, 100, 5); //Gerät von 100% in 5 sekunden runterdimmen auf 0%


LCN_StartFlickerboolean LCN_StartFlicker ( integer $InstanzID , string $FlackerTiefe , string $Geschwindigkeit , integer $AnzahlFlackerhübe )ParameterlisteInstanzIDID des zu schaltenden GerätsFlackerTiefeG = Gering; M = Mittel; S = StartGeschwindigkeit L = Langsam (ca. 0,5x / Sek); M = Mittel (ca. 1x / Sek); S = Schnell (ca. 2x / Sek)AnzahlFlackerhübe Anzahl zwischen 1..15RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDas Gerät mit der ID InstanzID auf Flackern lassenBeispielLCN_StartFlicker(12345, "G", "L", 5);


LCN_StopFlickerboolean LCN_StopFlicker ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFlackern des Geräts mit der InstanzID sofort beendenBeispielLCN_StopFlicker(12345);


LCN_RampStopboolean LCN_RampStop ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungStoppt den Dimmvorgang von Gerät mit der ID InstanzIDBeispielLCN_RampStop(12345);


LCN_SwitchRelayboolean LCN_SwitchRelay ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Relais mit der ID InstanzID auf Wert StatusBeispielLCN_SwitchRelay(12345, true); //Relais einschalten


LCN_FlipRelayboolean LCN_FlipRelay ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden RelaisRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Relais mit der ID InstanzID umBeispielLCN_FlipRelais(12345, true); //Relais umschalten


LCN_SetRelayboolean LCN_SetRelay ( integer $InstanzID , string $Wert )ParameterlisteInstanzIDID des Moduls. (In <strong>IP</strong>-<strong>Symcon</strong> die Splitter Instanz zum Modul)Wert 8fache Zeichenkombination der folgenden Werte: - = Nichts tun; 0 = Ausschalten; 1 = Einschalten; U =UmschaltenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt alle Relais des Moduls mit der ID InstanzID auf WertBeispielLCN_SetRelay(12345, "--1100UU");


LCN_Beepboolean LCN_Beep ( integer $InstanzID , boolean $SonderTon , integer $Anzahl )ParameterlisteInstanzIDID des Moduls. (In <strong>IP</strong>-<strong>Symcon</strong> die Splitter Instanz zum Modul)SonderTonTRUE für An, FALSE für AusAnzahl Anzahl zwischen 1..15RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungLässt das Modul mit der ID InstanzID piepenBeispielLCN_Beep(12345, true, 1); //Ein Mal piepen (Sonderton)


LCN_SetTargetValueboolean LCN_SetTargetValue ( integer $InstanzID , integer $Ziel , float $Wert )ParameterlisteInstanzIDZielWertID des Moduls. (In <strong>IP</strong>-<strong>Symcon</strong> die Splitter Instanz zum Modul)0 = Regler A; 1 = Regler BWertRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Regler Ziel der ID InstanzID auf den WertBeispielLCN_SetTargetValue(12345, 1, 24.3); //Regler B auf 24.3°C setzen


LCN_SendCommandboolean LCN_SendCommand ( integer $InstanzID , string $Funktion , string $Daten )ParameterlisteInstanzIDID des Moduls. (In <strong>IP</strong>-<strong>Symcon</strong> die Splitter Instanz zum Modul)Funktion Die ersten beiden (2) Zeichen des PCHK Befehls (z.B. A1)DatenDie restlichen Zeichen des PCHK Befehls (z.B. DI000000). Eventuelle Zahlen müssen in der dezimalenDarstellung (3 Zeichen) gesendet werden.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen benutzerdefinierten Befehl an das Modul der ID InstanzID. Mögliche Befehle entnehmen Sie bitte derPCHK Dokumentation. Falls Sie diese nicht besitzen, können Sie diese u.U. von Ihrem Fachhändler beziehen. Wir habenleider keine Möglichkeit diese bereitzustellen.BeispielLCN_SendCommand(12345, "A1", "DI000000"); //Ausgang 1 sofort auf 0% dimmen.


EIB/KNXDiese Anleitung soll Ihnen helfen, KNX-Aktoren möglichst schnell und unkompliziert mit dem Computer zu verbinden,um die Voraussetzung zu schaffen, mit <strong>IP</strong>-<strong>Symcon</strong> verschiedenste Anwendungsbereiche abzudecken und diese zuvisualisieren.EIB/KNX steht für ausgereifte und weltweit durchgesetzte intelligente Vernetzung moderner Haus- undGebäudesystemtechnik gemäß EN 50090 und ISO/IEC 14543. Es steuert gewerkeübergreifend zum Beispiel Heizung,Beleuchtung, Jalousien, Belüftung und Sicherheitstechnik. EIB/KNX ist einfach zu installieren und steigert denWohnkomfort, die Sicherheit und die Wirtschaftlichkeit. EIB/KNX ist ein kabelgebundenes System, dessen Leitung(Bezeichnung u.a. J-Y (St) Y 2x2x0,8 EIB bzw. YCYM 2x2x0,8) in der Regel aus zwei Aderpaaren (rot-schwarz und weißgelb)besteht. Die EIB-Anlage wird von einer Spannungsversorgung mit 30 V Nennspannung [Gleichspannung] versorgt.Diese Spannung versorgt die Busankoppler, über die jedes EIB-Gerät mit den anderen vernetzten EIB-Gerätenkommuniziert. Der Datenaustausch zwischen den EIB-Geräten erfolgt über Telegramme.Die Programmierung der Teilnehmer und das Zuweisen der Gruppenadressen erfolgt mit einer speziellen, jedochebenfalls standardisierten Software, der Engineering-Tool-Software (ETS). Die ETS wird von der DachorganisationKonnex bereitgestellt und sichert die problemlose Zusammenarbeit von Komponenten verschiedener Hersteller(mittlerweile über 100 Hersteller weltweit).Die Anbindung an <strong>IP</strong>-<strong>Symcon</strong> erfolgt über ein serielles Gateway oder <strong>IP</strong>-Gateway. Als Regel gilt, dass wir alle seriellenGateways “PEI Typ 10! mit FT1.2 Protokoll (Interfaces des Typs PEI 16 funktionieren nicht) unterstützen und alleKNX/<strong>IP</strong> Gateways, die das Tunneling Protokoll anbieten. Sollte ihr KNX Gateway diese Vorraussetzungen erfüllen undnicht funktionieren, kontaktieren Sie bitte unseren Support, damit wir das Problem so schnell wir möglich lösen.Folgende Auswahl an seriellen Gateways wurde erfolgreich getestet:EIBMARKT: EIB/KNX® RS232/USB FT1.2 - IFRS232 (ArtNr. N000250)Gira (Gira Busankoppler UP 2.1, Nr 0645 00 sowie Gira Datenschnittstelle FT 1.2, Nr 0504)Folgende Auswahl an <strong>IP</strong>-Gateways wurde erfolgreich getestet:EIBMARKT: 1a EIB KNX <strong>IP</strong> Schnittstelle PoE (ArtNr. N000401)ABB: i-bus® KNX / <strong>IP</strong>-Schnittstelle, REG <strong>IP</strong>S/S 2.1, 2CDG 110 098 R0011Weinzierl Engineering GmbH: KNX <strong>IP</strong> Interface 730Siemens N146, N148Video-Tutorial zur EinrichtungLaden …Schritt 1: Aufbau und AnschlussLassen Sie die Geräte nach Herstellerangaben korrekt aufstellen und anschließen. Die Geräte dürfen nur ingebäudetechnischen Anlagen und nur für die beschriebenen Anwendungen vom Fachmann eingesetzt werden. Dieörtlichen Vorschriften (Installation etc.) sind einzuhalten.Schritt 2: Installation


Wenn alle KNX-Geräte korrekt aufgestellt und angeschlossen sind, konfigurieren Sie diese bitte mit der ETS und nutzendazu die dreistufige Adressvergabe.Zur Zeit werden nur dreistufige Adressen (z.B. 10/2/5) unterstützt. Zweistufige oder freie Adressen unterstützt <strong>IP</strong>-<strong>Symcon</strong> zur Zeit nicht.Falls Ihr Elektriker die Installation vorgenommen hat, so bitten Sie Ihn um den nachfolgend erklärten OPC-Export unddie damit verbundene Datei vom Typ ESF.Um KNX/EIB in <strong>IP</strong>-<strong>Symcon</strong> nutzen zu können, ist entweder ein serielles FT1.2 Gateway oder ein kompatibles KNX/<strong>IP</strong>Gateway notwendig. Die Einrichtung der verschiedenen Gateways unterscheidet sich geringfügig. Sie können direkt eineKNX/EIB Instanz in <strong>IP</strong>-<strong>Symcon</strong> erstellen und von dieser aus Ihr Gateway konfigurieren oder benutzen Ihren OPCExport aus der ETS.Die Nutzung des OPC Exports mit Hilfe des <strong>IP</strong>-<strong>Symcon</strong> Konfigurators erlaubt eine schnelle Einbindung aller KNXKomponenten. Dafür klicken Sie auf “Extras” und dann auf “OPC exportieren”. Speichern Sie das Ganze so ab, dass Siees auch wiederfinden.Eine Video-Anleitung können Sie hier finden:KNX/EIB Geräte über OPC Export importieren (*.ESF Datei)Geschafft! Nun können Sie sich endlich <strong>IP</strong>-<strong>Symcon</strong> zuwenden.Schritt 3: Verbindung mit <strong>IP</strong>-<strong>Symcon</strong>Nachdem Sie mithilfe Ihres Benutzernamens und Ihres Keys (per E-Mail von <strong>IP</strong>-<strong>Symcon</strong> erhalten) unsere Softwareinstalliert haben, können Sie jetzt die KNX-Geräte mit <strong>IP</strong>-<strong>Symcon</strong> verbinden.Hierfür öffnen Sie die <strong>IP</strong>-<strong>Symcon</strong> Konsole (auf Ihrem Desktop). Danach verbinden Sie sich mit einem der <strong>IP</strong>-<strong>Symcon</strong>Server.Dann klicken Sie auf „Konfigurator erstellen“ und gehen auf „KNX/EIB Konfigurator“, klicken zweimal auf „weiter“und einmal auf „OK“.


Bevor Sie mit dem Import der Gruppenadressen beginnen können, müssen Sie noch die Schnittstelle korrekt auswählenund konfigurieren. Klicken Sie dazu bitte im unteren Bereich der Konfiguration auf das "Zahnrad". Es sollte sich dernachfolgend gezeigte Dialog öffnen.Wählen Sie bitte unter Modus aus, welchen Typ Gateway Sie besitzen. Für alle gängigen <strong>IP</strong>-Gateways muss der Modus"KNX/<strong>IP</strong> (UDP)" ausgewählt werden. Bestätigen Sie ggf. Ihre Änderungen mit dem Button Übernehmen. Um für dieSchnittstelle die Adresse eintragen zu können, drücken Sie bitte erneut auf das "Zahnrad" im unteren Bereich. Tragen Sieje nach Modus entweder die <strong>IP</strong>-Adresse ein oder wählen den seriellen Port der zu Ihrer Schnittstelle gehört. ImZweifelsfall können Sie die <strong>IP</strong>-Adresse auch mit Hilfe der ETS herausfinden. Weitere Einstellungen sind nicht notwendig.Bestätigen Sie Ihre Änderungen mit Übernehmen und wechseln auf die EIB Gateway-Ansicht zurück. Durch einen Klickauf "Aktualisieren" können Sie die Parameter Ihres Gateways auslesen. Wenn diese korrekt Ausgelesen wurdne, so ist dieKonfiguration vollständig und Sie können mit dem nächsten Schritt fortfahren.Schritt 4: Hinzufügen der GeräteWechseln Sie nun im unteren Bereich zurück auf den KNX/EIB Configurator. Nun klicken Sie auf “OPC Exporthochladen” öffnen Ihre zuvor exportierte ESF-Datei und schon sind alle zuvor konfigurierten KNX-Aktoren in <strong>IP</strong>-<strong>Symcon</strong> bedien- und visualisierbar.Klicken Sie nun jedes Gerät nacheinander an und drücken danach jeweils “Erstellen”. Die Geräte sind jetzt bedienbar.Bei der danach erscheinenden ID auf der rechten Seite handelt es sich um die von <strong>IP</strong>-<strong>Symcon</strong> zugeordnete InstanzID.Diese ist einmalig und unveränderbar.Nach einem Klick auf ein ausgewähltes KNX-Gerät und dann einen Klick auf “Konfigurieren” können Sie die Funktionjedes einzelnen Gerätes testen.Diese Möglichkeit haben Sie auch, wenn Sie direkt im Objektbaum doppelt auf ein ausgewähltes Gerät klicken. (DieseGeräte sind im Objektbaum unter Splitter-Instanzen wieder zu finden.) Nach dieser Konfiguration können Sie dieAnsicht schließen.


Wählen Sie in der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole den Reiter “Willkommen” aus. Nun klicken Sie unter „WebFront“ auf„WebFront öffnen“. Ihr Browser öffnet daraufhin die Benutzeroberfläche von <strong>IP</strong>-<strong>Symcon</strong>, und schon können Sie IhreKNX-Geräte komfortabel via PC (mit den im Shop erhältlichen Apps auch via Tablet-PC oder Smartphone) bedienen.Herzlichen Glückwunsch! Die ersten Schritte für ein automatisiertes Heim sind getan.Schritt 5: Temperaturwerte auf den KNX-Bus sendenUm Werte wie z.B. die Temeperatur auf den KNX-Bus senden zu können, ist ein Aktionsskript erforderlich, welches dieVerknüpfung zwischen der Visualisierung und den Aktoren vornimmt. Erstellen Sie bitte ein Skript mit folgendem Inhalt:EIB_Value(<strong>IP</strong>S_GetParent($_<strong>IP</strong>S['VARIABLE']), $_<strong>IP</strong>S['VALUE']);Für jedes gewünschte Gerät, dass veränderbar sein soll, muss die entsprechende Variable mit diesem Aktionsskriptverknüpft werden. Öffnen Sie dazu die Konfiguration der Variable, indem Sie die gewünschte Variable doppelt anklicken.Bestätigen Sie den Dialog, bis Sie zur Profilkonfiguration kommen, und wählen für “Eigene Aktion” das Skript aus,welches sie soeben angelegt haben. Wählen Sie zusätzlich ein passendes Profil aus (z.B. ~Temperature).Bestätigen Sie Ihre Änderungen bis sich der Dialog schließt. Das WebFront zeigt nun eine Auswahlmöglichkeit an, sodass Sie Ihre Temperatur bequem einstellen können.Sie können den letzten Schritt beliebig oft wiederholen. Es ist nur erforderlich, das Skript einmalig mit den o.g. Inhaltanzulegen.Umrechnen von zweistufigen zu dreistufigen GruppenadressenFalls Sie in Ihrer ETS eine zweistufige Darstellung der Gruppenadressen gewählt haben, können Sie die Adressen mitHilfe dieses kleinen Tools umrechnen lassen. Sofern Sie den OPC-Export nutzen, übernimmt die ETS diesen Prozessautomatisch.Umrechnen >>>Tipps & TricksIst die ETS zwingend notwendig?Uhrzeit mit KNX SynchronisierenKonvertierung EIS DPT


EIB_Switchboolean EIB_Switch ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet das Gerät mit der ID InstanzID auf Wert StatusBeispielEIB_Switch(12345, true); //Schaltet das Gerät ein


EIB_DimControlboolean EIB_DimControl ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert Dimmwertverstellung zwischen 0..15 oder -7..7RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet eine Dimmwertverstellung um Wert an das Gerät mit der ID InstanzID. Je nach Konfiguration kann 0..15(Standard) oder -7..7 (Enhanced) gesendet werden.Da diese Funktion nur eine relative Veränderungen des Dimmers vornimmt, kann die Helligkeit nicht absolutangegeben werden. Es wird empfohlen eine 8-Bit Adresse anzulegen, um direkte Dimmwerte setzen zu können.BeispielEIB_DimControl(12345, 0);


EIB_DimValueboolean EIB_DimValue ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert Wert 0..255, 0..100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet den Dimmwert Wert an das Gerät mit der ID InstanzID. Je nach Konfiguration kann 0..255 (Standard) oder0..100 (Percent) als Wert Parameter übergeben werden.BeispielEIB_DimValue(12345, 100); //Auf 100% dimmen


EIB_Valueboolean EIB_Value ( integer $InstanzID , float $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert -671088,64 .. 670760,96RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet den Wert Wert an das Gerät mit der ID InstanzID.BeispielEIB_Value(12345, 22.1); //Sendet 22.1°C an den Regler


EIB_Scaleboolean EIB_Scale ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert Wert 0..255, 0..100, 0..360RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet den Wert Wert an das Gerät mit der ID InstanzID. Je nach Konfiguration kann 0..255 (Standard), 0..100(Percent) oder 0..360 (Degree) als Wert Parameter übergeben werden.BeispielEIB_Scale(12345, 360);


EIB_DriveMoveboolean EIB_DriveMove ( integer $InstanzID , boolean $Richtung )ParameterlisteInstanzIDRichtungID des zu schaltenden GerätsStandart: False = Hoch, True = Runter; Invert: True = Hoch, False = RunterRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt das Gerät mit ID InstanzID in eine bestimmt Richtung. Je nach Konfiguration kann die Bewegungsrichtunginvertiert werden.BeispielEIB_DriveMove(12345, true); //Rolladen bewegen


EIB_DriveStepboolean EIB_DriveStep ( integer $InstanzID , boolean $SchrittRichtung )ParameterlisteInstanzIDSchrittRichtungID des zu schaltenden GerätsStandard: False = Hoch, True = Runter; Invert: True = Hoch, False = RunterRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt das Gerät schrittweise mit ID InstanzID in eine bestimmt Richtung in Bewegung. Je nach Konfiguration kann dieBewegungsrichtung invertiert werden.BeispielEIB_DriveStep(12345, true); //Rolladen schrittweise bewegen


EIB_DriveShutterValueboolean EIB_DriveShutterValue ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert Wert 0..255, 0..100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet den Positionswert Wert an das Gerät mit der ID InstanzID. Je nach Konfiguration kann 0..255 (Standard) oder0..100 (Percent) als Wert Parameter übergeben werden.BeispielEIB_DriveShutterValue(12345, 100); //Auf 100% fahren


EIB_DriveBladeValueboolean EIB_DriveBladeValue ( integer $InstanID , integer $Wert )ParameterlisteInstanIDID des zu schaltenden GerätsWert Wert 0..255, 0..100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet den Positionswert Wert an das Gerät mit der ID InstanzID. Je nach Konfiguration kann 0..255 (Standard) oder0..100 (Percent) als Wert Parameter übergeben werden.BeispielEIB_DriveBladeValue(12345, 100); //Auf 100% fahren


EIB_PriorityPositionboolean EIB_PriorityPosition ( integer $InstanzID , boolean $Richtung )ParameterlisteInstanzIDRichtungID des zu schaltenden GerätsStandard: False = Hoch, True = Runter; Invert: True = Hoch, False = RunterRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt das Gerät mit ID InstanzID auf eine bestimmte Richtung. Je nach Konfiguration kann die Richtung invertiertwerden.BeispielEIB_PriorityPosition(12345, true); //Rolladen bewegen


EIB_Moveboolean EIB_Move ( integer $InstanzID , integer $Richtung )ParameterlisteInstanzIDRichtungID der KNX Shutter Instanz0 = Hoch, 1 = Schritt (Hoch), 2 = Stop, 3 = Schritt (Runter), 4 = RunterRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der InstanzID in die gewünschte Richtung.BeispielEIB_Move(12345, 3); //Rolladen anhalten


EIB_Positionboolean EIB_Position ( integer $InstanzID , integer $Position )ParameterlisteInstanzIDID der KNX Shutter InstanzPosition 0-100%RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen mit der InstanzID auf die gewünschte Position.Dieser Befehl funktioniert nur, wenn Ihr KNX-Gerät eine absolute Positionierung unterstütztBeispielEIB_Position(12345, 50); //Rolladen auf 50% fahren


SPS: Siemens, VipaSpeicherprogrammierbare Steuerungen (SPS, engl. Programmable Logic Controller, PLC) sind eigenständige elektronischeBaugruppen zur Steuerung von Maschinen und Anlagen. Sie arbeiten unabhängig von einem PC. Ihre Befehle zumSteuern und Regeln sind in einem Programm (STEP 7) hinterlegt. <strong>IP</strong>-<strong>Symcon</strong> dient der Visualisierung sowie des Human-Machine Interface (HMI), also der Schnittstelle zwischen dem Bediener und der Maschine.Derzeit können folgende SPS mit der Programmiersprache STEP 7 an <strong>IP</strong>-<strong>Symcon</strong> betrieben werden:Siemens S7 / Vipa SPEED7 – Softwareseitig verwendet <strong>IP</strong>-<strong>Symcon</strong> LIBNODAVE.Bitte für weitere Informationen lesen: http://libnodave.sourceforge.net/Der Anschluss erfolgt über LAN, MPI oder Profibus.Folgende MPI-Adapter wurden getestet:MPI adapter 6ES7 972-0CA22-0XACMPI adapter 6ES7 972-0CA23-0XACMPI adapter 6ES7 972-0CB20-0XACCP5611 – PCI KarteHelmholz: SSW7-TSDurch die Tatsache, das PHP 5.3.x Integer als größten ganzzahligen Wert anbietet, können DWORDs (unsigend ints)in <strong>IP</strong>-<strong>Symcon</strong> zwar gelesen werden, sie werden jedoch auf Integer abgebildet, was bedeutet, nur die unteren 31Bitkönnen ausgewertet werden.


S7_WriteBitboolean S7_WriteBit ( integer $InstanzID , boolean $Wert )ParameterlisteInstanzIDWertID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf Wert StatusBeispielS7_WriteBit(12345, true); //Gerät einschalten


S7_WriteByteboolean S7_WriteByte ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert 0-255RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielS7_WriteByte(12345, 123);


S7_WriteWordboolean S7_WriteWord ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert 0-65535RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielS7_WriteWord(12345, 123);


S7_WriteDWordboolean S7_WriteDWord ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert 0-4294967295RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertAufgrund von einer Beschränkung auf 32-Bit Integer innerhalb von PHP kann nur der Bereich bis 2147483647genutzt werden.BeispielS7_WriteDWord(12345, 123);


S7_WriteShortIntboolean S7_WriteShortInt ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert -128 bis 127RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielS7_WriteShortInt(12345, -123);


S7_WriteSmallIntboolean S7_WriteSmallInt ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert -32768 bis 32767RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielS7_WriteSmallInt(12345, -123);


S7_WriteIntegerboolean S7_WriteInteger ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert -2147483648 bis 2147483647RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielS7_WriteInteger(12345, -123);


S7_WriteRealboolean S7_WriteReal ( integer $InstanzID , float $Wert )ParameterlisteInstanzIDWertID des zu schaltenden Geräts64Bit Gleitkommawert nach IEEE754RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielS7_WriteReal(12345, 23.5);


SPS: Wago, Beckhoff, ABBSpeicherprogrammierbare Steuerungen (SPS, engl. Programmable Logic Controller, PLC) sind eigenständige elektronischeBaugruppen zur Steuerung von Maschinen und Anlagen. Sie arbeiten unabhängig von einem PC. Ihre Befehle zumSteuern und Regeln sind in einem Programm hinterlegt. <strong>IP</strong>-<strong>Symcon</strong> dient der Visualisierung sowie des Human-MaschineInterface (HMI), also der Schnittstelle zwischen dem Bediener und der Maschine.Derzeit kann können folgende SPS mit dem CoDeSys Programmiersystem an <strong>IP</strong>-<strong>Symcon</strong> betrieben werden:Wago 750-841 – Der Anschluss an <strong>IP</strong>-<strong>Symcon</strong> erfolgt über die LAN Schnittstelle.EinrichtungDie Wago, Beckhoff und ABB SPS können Sie über das <strong>IP</strong>-<strong>Symcon</strong> ModBus RTU/TCP Modul ansteuern. Da ModBusdas obergeordnete Protokoll zur Ansteuerung ist, werden die Namen der Endgerätehersteller nicht mehr explizit in demAnsteuerungsmodul erwähnt. Die Dokumentation dazu finden sie hier: ModBus RTU/TCPTipps & TicksPräsentation zur ersten Einrichtung innerhalb von <strong>IP</strong>-<strong>Symcon</strong>Excel-Tabelle zum umrechnen der ModBus Adressen


Siemens OZWDiese Anleitung soll Ihnen helfen, einen Siemens OZW 672 / Siemens OZW 772 Web-Server möglichst schnell undunkompliziert mit dem Computer zu verbinden, um die Voraussetzung zu schaffen, mit <strong>IP</strong>-<strong>Symcon</strong> verschiedensteAnwendungsbereiche abzudecken und diese zu visualisieren. Der Web-Server OZW ermöglicht die Fernbedienung undFernüberwachung von Anlagen über das Web. Er ist in vier Ausführungen erhältlich: für den Anschluss von eins, vier, 16oder 250 KNX Geräten der Sortimente Synco 700, Synco RXB/RXL, Raumthermostaten RDG/RDF/RDU und derSynco living Wohnungszentralen QAX9.Alle KNX Geräte, die mit dem Siemens OZW 672 / Siemens OZW 772 Web-Server kompatibel sind, sind auch mit <strong>IP</strong>-<strong>Symcon</strong> kompatibel und können eingebunden werden.Video-Tutorial zur EinrichtungLaden …Schritt 1: AufbauNehmen Sie das Gerät aus der Verpackung und platzieren Sie dieses an einem Ort, der für Ihre Verwendungszweckegeeignet ist. Achten Sie bei der Aufstellung darauf, dass sich das Gerät problemlos per LAN-Kabel mit dem PC verbindenlässt.Das Gerät darf nur in gebäudetechnischen Anlagen und nur für die beschriebenen Anwendungen vom Fachmanneingesetzt werden. Die örtlichen Vorschriften (Installation etc.) sind einzuhalten.Schritt 2: AnschlussBevor der OZW mit dem PC verbunden wird, sollten Sie Ihre KNX-Geräte korrekt an diesen angeschlossen haben.Verbinden Sie nun das Gerät durch ein Netzwerkkabel mit dem Netzwerk und schließen Sie es an dieSpannungsversorgung an.Auch eine Verbindung mit dem PC per USB ist möglich, sofern eine Verbindung zum Internet gegeben ist, damit derRNDIS-Treiber beim Verbinden via USB automatisch installiert werden kann (sofern der Microsoft online update Dienstfreigeschaltet ist). Ein manuelles Installieren des Treibers ist ebenfalls möglich.Schritt 3: InstallationWenn der OZW korrekt angeschlossen ist und Sie einen DHCP-Server verwenden, dann ist der OZW nun mit demlokalen Netzwerk verbunden. (Der DHCP-Server übernimmt automatisch die Adressvergabe für die Netzwerkteilnehmer, so dass Siesich um nichts Weiteres kümmern müssen.)Klicken Sie nun auf das Startsymbol Ihres Windows-PCs, klicken Sie dann auf „Computer“ und danach auf „Netzwerk“.Der OZW erscheint nun unter „Andere Geräte“ als „OZW...“. Klicken Sie jetzt auf „OZW...“. Daraufhin öffnet sich einFenster. Im unteren Bereich dieses Fensters finden Sie die <strong>IP</strong>-Adresse des OZWs. Diese kopieren Sie sich jetzt alsAdresse in Ihren Browser, so dass sich eine Siemens Webpage öffnet. Beim ersten Login gilt:"User name" = "Administrator" und "Password" = "Password".Das Passwort sollte nach dem ersten Login geändert werden. Beachten Sie Groß- und Kleinschreibung. Nach dem erstenLogin ist die Web-Server-Sprache Englisch, die sich aber einfach ändern lässt. Auf der linken Seite finden Sie alle KNX-


Geräte, die an das OZW angeschlossen sind. Hier können Sie nun einige Voreinstellungen vornehmen.Sofern Sie keinen DHCP-Server benutzen, so ist die <strong>IP</strong>-Adresse des OZWs im Auslieferungszustand 192.168.2.10 (USB:192.168.250.1 (nicht veränderbar)).Geschafft! Nun können Sie sich endlich <strong>IP</strong>-<strong>Symcon</strong> zuwenden.Schritt 4: Verbindung mit <strong>IP</strong>-<strong>Symcon</strong>Nachdem Sie mithilfe Ihres Benutzernamens und Ihres Keys (per E-Mail von <strong>IP</strong>-<strong>Symcon</strong> erhalten) unsere Softwareinstalliert haben, können Sie jetzt den OZW mit <strong>IP</strong>-<strong>Symcon</strong> verbinden.Hierfür öffnen Sie die <strong>IP</strong>-<strong>Symcon</strong> Konsole (auf Ihrem Desktop). Danach verbinden Sie sich mit einem der <strong>IP</strong>-<strong>Symcon</strong>Server.Dann klicken Sie auf „Konfigurator erstellen“ und gehen auf „OZW Konfigurator“, klicken zweimal auf „weiter“, einmalauf „OK“ und dann auf das Zahnrad (unten links).Es öffnet sich die Konfiguration des „OZW Splitters“. Hier sind bereits die Standardwerte von Siemens voreingestellt.Sollten Sie aber etwas (z.B. die <strong>IP</strong>-Adresse oder das Passwort) verändert haben, ist es grundsätzlich wichtig, dass bei <strong>IP</strong>-Adresse die <strong>IP</strong>-Adresse der OZW steht und Benutzername und Passwort den aktuellen Einstellungen entsprechen.Klicken Sie danach auf “Übernehmen”. Danach können Sie die Ansicht schließen. Im OZW Konfigurator klicken Siejetzt auf “Suchen”. Anschließend erscheinen der OZW und alle an diesen angeschlossenen KNX-Geräte.Bei der ID auf der linken Seite handelt es sich um die Identifikationsnummer, die sich auch auf der Rückseite dereinzelnen Geräte wiederfindet. Im Falle einer großen Anzahl von installierten KNX-Geräten ist damit eine problemloseZuordnung und Konfiguration gewährleistet.Bei der ID auf der rechten Seite handelt es sich um die von <strong>IP</strong>-<strong>Symcon</strong> zugeordnete InstanzID. Diese ist einmalig undunveränderbar.Klicken Sie nun jedes Gerät nacheinander an und drücken danach jeweils “Erstellen”. Die Geräte sind nun bedienbar.Nach einem Klick auf ein ausgewähltes KNX-Gerät und dann einen Klick auf "Konfigurieren" können Sie darüber hinausgenau einstellen, was Sie sich später im WebFront anzeigen lassen wollen.


Dafür klicken Sie einfach auf das Plus und wählen den jeweiligen Datenpunkt aus, der im WebFront angezeigt werdensoll. Klicken Sie auf "Erstellen", um diesen in <strong>IP</strong>-<strong>Symcon</strong> einzurichten. Nach der Konfiguration Ihrer gewünschtenDatenpunkte können Sie die Ansicht schließen.Schritt 5: Abfrageintervalle konfigurierenSobald Sie die einzelnen gewünschten Datenpunkte ausgewählt haben, können Sie diese über "Konfigurieren" öffnen undein Abfrageintervall einstellen. Dieses ist notwendig, da <strong>IP</strong>-<strong>Symcon</strong> die Werte aktiv vom OZW abfragen muss.Eine Abfrage dauert ca. 800ms. Sie können also z.B. 13 Datenpunkte alle 10 Sekunden abfragen. Wenn Ihre Intervallezu kurz sind, werden die Abfragen nacheinander, verzögert abgearbeitet.Schritt 6: Visualisierung testenWählen Sie in der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole den Reiter “Willkommen” aus. Nun klicken Sie unter „WebFront“ auf„WebFront öffnen“. Ihr Browser öffnet daraufhin die Benutzeroberfläche von <strong>IP</strong>-<strong>Symcon</strong> und schon können Sie IhreKNX-Geräte komfortabel via PC (mit den im Shop erhältlichen Apps auch via Tablet-PC oder Smartphone) auslesen undbedienen.Herzlichen Glückwunsch! Die ersten Schritte für eine einfach zu bedienende Gebäudeautomation sind getan.


OZW_WriteDataPointboolean OZW_WriteDataPoint ( integer $InstanzID , variant $Wert )ParameterlisteInstanzIDID des zu verändernden GerätsWert z.B. 23.5RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Wert des Datenpunktes mit der ID InstanzID auf angegebenen Wert.Sofern das angezeigte Profil über Assoziationen verfügt, muss der Integer-Wert der gewünschten Assoziationangegeben werden (z.B. 0) anstatt des String-Wertes (z.B. Aus).BeispielOZW_WriteDataPoint(12345, 1);


Modbus RTU/TCPErstellen Sie zu allererst eine ModBus Instanz innerhalb von <strong>IP</strong>-<strong>Symcon</strong> und wechseln sie in der Konfiguration in dieüberliegende Instanz, um die Konfiguration entsprechend ihrer Geräte anzupassen. Wählen Sie bitte aus, über welchesProtokoll ihr Gerät angesprochen werden soll.Manche Geräte erfordern, dass Sie bei 32 Bit Werten (DWORD) die jeweiligen 16-Bit Bestandteile tauschen. DieseOption ist standardmäßig aktiviert und kann von Ihnen ggf. deaktiviert werden.Tragen Sie bitte auch Ihre <strong>IP</strong>-Adressse und Port (Default: 502) ein, um die Verbindung zu ihrem Gerät herzustellen. Inder weiteren Konfiguration (Screenshot unten) können sie die Lese- und Schreibadresse einstellen und den Datentyp, dergelesen werden soll. Die Bestimmung der Adresse entnehmen Sie dem Handbuch zu Ihrem ModBus-kompatiblen Gerät.Die Aktivierung des Timers fragt Ihr ModBus-Gerät zyklisch ab und aktualisiert so den Status innerhalb des Geräts. DieOption “Nur-Lesen” verändert den Lese-Vorgang, so dass die Latches/Nur-Lesen Eingänge ihres ModBus-Gerätesausgelesen werden. Im Normalfall ist es nicht notwendig, diese Option zu aktivieren.Durch die Tatsache, dass PHP 5.3.x Integer als größten ganzzahligen Wert anbietet, können DWORDs (unsigendints) in <strong>IP</strong>-<strong>Symcon</strong> zwar gelesen werden, sie werden jedoch auf Integer abgebildet, was bedeutet, nur die unteren31Bit können ausgewertet werden.Die Nachfolgende Tabelle bietet einen Überblick, welcher FunctionCode bei welcher Parameterierung innerhalb von <strong>IP</strong>-<strong>Symcon</strong> gesendet wird:


FunctionCode Aktion Parameterierung in <strong>IP</strong>-<strong>Symcon</strong>0x01 (1) Lesen Einheit = Bit0x0F (15) Schreiben Einheit = Bit0x03 (3) Lesen Einheit = Byte/Word/DWord/ShortInt/SmallInt/Integer/Float0x10 (16) Schreiben Einheit = Byte/Word/DWord/ShortInt/SmallInt/Integer/Float0x02 (2) Lesen Einheit = Bit, Nur-Lesen aktiviert0x04 (4) Lesen Einheit = Byte/Word/DWord/ShortInt/SmallInt/Integer/Float, Nur-Lesen aktiviert


ModBus_WriteCoilboolean ModBus_WriteCoil ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf Wert StatusBeispielModBus_WriteCoil(12345, true); //Gerät einschalten


ModBus_WriteRegisterByteboolean ModBus_WriteRegisterByte ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert 0-255RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielModBus_WriteRegisterByte(12345, 123);


ModBus_WriteRegisterWordboolean ModBus_WriteRegisterWord ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert 0-65535RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielModBus_WriteRegisterWord(12345, 123);


ModBus_WriteRegisterDWordboolean ModBus_WriteRegisterDWord ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert 0-4294967295RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertAufgrund einer Beschränkung auf 32-Bit Integer innerhalb von PHP, kann nur der Bereich bis 2147483647 genutztwerden.BeispielModBus_WriteRegisterDWord(12345, 123);


ModBus_WriteRegisterShortIntboolean ModBus_WriteRegisterShortInt ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert -128 bis 127RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielModBus_WriteRegisterShortInt(12345, -123);


ModBus_WriteRegisterSmallIntboolean ModBus_WriteRegisterSmallInt ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert -32768 bis 32767RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielModBus_WriteRegisterSmallInt(12345, -123);


ModBus_WriteRegisterIntegerboolean ModBus_WriteRegisterInteger ( integer $InstanzID , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsWert -2147483648 bis 2147483647RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielModBus_WriteRegisterInteger(12345, -123);


ModBus_WriteRegisterRealboolean ModBus_WriteRegisterReal ( integer $InstanzID , float $Wert )ParameterlisteInstanzIDWertID des zu schaltenden Geräts32Bit Gleitkommawert nach IEEE754RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die Adresse mit der ID InstanzID auf WertBeispielModBus_WriteRegisterReal(12345, 23.5);


ModBus_RequestReadboolean ModBus_RequestRead ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFührt einen erneuten Lesevorgang für das Gerät mit der ID InstanzID aus.Sobald die Funktion ausgeführt wurde, sind die neuen Werte in den Status Variablen abrufbar.BeispielModBus_RequestRead(12345); //Gerät auslesen


DMX LichttechnikDMX (Lichttechnik) oder auch DMX512 genannt ist ein digitales Steuerprotokoll, das in der Bühnen- undVeranstaltungstechnik Verwendung findet. Es dient der Steuerung von Dimmern, Scheinwerfern und Effektgeräten aufBühnen oder in Diskotheken. Die Abkürzung DMX steht für Digital Multiplex, es ist ein Standard, der durch die DIN56930-2 genormt wurde. Die Anbindung an <strong>IP</strong>-<strong>Symcon</strong> erfolgt u.a. über ein DMX USB-Interface/DMX LAN-Interface.Seit <strong>IP</strong>-<strong>Symcon</strong> 3.0 wird zusätzlich ArtNet unterstützt. Es ist ein <strong>IP</strong>-basiertes Protokoll zur Übertragung großer Mengenvon DMX-Informationen über LAN. Die Spezifikation wurde von der Firma "Artistic Licence" erstellt und ist freiverfügbar. <strong>IP</strong>-<strong>Symcon</strong> untersützt alle ArtNet-kompatiblen DMX Interfaces.Unterstützte DMX Interfaces:DMX4ALL Mini-USB-DMX-InterfaceDMX4ALL NanoDMX USB InterfaceDMX4ALL USB-DMX STAGE-PROFI MK2DMX4ALL USB-DMX STAGE-PROFI MK3LAN-DMX STAGE-PROFIUnterstützte ArtNet Interfaces:Es werden alle ArtNet Interface unterstütztVideo-Tutorial zur EinrichtungLaden …KonfigurationVoraussetzung für den Betrieb in Verbindung mit <strong>IP</strong>-<strong>Symcon</strong> ist eine ordnungsgemäß installierte Hardware sowieKenntnis der verwendeten COM-Port-Schnittstelle bzw. der <strong>IP</strong>-Adresse. Fügen Sie in <strong>IP</strong>-<strong>Symcon</strong> eine Instanz 'DMX-Ausgang“ hinzu und wählen Sie in der übergeordneten Instanz den Modus DMX oder ArtNet für Ihre angeschlosseneHardware aus. Bei ArtNet ist das 'Universe' in der Regel 0 und bei DMX ist der Eintrag irrelevant.


In der nächsten übergeordneten Instanz sind bei ArtNet folgende Einstellungen vorzunehmen: 'Sende-Host' ist die <strong>IP</strong>-Adresse des ArtNet-Interface und der 'Sende-Port': 6454 – der Standard-Port des ArtNet-Protokolls. 'Empf.-Host' ist die<strong>IP</strong>-Adresse der Netzwerkkarte, an die das Interface angeschlossen ist. In der Regel ist es die Adresse vom PC, auf dem der<strong>IP</strong>-<strong>Symcon</strong> Server läuft.Bei einem DMX-Interface, das über USB angeschlossen ist, wird im Windows-Gerätemanager ein virtueller COM-Portinstalliert. Dieser ist hier einzutragen. Die weiteren Einstellungen der Baudrate: 9600,8,1,N dürfen nicht verändert werden.Sind alle Einstellungen gemacht, muss noch der Port bzw. Socket geöffnet und 'Übernehmen' gedrückt werden.


In der Instanz 'DMX-Ausgang“ kann die Funktion in der Testumgebung überprüft werden.Sie können mit einer Instanz mehrere Kanäle Ihres DMX-Geräts ansprechen. Das ist nützlich um z.B. kompletteDMX-RGB-Scheinwerfer als zusammenhängendes Gerät in der Visualisierung anzeigen zu können. Über die Buttons"Alle Ein" und "Alle Aus" können alle der Instanz zugewiesenen Kanäle ein (=255) bzw. aus (=0) geschaltet werden.


DMX_SetValueboolean DMX_SetValue ( integer $InstanzID , integer $Kanal , integer $Wert )ParameterlisteInstanzIDID des zu schaltenden GerätsKanal0 = alle Instanz-Kanäle, 1 – 512 je nach KonfigurationWert 0-255RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet den Kanal vom Gerät mit der ID InstanzID auf Wert WertBeispielDMX_SetValue(12345, 1, 255); //Den ersten Kanal der Instanz auf 255 schalten


DMX_Fadeboolean DMX_Fade ( integer $InstanzID , integer $Kanal , integer $Wert , float $Überblendzeit )ParameterlisteInstanzIDID des zu schaltenden GerätsKanal0 = alle Instanz-Kanäle, 1 – 512 je nach KonfigurationWert 0-255ÜberblendzeitZeit in SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt den Kanal des Geräts mit der ID InstanzID auf Wert mit einer bestimmten ÜberblendzeitBeispielDMX_Fade(12345, 0, 255, 2.5); //Alle Kanäle der Instanz auf 255 innerhalb von 2,5sek dimmen


DMX_FadeDelayedboolean DMX_FadeDelayed ( integer $InstanzID , integer $Kanal , integer $Wert , float $Überblendzeit, float $Verzögerungszeit )ParameterlisteInstanzIDID des zu schaltenden GerätsKanal0 = alle Instanz-Kanäle, 1 – 512 je nach KonfigurationWert 0-255ÜberblendzeitZeit in SekundenVerzögerungszeitZeit in SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDimmt den Kanal des Geräts mit der ID InstanzID auf Wert mit einer bestimmten Überblendzeit. Es kann eineVerzögerungszeit angegeben werden, nach der der Dimmvorgang gestartet wird.Beispiel//Dimmt ein Modul komplett hoch und wieder runter.DMX_Fade(12345, 0, 255, 5.0); //Alle Kanäle der Instanz auf 255 innerhalb von 5sek dimmenDMX_FadeDelayed(12345, 0, 0, 2.5, 5); //Alle Kanäle der Instanz auf 0 innerhalb von 2,5sek dimmen, nach eine


DMX_SetBlackoutboolean DMX_SetBlackout ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDID des zu schaltenden GerätsStatus TRUE für alter Wert, FALSE für 0RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt alle Kanäle des DMX Interfaces mit der ID InstanzID auf Wert Status.Dieser Befehl beeinflusst keine Status Variablen der Module.Beispiel//Alle Kanäle deaktiverenDMX_SetBlackout(12345, true);//Alle Kanäle reaktivierenDMX_SetBlackout(12345, false);


DMX_ResetInterfaceboolean DMX_ResetInterface ( integer $InstanzID )ParameterlisteInstanzIDID des DMX I/O InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt das DMX Interface mit der ID InstanzID zurück. Es empfiehlt sich, bei Problemen, ein Skript mit diesem Befehlzu erstellen und als Start-Skript zu deklarieren.Beispiel//Interface zurücksetzenDMX_ResetInterface(12345);


IR TransMit Hilfe von Infrarotsignalen lassen sich existierende Audio- und Videogeräte preiswert und problemlos in dieHausautomation einbinden. Außerdem können z.B. Licht-Szenarien über die Infrarotfernbedienung aktiviert oder dieRollläden heruntergelassen werden. Dazu ist im Prinzip nur eine Sende- und Empfangsdiode notwendig – je nachWunsch als Fertiggerät oder zum Basteln…Hersteller: IRTrans: “… macht Ihren PC zu einer programmierbaren Fernbedienung”http://www.irtrans.deInstallationUm IR-Signale über IRTrans empfangen/senden zu können, wird ein IRTrans kompatibles Gerät, wie die USB, LANoder WLAN Variante, benötigt. Sobald die Geräte innerhalb der IRTrans Tray Software funktionieren, kann dieInstallation innerhalb von <strong>IP</strong>-<strong>Symcon</strong> beginnen. (<strong>Download</strong>: http://www.irtrans.de/download/setup.exe)Über das IRTrans Tray Icon (Rechte Maustaste -> Diagnostics) können die Geräte IDs abgefragt werden, die von derIRTrans Server Applikation gefunden wurden und die dann über <strong>IP</strong>-<strong>Symcon</strong> angesteuert werden können. Das folgendeBild zeigt ein IRTrans LAN Gerät, welches die ID 0 hat.Einlernen der FernbedienungDer Hersteller empfiehlt das Einlernen der Befehle über den ”IRTrans GUI Client”. Dazu muss zunächst der Name derFernbedienung eingegeben werden (z.B. “sat”) und die betreffende Taste (z.B. “power”). Ein Einlernen über <strong>IP</strong>-<strong>Symcon</strong>ist nicht möglich.In der Konfiguration der IRTrans Instanz muss die GeräteID angegeben werden, die aus dem oberen Diagnose Fensterentnommen werden kann. Jede Instanz kann nur ein einzelnes Gerät ansteuern. Es können jedoch beliebig viele IRTransInstanzen erstellt werden. Wenn später an mehrere Geräte gesendet werden soll, können einfach mehrere PHP Befehle anmehrere Instanzen hintereinander versendet werden. Über das Test-Center kann die Funktion überprüft werden.


Das IRTrans Modul stellt im Objektbaum zwei Variablen bereit, über die auf die aktuell gedrückte Fernbedienung undTaste reagiert werden kann. Dazu muss ein ausgelöstes Ereignis erstellt werden, dass auf die Aktualisierung der “Taste”-Variable reagiert.


IRT_SendOnceboolean IRT_SendOnce ( integer $InstanzID , string $Fernbedienung , string $Knopf )ParameterlisteInstanzIDFernbedienungKnopfID des zu schaltenden GerätsName der Fernbedienung, der in der Fernbedienungsdatenbank eingetragen ist/wurde.Name der Fernbedienungsfunktion, die in der Fernbedienungsdatenbank eingetragen ist/wurde.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen Fernbedienungsbefehl über die Instanz mit der ID InstanzID ab. Die Werte Fernbedienung und Knopfgeben an, welcher Befehl gesendet werden soll. Diese müssen in der Client Software (IRTrans Tray) entsprechendeingerichtet worden sein.BeispielIRT_SendOnce(37279,"ccf", "v+");


WinLIRCMit Hilfe von Infrarotsignalen lassen sich existierende Audio und Video Geräte in die Hausautomation preiswert undproblemlos einbinden. Außerdem können z.B. Licht-Szenarien über die Infrarotfernbedienung aktiviert oder die Rolllädenherunter gelassen werden. Dazu ist im Prinzip nur eine Sende- und Empfangsdiode notwendig – je nach Wunsch alsFertiggerät oder zum Basteln…Wissenswertes über WinLIRC:http://winlirc.sourceforge.netFür alle, die gern mal wieder zum Lötkolben greifen wollen, finden sich hier weitere Informationen:http://www.lirc.org/receivers.htmlhttp://www.lirc.org/transmitters.htmlInstallationUm IR-Signale über <strong>IP</strong>-<strong>Symcon</strong> empfangen/senden zu können, benötigen Sie ein LIRC kompatibles Gerät.WinLIRC Applikation muss installiert und gestartet sein<strong>Download</strong>: winlirc.sourceforge.net/de/Fernbedienung/Tasten müssen in der WinLIRC Applikation angelernt seinWinLIRC Modul in <strong>IP</strong>-<strong>Symcon</strong> anlegen.Host: localhostPort: 8765Verwendung in <strong>IP</strong>-<strong>Symcon</strong>Das WinLIRC Modul stellt sich folgendermaßen im Objektbaum dar:Eine erfolgreiche Installation ist an dem geöffnetem Socket zu erkennen.Um IR-Befehle von <strong>IP</strong>-<strong>Symcon</strong> auszugeben, wird die WinLIRC_SendOnce-Funktion verwendet.$id = 18076 /*[Media IR\WinLIRC]*/;// ZDF einschaltenWinLIRC_SendOnce($id, "humax", "power");<strong>IP</strong>S_Sleep(1000);WinLIRC_SendOnce($id, "humax", "power");<strong>IP</strong>S_Sleep(200);WinLIRC_SendOnce($id, "sat", "power");// hier können noch Befehle zur Beleuchtung stehen ...


WinLIRC_SendOnceboolean WinLIRC_SendOnce ( integer $InstanzID , string $Fernbedienung , string $Knopf )ParameterlisteInstanzIDFernbedienungKnopfID des zu schaltenden GerätsName der Fernbedienung, der in der Fernbedienungsdatenbank eingetragen ist/wurde.Name der Fernbedienungsfunktion, die in der Fernbedienungsdatenbank eingetragen ist/wurde.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen Fernbedienungsbefehl über die Instaz mit der ID InstanzID ab. Die Werte Fernbedienung und Knopfgeben an, welcher Befehl gesendet werden soll. Diese müssen in der Client Software (WinLIRC/IRTrans Tray)entsprechend eingerichtet worden sein.BeispielWinLIRC_SendOnce(37279,"soundmaster", "power");


UVR1611Die Universalregelung UVR1611K besitzt durch Funktionsmodule die Möglichkeit, praktisch frei programmierbar aufjede Anlagenkonfiguration für das Heizraummanagement abgestimmt zu werden.Da jedes Funktionsmodul mehrfach einsetzbar ist, können auch komplexe Regelsysteme wie z.B. Solaranlagen mitmehreren Kollektorfeldern und Speichern oder mehrere witterungsgeführte Heizkreise realisiert werden.Es besitzt folgende Eigenschaften:16 Sensoreingänge für KTY10 oder PT1000 Sensoren(zwei davon auch als Impuls- und einer als Analogeingang 4-20mA oder 0-10V)4 drehzahlregelbare Ausgänge und 7 RelaisausgängeÜber ein Relaismodul zwei weitere Ausgänge nachrüstbarBedienung über Scrollrad und GroßflächendisplayIntegrierter Potentiostat für den elektrischen SpeicherkorrosionsschutzCAN- Bus zum Datenaustausch mit anderen bzw. weiteren UVR1611- GerätenInfrarotschnittstelle zum Updaten der Software(Quelle: TA)Die Anbindung an <strong>IP</strong>-<strong>Symcon</strong> erfolgt über LAN oder USB mit Hilfe des ‘BOOTLOADER’.Das Auslesen über den CAN-Bus ist nicht möglich.Hersteller: http://www.ta.co.atInstallationDer UVR1611 kann an <strong>IP</strong>-<strong>Symcon</strong> über den BL-NET angeschlossen werden. Dabei ist es möglich den USB-Anschlussoder die Ethernet-Schnittstelle zu verwenden. In jeden Falle muss die DL (Datenleitung) benutzt werden. Das Auslesenüber den CAN-Bus ist nicht möglich.Nachdem Sie eine Instanz in <strong>IP</strong>-<strong>Symcon</strong> erstellt haben, müssen Sie die <strong>IP</strong>-Adresse ihres BL-NET angeben. Falls Sie dieUSB Version nutzen wollen, müssen Sie eine neue übergeordnete Instanz erstellen und bei der Auswahl den SerialPortauswählen.Um eine oder mehrere Variablen im WebFront anzeigen zu lassen, muss diesen jeweils ein Profil zugeordnet werden (z.B.Temperatur), um der Visualisierung dadurch erkennbar zu machen, um was für einen Wert es sich handelt. Da dieRegelung und die Eingänge der UVR1611 vom Benutzer definiert werden, kann dies nicht automatisch vom Systemvorgenommen werden. Mehr Informationen über Variablenprofile können Sie hier nachlesen: VariablenprofileSollen zwei (2) UVR1611 angeschlossen werden, so müssen zwei Instanzen erstellt werden. Jeweils einmal mit der ID =1 und ID = 2. Der Timer darf jedoch nur in einer der beiden Instanzen aktiviert werden, da eine Anfrage beideDatenpakete liefert und somit beide Instanzen aktualisiert.Tipps & TricksDa der BL-NET nicht sehr belastbar ist, sollten so wenig Applikationen wie möglich auf das Gerät zugreifen. Andernfallskann es zu Ausfällen kommen, in denen der BL-NET nicht erreichbar ist.Folgende Einträge im Logfile sind normal und kein Fehler:Client Socket | Socket: Verbinde…. #1Client Socket | Socket: VerbundenClient Socket | Socket: Getrennttitle: UVR1611 topic: Service layout: dokuposition: 18The universal controller UVR1611K has through the functional modules the opportunity to be matched virtually freelyprogrammable to any system configuration for the stokehold management. Since each function module is used severaltimes, also complex control systems e.g. Solar systems with multiple collector arrays and storing or several weathercompensatedheating circuits can be realized.It has the following properties:16 sensor inputs for KTY10 or PT1000 sensors (two of them as an impulse and one as analog input 4-20mA or 0-


10V)4 variable speed outputs and 7 relay outputsTwo additional outputs can be retrofitted with a relay moduleOperation via scroll wheel and large displayIntegrated potentiostat for electrical anticorrosion storageCAN-Bus to exchange data with other or further UVR1611 devicesInfrared interface for updating the software(Quelle: TA)The connection to <strong>IP</strong> <strong>Symcon</strong> takes place via LAN or USB using the 'BOOTLOADER'. The reading via the CAN-Bus isnot possible.Manufacturer: http://www.ta.co.atInstallationThe UVR1611 can be connected to <strong>IP</strong>-<strong>Symcon</strong> via the BL-NET. It is possible to use the USB port or the Ethernetinterface. In each case, the DL (data line) are used. The reading via the CAN bus is not possible. The reading via theCAN-Bus is not possible.Once you have created an instance in <strong>IP</strong>-<strong>Symcon</strong>, you must specify the <strong>IP</strong> address of your BL-NET. If you want to usethe USB version, you must create a new parent instance and select the serial port.In order to display one or more variables in the WebFront, each must be assigned to a profile (e.g. temperature) to makethe right value recognizable in the visualization. The scheme and the inputs of the UVR1611 are defined by the user and itcan not be done automatically by the system. More information about variable profiles can be found here: UngültigerLink: Variables profilesIf you want to connect __two (2) __ UVR1611, then two instances must be created. Once with the ID = 1 and ID = 2.The timer can be activated only in one of the two instances, since a request provides both data packets and thus updatesboth instances.Tips & TricksSince the BL-NET is not very strong, a few applications as possible should access the device. Otherwise it may lead tofailures in which the BL-NET is not available.The following entries in the log are normal and no error:Client Socket | Socket: Verbinde…. #1Client Socket | Socket: VerbundenClient Socket | Socket: Getrennt


W&TDiese Anleitung soll Ihnen helfen, ein W&T Web-IO Digital (z.B. 57631) möglichst schnell und unkompliziert mit demComputer zu verbinden, um die Voraussetzung zu schaffen, mit <strong>IP</strong>-<strong>Symcon</strong> verschiedenste Anwendungsbereicheabzudecken.Die Geräte der W&T Web-IO Digital Produktfamilie stellen dem Anwender Schaltein- und ausgängen aufSchraubklemme zur Verfügung. Über eine TCP/<strong>IP</strong>-Ethernet 10/100BaseT Schnittstelle erlauben die Web-IO Boxen denZugriff über eine Vielzahl von Protokollen und Anwendungen.Schritt 1: AufbauNehmen Sie das Gerät aus der Verpackung und platzieren Sie dieses an einen Ort, der für Ihre Verwendungszweckegeeignet ist. Achten Sie bei der Aufstellung darauf, dass sich Ihr Gerät problemlos per LAN-Kabel mit Ihrem Netzwerkverbinden lässt. Das Gerät darf nur in gebäudetechnischen Anlagen und nur für die beschriebenen Anwendungen vomFachmann eingesetzt werden. Die örtlichen Vorschriften (Installation etc.) sind einzuhalten.Schritt 2: AnschlussVerbinden Sie das Gerät durch ein Netzwerkkabel mit dem Netzwerk und schließen Sie es an die Spannungsversorgungan.Schritt 3: InstallationWenn das Web-IO korrekt angeschlossen ist und Sie einen DHCP-Server verwenden, dann ist es nun mit dem lokalenNetzwerk verbunden. (Der DHCP-Server übernimmt automatisch die Adressvergabe für die Netzwerkteilnehmer, so dassSie sich um nichts Weiteres kümmern müssen.)Erste Konfigurationsmöglichkeiten und Einstellmöglichkeiten (z.B. Neuvergabe der <strong>IP</strong>-Adresse) ist mithilfe der Wutility-Software möglich. Steht Ihnen diese nicht zur Verfügung, so laden Sie diese unter www.wut.de herunter. Installieren Siedie Software und starten Sie diese danach. Das Web-IO wird hier problemlos erkannt.Benutzen Sie keinen DHCP-Server, so ist die <strong>IP</strong>-Adresse des Web-IOs mit der Wutility-Software einfach veränderbar.Wenn Sie die <strong>IP</strong>-Adresse des Web-IOs nun als Adresse in Ihren Browser übernehmen oder im Wutility-Menü aufBrowser klicken (dafür muss zuvor das Web-IO angeklickt worden sein), gelangen Sie zur Konfigurations-Webpage desWeb-IOs. Auch hier sind erste Einstellungen vor allem zu Testzwecken möglich.Geschafft! Nun können Sie sich endlich <strong>IP</strong>-<strong>Symcon</strong> zuwenden.Schritt 4: Verbindung mit <strong>IP</strong>-<strong>Symcon</strong>Nachdem Sie mithilfe Ihres Benutzernamens und Ihres Keys (per E-Mail von <strong>IP</strong>-<strong>Symcon</strong> erhalten) unsere Softwareinstalliert haben, können Sie jetzt das Web-IO mit <strong>IP</strong>-<strong>Symcon</strong> verbinden.Hierfür öffnen Sie die <strong>IP</strong>-<strong>Symcon</strong> Konsole (auf Ihrem Desktop). Danach verbinden Sie sich mit einem der <strong>IP</strong>-<strong>Symcon</strong>Server. Dann klicken Sie unter “Objekt erstellen” auf “Instanz erstellen”. Hier klicken Sie “W&T” an.


Nun wählen Sie aus Counter, Input und Output eine für Ihre Bedürfnisse passende und Ihren angeschlossenen Gerätenentsprechende Funktion aus. Wenn Sie mehrere Kanäle ihres Gerätes einbinden wollten, so können Sie den Schritt derAnleitung beliebig oft wiederholen. Klicken Sie nun zweimal auf “Weiter” und einmal auf “OK”. Es öffnet sichbeispielsweise die Konfiguration des “WuT Outputs“. Hier sind Einstellungen zum Kanal des Gerätes möglich. Diegenaue Belegung der Kanäle können Sie der Anleitung Ihres W&T Gerätes entnehmen.Klicken Sie jetzt auf das Zahnrad (unten links) und tragen Sie die <strong>IP</strong>-Adresse des Web-IOs ein.Ein Passwort ist optional. Die Werkseinstellung beinhaltet kein Passwort.Der Timer muss selbstverständlich aktiviert sein, damit <strong>IP</strong>-<strong>Symcon</strong> innerhalb einer manuell eingegebenen Zeit neue Datenvom Web-IO erhalten kann und eine Veränderung sichtbar wird. (Die beschriebene Konfiguration des Wut Gateways istnur bei erstmaliger Installation nötig. Beim Zufügen weiterer Geräte können Sie diesen Schritt überspringen.)Klicken Sie dann auf “Übernehmen” und auf “OK” und danach noch einmal auf “OK”. Nun klicken Sie auf„Willkommen“ (unten links) und danach unter „WebFront“ auf „WebFront öffnen“. Ihr Browser öffnet daraufhin dieBenutzeroberfläche von <strong>IP</strong>-<strong>Symcon</strong> und schon können Sie beispielsweise unter “WuT Output” ans Web-IOangeschlossene Geräte ein- bzw. ausschalten.Herzlichen Glückwunsch! Die ersten Schritte für eine einfach zu bedienende Gebäudeautomation sind getan.


WUT_SwitchModeboolean WUT_SwitchMode ( integer $InstanzID , boolean $Status )ParameterlisteInstanzIDStatusID des zu schaltenden GerätsTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSchaltet den Kanal mit der ID InstanzID auf Wert Status.BeispielWUT_SwitchMode(12345, true); //Kanal einschalten


TextParserDer TextParser in <strong>IP</strong>-<strong>Symcon</strong> ermöglicht Ihnen bestimmte Teile aus z.B. einer Webseite oder eine Datei heraus zuscheiden, indem Sie mehrere Regeln hintereinander ausführen. Es stehen ihnen dabei vier verschiedene Regeln zurVerfügung:FunktionText abscheiden vorText abschneiden hinterHole TextText ausschneidenBeschreibungSchneidet allen Text vor Tag1 abSchneidet allen Text hinter Tag1 abHolt den Text bis zum Tag1 in die VariableSchneidet den Text zwischen Tag1 und Tag2 aus und schreibt ihn in die VariableSie können mehrere Regeln hintereinander anwenden und sogar mehrere “Hole Text”- und “Text ausschneiden”-Operationen verwenden.BeispielEin kleines Beispiel soll zeigen, wie man die erste Headline von heise.de auslesen kann, um diese z.B. im WebFrontanzeigen zu können.1. Zuerst müssen Sie den Text Parser erstellen.2. Danach müssen Sie einen übergeordnete Instanz erstellen. In unserem Beispiel wird der WWW Reader erfordert.3. Im WWW Reader muss die URL http:///www.heise.de angeben werden und ggf. der Timer aktiviert werden, der dieSeite zyklisch abfragt.4. Zurück im Text Parser müssen folgende Regeln angegeben werden, um die Headline auslesen zu können.Der Weg diese Regeln herauszufinden ist, sich den HTML Ciode der Webseite anzusehen und nach markanten Stellenzu suchen, die abgeschnitten werden können, bis am Ende nur noch der gewünschte Text übrig bleibt. Diese Regelnkönnen dann in <strong>IP</strong>-<strong>Symcon</strong> eingetragen werden.RegelnBeschreibungText abschneiden vorText abschneiden vor “>Hole TextRegelScreenshot


RegisterVariableRegisterVariable stellt eine Datenweiterleitungs- und -verarbeitungsschnittstelle zur Verfügung.KonfigurationFalls Sie ihr Gerät noch nicht eingerichtet haben, folgen sie bitte den Schritten auf dieser Seite: Geräte einbindenDas RegisterVariable Modul verbindet sich nicht automatisch mit einer übergeordneten Instanz. Sie müssen dafürübergeordnete Instanz auswählen oder eine neue erstellen. Sie können auch weitere Splitter hinzufügen (z.B. Cutter), umdie ankommenden Daten vor der Auswertung direkt synchronisieren zu lassen.Die Ausführung der Skripte erfolgt seriell. Das Bedeutet, dass Sie ihre Skripte nicht mit Semaphoren schützen müssen.DatenverarbeitungWerden von der übergeordneten Instanz (Kommunikationsschnittstelle) neue Daten empfangen, wird das Ziel-Skript derRegisterVariable-Instanz ausgeführt. In diesem stehen die empfangenen Daten über $_<strong>IP</strong>S['VALUE'] zur Verfügung.Es gibt Datenquellen, bei denen erst mehrere empfangene Datensendungen eine sinnvolle Auswertung ermöglichen.Daher müssen die empfangenen Daten zwischengespeichert werden. Da Probleme auftreten können, wenn man binäreDaten in einer normalen String-Variable in <strong>IP</strong>-<strong>Symcon</strong> speichert (defekte <strong>IP</strong>-<strong>Symcon</strong>-Konfiguration), gibt es die FunktionRegVar_SetBuffer(integer $InstanzID, string $Puffer), die Daten im einen zur RegisterVariable-Instanz gehörigen Pufferspeichert. Die im Puffer gespeicherten Daten lassen sich mit der Funktion RegVar_GetBuffer(integer $InstanzID)auslesen. Mit der Funktion RegVar_SendText(integer $InstanzID, string $Text) lassen sich Datenstrings über dieKommunikationsschnittstelle senden. Intern wird hierbei die passende Sendefunktion, wie z.B. COMPort_SendText,ausgeführt.Der Puffer wird nach einem Neustart von <strong>IP</strong>-<strong>Symcon</strong> gelöscht!Verwenden Sie bitte KEINE VARIABLE als Puffer. Andernfalls kann es zu Instabilitäten innerhalb von <strong>IP</strong>-<strong>Symcon</strong>kommen und im schlimmsten Fall eine komplett zerstörte Konfiguration verursachen. Da sich dieses Problem auchinkrementell auf den Backup Ordner auswirken kann, haben Sie dann unter Umständen nicht einmal eine BackupKonfiguration. Nutzen Sie den internen Puffer der Instanz, um Daten zwischenzuspeichern.RegVar_SetBuffer / RegVar_GetBufferBeispieleFolgendes Beispiel verkettet empfangene Daten und gibt durch ; separierte Datensätze bei Vervollständigung aus:// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden istif ($_<strong>IP</strong>S['SENDER'] == "RegisterVariable"){// bereits im Puffer der Instanz vorhandene Daten in $data kopieren$data = RegVar_GetBuffer($_<strong>IP</strong>S['INSTANCE']);// neu empfangene Daten an $data anhängen$data .= $_<strong>IP</strong>S['VALUE'];// wenn das Trennzeichen ; in $data gefunden worden istif (strpos($data, ';')){// $data in durch ; separierte Datensätze zerlegen$datasets = explode(';', $data);// alle nicht durch ; terminierten Datensätze ausgebenfor ($i = 0; $i < count($datasets) - 1; $i++){echo "empfangener Datensatz: ".$datasets[$i]."\n";}// $data auf den Inhalt des letzten (unvollständigen) Datensatzes setzen


}$data = $datasets[count($datasets) - 1];}// Inhalt von $data im Puffer der RegisterVariable-Instanz speichernRegVar_SetBuffer($_<strong>IP</strong>S['INSTANCE'], $data);Folgendes Beispiel verkettet empfangene Daten und gibt Blöcke von einer Länge von genau 16 Zeichen aus:// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden istif ($_<strong>IP</strong>S['SENDER'] == "RegisterVariable"){// bereits im Puffer der Instanz vorhandene Daten in $data kopieren$data = RegVar_GetBuffer($_<strong>IP</strong>S['INSTANCE']);// neu empfangene Daten an $data anhängen$data .= $_<strong>IP</strong>S['VALUE'];// wenn $data mindestens 16 Zeichen lang istif (strlen($data) >= 16){// $data in Blöcke von bis zu 16 Zeichen zerlegen$datasets = str_split($data, 16);// $data leeren$data = "";}// alle Datensätze durcharbeitenfor ($i = 0; $i < count($datasets); $i++){// vollständige Datensätze (genau 16 Zeichen lang) ausgebenif (strlen($datasets[$i]) == 16){echo "empfangener Datensatz: ".$datasets[$i]."\n";}else{// Unvollständige Datensätze in $data schreiben$data = $datasets[$i];}}}// Inhalt von $data im Puffer der RegisterVariable-Instanz speichernRegVar_SetBuffer($_<strong>IP</strong>S['INSTANCE'], $data);Tipps & TricksSie können sich alle übergeben Variable anzeigen lassen


RegVar_SendTextboolean RegVar_SendText ( integer $InstanzID , string $Text )ParameterlisteInstanzIDTextID des zu schaltenden GerätsZu sendender PufferRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen String Text über die Instanz mit der ID InstanzIDBeispielRegVar_SendText(12345, "Hallo Welt");


RegVar_SetBufferboolean RegVar_SetBuffer ( integer $InstanzID , string $Puffer )ParameterlisteInstanzIDPufferID des zu schaltenden GerätsDaten, die in den Puffer geschrieben werden sollenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den internen Puffer der Instanz mit ID InstanzID auf Wert PufferBeispiel$buf = RegVar_GetBuffer(12345);$buf .= $_<strong>IP</strong>S['VALUE']; //konkatenieren//verarbeiten ...RegVar_SetBuffer(12345, $buf); //Restpuffer zurückschreiben


RegVar_GetBufferboolean RegVar_GetBuffer ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteString des aktuellen PuffersBeschreibungLiest den internen Puffer der Instanz mit ID InstanzID.Beispiel$buf = RegVar_GetBuffer(12345);$buf .= $_<strong>IP</strong>S['VALUE']; //konkatenieren//verarbeiten ...RegVar_SetBuffer(12345, $buf); //Restpuffer zurückschreiben


Text to SpeechBevor Sie das Text to Speech Modul unter Windows 2000 benutzen können, müssen Sie sich folgende Komponente vonMicrosoft herunterladen:Microsoft ReaderMicrosoft Reader TTSDanach stehen ihnen zwei Stimmen zur Verfügung die deutschsprachigen “LH Stefan” und “LH Anna”.Microsoft Vista bringt bereits ein installiertes Text To Speech mit, dass aber leider nur mit einer englischen Stimme. Hiergibt es eine dazu eine passende kostenlose deutsche Stimme bei Microsoft: Steffi, ca. 20MBSie können jedoch bessere Engines nutzen (z.B. von AT&T (Klara 16khz)).Verschiedene Sprachen findet man hier oder hier.Um eine Sprachausgabe zu tätigen, rufen sie den PHP Befehl TTS_Speak aus einem Script auf.Um die Sprachausgabe unter Windows Vista/7 nutzen zu können, muss der <strong>IP</strong>-<strong>Symcon</strong> Dienst als Lokaler Benutzerausgeführt werden. Beachten Sie, dass dadurch die <strong>IP</strong>S_ExecuteEx Funktion nicht mehr zur Verfügung steht.Über Start > Ausführen die Dienstverwaltung aufrufen%SystemRoot%\system32\services.msc /sIn den Eigenschaften des <strong>IP</strong>-<strong>Symcon</strong> Dienstes im “Anmelden” Reiter die Option “Dieses Konto” auswählen und dasPasswort für den ausgewählten Benutzer angeben.Nach Bestätigen mit OK muss der Dienst neu gestartet werden.


TTS_Speakboolean TTS_Speak ( integer $InstanzID , string $Text , boolean $Warten )ParameterlisteInstanzIDTextWartenID des zu schaltenden GerätsZu sagender TextTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSpricht über die Instanz mit der ID InstanzID den in Text angegeben Text. Der Warten Parameter gibt an, ob gewartetwerden soll, bis die Sprachausgabe beendet wurde.Diese Funktion funktioniert nicht unter Windows Vista/2003 oder neuer. Das liegt daran, dass Dienste, wie <strong>IP</strong>-<strong>Symcon</strong>einer ist, aus Sicherheitsgründen nicht auf interaktive Komponenten im System zugreifen können. Die Text To SpeechAusgabe ist solch eine interaktive Komponente. Das Problem macht sich mit der Fehlermeldung: OLE error 80045063Auszug MSDN: SPERR_NOT_ACTIVE_SESSION bemerkbar.“Neither audio output nor input is supported for non-active console sessions.”Als Alternative sollte die Funktion TTS_GenerateFile im Zusammenhang mit dem Media Player genutzt werden.BeispielTTS_Speak(12345, "Hallo Welt!", true); //Warten bis zu Ende gesprochen wurde


TTS_GenerateFileboolean TTS_GenerateFile ( integer $InstanzID , string $Text , string $Dateiname , integer $Format )ParameterlisteInstanzIDTextDateinameFormatID des zu schaltenden GerätsZu sagender TextDateiname/-pfad im SystemFormatWertDefault 08kHz, 8Bit, Mono 48kHz, 8Bit, Stereo 58kHz, 16Bit, Mono 68kHz, 16Bit, Stereo 711kHz, 8Bit, Mono 811kHz, 8Bit, Stereo 911kHz, 16Bit, Mono 1011kHz, 16Bit, Stereo 1112kHz, 8Bit, Mono 1212kHz, 8Bit, Stereo 1312kHz, 16Bit, Mono 1412kHz, 16Bit, Stereo 1516kHz, 8Bit, Mono 1616kHz, 8Bit, Stereo 1716kHz, 16Bit, Mono 1816kHz, 16Bit, Stereo 1922kHz, 8Bit, Mono 2022kHz, 8Bit, Stereo 2122kHz, 16Bit, Mono 2222kHz, 16Bit, Stereo 2324kHz, 8Bit, Mono 2424kHz, 8Bit, Stereo 2524kHz, 16Bit, Mono 2624kHz, 16Bit, Stereo 2732kHz, 8Bit, Mono 2832kHz, 8Bit, Stereo 2932kHz, 8Bit, Stereo 3032kHz, 16Bit, Stereo 3144kHz, 8Bit, Mono 3244kHz, 8Bit, Stereo 33


44kHz, 16Bit, Mono 3444kHz, 16Bit, Stereo 3548kHz, 8Bit, Mono 3648kHz, 8Bit, Stereo 3748kHz, 16Bit, Mono 3848kHz, 16Bit, Stereo 39RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungGeneriert über die Instanz mit der ID InstanzID eine Sounddatei im Wav-Format in die Datei Dateiname. Der FormatParameter bestimmt die Qualität der Wav Datei.Warning: % wurde nicht gefunden in [...] on line …Sollte o.g. Fehlermeldung erscheinen, deutet es auf ein Zugriffsproblem hin. Wahrscheinlich wird die zu beschreibendeDatei von einem anderen Prozess blockiert.Desweiteren ist es nicht möglich auf Netzwerkpfade zu schreiben.BeispielTTS_GenerateFile(44007, "Hello World", "C:/HelloWorld.WAV", 19);


IMAPBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2Das IMAP-Modul kann über die normale Konfigurationsseite der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole konfiguriert werden.Parameter wie Host, Post, Benutzername und Passwort können Sie der Anleitung ihres Mail-Providers übernehmen. Fürdie gängigsten Mail-Provider sind Voreinstellungen direkt vorhanden und können über die Auswahlbox eingestelltwerden.Damit die E-Mails in der Visualisierung angezeigt werden, muss der Timer aktiviert werden, der zyklisch den Posteingangdes Postfaches prüft. Dabei werden nur die Betreffzeilen heruntergeladen. Die komplette E-Mail wird erst geladen, wenndie Visualisierung eine Aufforderung dazu gibt.Über die Variable LastMessage kann ermittelt werden, ob und wann neue Mails eingetroffen sind. Falls keine E-Mails imPostfach sind, hat die Variable den Wert 0. Die UnreadMessages-Variable gibt die Anzahl der ungelesen Nachrichtenzurück.


IMAP_GetCachedMailsBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2array IMAP_GetCachedMails ( integer $InstanzID )ParameterlisteInstanzIDID der IMAP-InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis ein Array mit Daten zu den gecacheten E-Mails,andernfalls ein Boolean mit dem Wert FALSE.BeschreibungDer Befehl gibt ein Array mit Informationen über die gecacheten E-Mails einer IMAP-Instanz mit der ID InstanzIDzurück. Sollte die Instanz nicht existieren, wird eine Warnung generiert.Beispielprint_r(IMAP_GetCachedMails(12345));/* liefert z.B.:Array([0] => Array([Date] => 1295756412[Flags] => SEEN[Recipient] => recipient@test.test[SenderAddress] => sender@test.test[SenderName] => Test Sender[Subject] => 3 2 1 Test[UID] => 1234))*/


IMAP_GetMailExBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2array IMAP_GetMailEx ( integer $InstanzID , string $UID )ParameterlisteInstanzIDUIDID der IMAP-InstanzUID der zu ladenden E-MailRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis ein Array mit Daten zu den gecacheten E-Mails,andernfalls ein Boolean mit dem Wert FALSE.BeschreibungDer Befehl lädt eine E-Mail mit der UID UID über die IMAP-Instanz mit der ID InstanzID und gibt ein Array mit denDaten der E-Mail zurück. Sollte die Instanz oder eine E-Mail mit der übergebenen UID nicht existieren, wird eineWarnung generiert.Beispielprint_r(IMAP_GetMailEx(12345, 1234));/* liefert z.B.:Array([ContentType] => text/plain[Date] => 1295756412[Flags] => SEEN[Recipient] => ips@test.test[SenderAddress] => sender@test.test[SenderName] => Test Sender[Subject] => 3 2 1 Test[Text] => This is a test![UID] => 1234)*/


POP3Benötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2Das POP3-Modul kann über die normale Konfigurationsseite der <strong>IP</strong>-<strong>Symcon</strong> Verwaltungskonsole konfiguriert werden.Parameter wie Host, Post, Benutzername und Passwort können Sie der Anleitung Ihres Mail-Providers entnehmen. Fürdie gängigsten Mail-Provider sind Voreinstellungen direkt vorhanden und können über die Auswahlbox eingestelltwerden.Damit die E-Mails in der Visualisierung angezeigt werden, muss der Timer aktiviert werden, der zyklisch den Posteingangdes Postfaches prüft. Dabei werden nur die Betreffzeilen heruntergeladen. Die komplette E-Mail wird erst geladen, wenndie Visualisierung eine Aufforderung dazu gibt.Über die Variable LastMessage kann ermittelt werden, ob und wann neue Mails eingetroffen sind. Falls keine E-Mails imPostfach sind, hat die Variable den Wert 0. Im Gegensatz zu IMAP ist die Anzeige der Anzahl der ungelesenen E-Mailsfür POP3 technisch nicht realisierbar.


POP3_GetCachedMailsBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2array POP3_GetCachedMails ( integer $InstanzID )ParameterlisteInstanzIDID der POP3-InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis ein Array mit Daten zu den gecacheten E-Mails,andernfalls ein Boolean mit dem Wert FALSE.BeschreibungDer Befehl gibt ein Array mit Informationen über die gecacheten E-Mails einer POP3-Instanz mit der ID InstanzIDzurück. Sollte die Instanz nicht existieren, wird eine Warnung generiert.Beispielprint_r(POP3_GetCachedMails(12345));/* liefert z.B.:Array([0] => Array([Date] => 1295756412[Flags] =>[Recipient] => recipient@test.test[SenderAddress] => sender@test.test[SenderName] => Test Sender[Subject] => 3 2 1 Test[UID] => 1234))*/


POP3_GetMailExBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2array POP3_GetMailEx ( integer $InstanzID , string $UID )ParameterlisteInstanzIDUIDID der POP3-InstanzUID der zu ladenden E-MailRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis ein Array mit den Daten der E-Mail, andernfallsein Boolean mit FALSE.BeschreibungDer Befehl lädt eine E-Mail mit der UID UID über die POP3-Instanz mit der ID InstanzID und gibt ein Array mit denDaten der E-Mail zurück. Sollte die Instanz oder eine E-Mail mit der übergebenen UID nicht existieren, wird eineWarnung generiert.Beispielprint_r(POP3_GetMailEx(12345, 1234));/* liefert z.B.:Array([ContentType] => text/plain[Date] => 1295756412[Flags] =>[Recipient] => ips@test.test[SenderAddress] => sender@test.test[SenderName] => Test Sender[Subject] => 3 2 1 Test[Text] => This is a test![UID] => 1234)*/


SMTPBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2<strong>IP</strong>-<strong>Symcon</strong> bietet direkt ein Modul an, über das Sie E-Mails mit einer einzigen Codezeile verschicken können. Sie könnendas Modul als Instanz in Ihrem System einrichten. Es ist unter Hersteller “None” und “E-Mail senden (SMTP)” zufinden. Der Tabelle können sie die einzelnen Eigenschaften entnehmen.EigenschaftProviderHostPortBedeutungEine Auswahl an gängigen Mail-Anbietern. Die Auswahl setzt die Eigenschaften Host, Port und SSL automatisch.Servername oder <strong>IP</strong> zum Mail-AnbieterPort, auf dem der Server arbeitetSSLAuthentifizierungBenutzernamePasswortAbsender-NameGibt an, ob SSL genutzt werden sollGibt an, ob ein Benutzername/Passwort erforderlich istIhr Benutzername (Details erhalten Sie von ihrem Mail-Anbieter)Ihr PasswortDer Name, der beim Empfänger sichtbar istAbsender-Adresse Die Adresse, die beim Empfänger sichtbar ist. Je nach Anbieter muss die Absender-Adresse der eigenen Adresseentsprechen.EmpfängerNur erforderlich für die SMTP_SendMail Funktion, die automatisch an den Empfänger dieses Feldes sendet.


SMTP_SendMailBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2boolean SMTP_SendMail ( integer $InstanzID , string $Betreff , string $Text )ParameterlisteInstanzIDBetreffTextID der SMTP InstanzBetreff der E-MailText der E-MailRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet über die Instanz mit der ID InstanzID eine E-Mail mit dem Betreff und Text.Es wird der Empfänger genutzt, der in der Eigenschaftenseite angegeben wurde. Wenn unterschiedliche Empfängeraddressiert werden sollen, nutzen Sie bitte die SMTP_SendMailEx Funktion.BeispielSMTP_SendMail(12345, "Alarm!", "Die Heizung ist ausgefallen!");


SMTP_SendMailExBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.2boolean SMTP_SendMailEx ( integer $InstanzID , string $Empfänger , string $Betreff , string $Text )ParameterlisteInstanzIDEmpfängerBetreffTextID der SMTP InstanzE-Mail Adresse des EmpfängersBetreff der E-MailText der E-MailRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet über die Instanz mit der ID InstanzID eine E-Mail mit dem Betreff und Text an Empfänger. Im Gegensatz zurSMTP_SendMail Funktion kann hier der Empfänger explizit im Funktionsaufruf angegeben werden.BeispielSMTP_SendMailEx(12345, "me@example.com", "Alarm!", "Die Heizung ist ausgefallen!");


SMSUm das SMS Modul verwenden zu können, wird ein Account bei http://www.clickatel.com benötigt.Die nachfolgende Step-By-Step Anleitung erklärt den Anmeldeprozess:1. Die folgende URL öffnet die Anmeldeseite zur Registrierung am SMS Gateway:https://www.clickatell.com/central/user/client/step1_new.php?prod_id=22. Bei Step 1 muss “Clickatell Central" ausgewählt sein.Alle anderen Felder müssen einfach ausgefüllt werden.Anschließend das Formular mit “Continue“ bestätigen.3. Sie bekommen eine Mail, mit deren Hilfe Sie Ihren Account verifizieren können.Nach dem Vorgang können Sie sich einloggen.4. Bevor Sie Credits kaufen können, müssen Sie Ihre Mobilfunknummer verifizieren.5. Kaufen Sie die gewünschte Anzahl an Credits.Damit <strong>IP</strong>-<strong>Symcon</strong> mit dem Gateway kommunizieren kann, muss zusätzlich noch ein Verbindungsaccount erstellt werden.1. Öffnen sie folgenden URL:https://www.clickatell.com/central/manage_products.php2. Wählen Sie unter “Add Connection” die Option “SOAP” aus.3. Außer dem Namensfeld müssen sie Nichts eingeben.4. Bestätigen Sie mit “Submit“.5. Sie erhalten eine API-ID, die Sie in <strong>IP</strong>-<strong>Symcon</strong> angeben können.ModulkonfigurationDie Konfiguration besteht aus dem Benutzernamen und Passwort zu Clickatel und der APIID, die sie in ihrem Accounteingerichtet haben.Die Absendernummer muss in ihrem Clickatel Account verfiziert worden sein, bevor sie über diese SMS versendenkönnen.Die Formatierung der Absender und Empfänger-Nummer sollte folgendermaßen aussehen:Ländercode Vorwahl NummerEs müssen keine führenden Nullen oder + Zeichen angegeben werden.Beispiel: 49171123456789


SMS_Sendboolean SMS_Send ( integer $InstanzID , string $Nummer , string $Text )ParameterlisteInstanzIDNummerTextID des zu schaltenden GerätsMobilfunknummer des EmpfängersText der SMS (max. 160 Zeichen)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet über die Instanz mit der ID InstanzID eine SMS mit dem Text an Nummer.Es wird die Absendernummer genutzt, die in der Eigenschaftenseite angegeben wurde.BeispielSMTP_SendMailEx(12345, "me@example.com", "Alarm!", "Die Heizung ist ausgefallen!");


MediaPlayerMit dem Media Player Modul können verschiedene Sound-Dateien wie Wave, Midi oder MP3 abgespielt werden. DasModul erlaubt die Verwendung mehrer Soundkarten. Damit können Sprachausgaben (Hinweise, Warnungen) oder dieLieblingsmusik raumbezogen ausgegeben werden.Tipps & TricksSie können beliebig viele Media Player Instanzen erstellen und sogar auf die selbe Soundkarte konfigurieren. Dadurchkönnen Sie über einen Instanz die Musik im Hintergrund (leise) weiterlaufen lassen, während Sie mit einer zweitenInstanz eine Ansage tätigen.


WAC_PlayFileboolean WAC_PlayFile ( integer $InstanzID , string $Dateiname )ParameterlisteInstanzIDDateinameID des zu steuernden Media PlayersPfad zur abzuspielenden DateiRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSpielt eine Datei mit Dateiname direkt über den Media Player mit der ID InstanzID ab. Der Befehl ist nur zurVereinfachung vorhanden. Sie können ihn auch durch eine Abfolge von WAC_ClearPlaylist, WAC_AddFile, WAC_Playersetzen.Bitte beachten Sie die unterstützten Dateiformate. Zur Zeit unterstützte Formate: *.wav, *.mp3, *.wma (jeweils ohneDRM)Beispiel//Bitte beachten Sie die Slashes im Pfad.//Die genau Bedeutung können Sie im PHP Handbuch nachlesen: http://de.php.net/manual/de/language.types.strinWAC_PlayFile(12345, "D:/MP3s/Lieblingssong.mp3");


WAC_AddFileboolean WAC_AddFile ( integer $InstanzID , string $Dateiname )ParameterlisteInstanzIDDateinameID des zu steuernden Media PlayersPfad zur abzuspielenden DateiRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFügt eine Datei der internen Playlist vom Media Player mit der ID InstanzID zu.Es wird nicht geprüft, ob die Datei schon vorhanden ist. Dieselbe Datei kann also mehrfach in der Playlist vorhandensein.Um die Wiedergabe zu starten, müssen Sie WAC_Play aufrufen.Beispiel//Bitte beachten Sie die Slashes im Pfad.//Die genaue Bedeutung können Sie im PHP Handbuch nachlesen://http://de.php.net/manual/de/language.types.string.phpWAC_AddFile(12345, "D:/MP3s/Lieblingssong.mp3");


WAC_Playboolean WAC_Play ( integer $InstanzID )ParameterlisteInstanzIDID des zu steuernden Media PlayersRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungStartet die Wiedergabe der internen Playlist vom Media Player mit der ID InstanzID. Falls Sie noch keine Dateienhinzugefügt haben, können Sie dies über WAC_AddFile tun. Eine direkte Funktion zum Abspielen einer einzelnen Dateiist WAC_PlayFile. Bitte beachten Sie auch die unterstützten Dateiformate, die sich auf WAC_PlayFile finden können.Sollte eine Wiedergabe bereits gestartet worden sein, wird durch Aufrufen dieses Befehls die Wiedergabe vom Anfang derDatei gestartet.Sollte die Playliste leer sein, wird eine Fehlermeldung generiert.BeispielWAC_Play(12345); //Abspielen


WAC_Stopboolean WAC_Stop ( integer $InstanzID )ParameterlisteInstanzIDID des zu steuernden Media PlayersRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE. Es wird auchTRUE zurückgegeben, falls keine aktive Wiedergabe vorhanden ist.BeschreibungStoppt die Wiedergabe der internen Playlist vom Media Player mit der ID InstanzID.BeispielWAC_Stop(12345);


WAC_Pauseboolean WAC_Pause ( integer $InstanzID )ParameterlisteInstanzIDID des zu steuernden Media PlayersRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE. Es wird auchTRUE zurückgegeben, falls keine aktive Wiedergabe vorhanden ist.BeschreibungPausiert die Wiedergabe der internen Playlist vom Media Player mit der ID InstanzID. Durch ein erneutes aufrufen vonWAC_Pause oder einem Aufruf von WAC_Play kann die Wiedergabe fortgesetzt werden.BeispielWAC_Pause(12345);


WAC_Prevboolean WAC_Prev ( integer $InstanzID )ParameterlisteInstanzIDID des zu steuernden Media PlayersRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungGeht in der internen Playlist vom Media Player mit der ID InstanzID einen Titel zurück. Sollte die Wiedergabe gestartetsein, wird nach dem Zurückgehen der dann neue aktuelle Titel von Anfang an abgespielt.Sollte die Playliste leer sein, wird eine Fehlermeldung generiert.Sollte die Playlist am Anfang angelangt sein, wird der aktuelle Titel von Vorne abgespielt.BeispielWAC_Prev(12345);


WAC_Nextboolean WAC_Next ( integer $InstanzID )ParameterlisteInstanzIDID des zu steuernden Media PlayersRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungGeht in der internen Playlist vom Media Player mit der ID InstanzID einen Titel vorwärts oder wählt zufällig einen Titelaus, wenn Shuffle aktiviert ist. Sollte die Wiedergabe gestartet sein, wird nach dem Zurückgehen der dann neue, aktuelleTitel von Anfang an abgespielt.Sollte die Playliste leer sein, wird eine Fehlermeldung generiert.Sollte die Playlist am Ende angelangt sein, wird wieder entweder eine Fehlermeldung generiert oder, falls Repeat aktiviertist, am Anfang der Playlist neu gestartet.BeispielWAC_Next(12345);


WAC_SetVolumeboolean WAC_SetVolume ( integer $InstanzID , integer $Lautstärke )ParameterlisteInstanzIDID des zu steuernden Media PlayersLautstärke 0-100 (%)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungFadet die Lautstärke vom Media Player mit der ID InstanzID innerhalb von 500ms auf die gewünschte Lautstärke.BeispielWAC_SetVolume(12345, 85);


WAC_SetShuffleboolean WAC_SetShuffle ( integer $InstanzID , boolean $Zufallswiedergabe )ParameterlisteInstanzIDZufallswiedergabeID des zu steuernden Media PlayersTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungAktiviert/ deaktiviert die Zufallswiedergabe vom Media Player mit der ID InstanzID.Der Befehl wird sofort übernommen, macht sich aber erst beim nächsten Track der aktuellen Playlist bemerkbar. Dieaktuelle Wiedergabe wird nicht beeinflusst.BeispielWAC_SetShuffle(12345, true); //Zufallswiedergabe einschalten


WAC_SetRepeatboolean WAC_SetRepeat ( integer $InstanzID , boolean $Wiederholen )ParameterlisteInstanzIDWiederholenID des zu steuernden Media PlayersTRUE für An, FALSE für AusRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungAktiviert/ deaktiviert die Wiederholung der Playlist vom Media Player mit der ID InstanzID.Der Befehl wird sofort übernommen, macht sich aber erst beim nächsten Track der aktuellen Playlist bemerkbar. Dieaktuelle Wiedergabe wird nicht beeinflusst.BeispielWAC_SetRepeat(12345, true); //Playlist wiederholung aktivieren


WAC_SetPositionboolean WAC_SetPosition ( integer $InstanzID , integer $Sekunden )ParameterlisteInstanzIDSekundenID des zu steuernden Media PlayersSprungmarke in SekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt den Positionsmarker vom Media Player mit der ID InstanzID auf die angegeben Sekunden. Der Titel muss zumAusführungszeitpunkt bereits abgespielt werden.BeispielWAC_PlayFile(12345, "my.mp3"); //Titel abspielenWAC_SetPosition(12345, 60); //auf die 1 Minutenmarke im Lied springen


WAC_ClearPlaylistboolean WAC_ClearPlaylist ( integer $InstanzID )ParameterlisteInstanzIDID des zu steuernden Media PlayersRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungLöscht die interne Playlist vom Media Player mit der ID InstanzID.BeispielWAC_ClearPlaylist(12345);


WAC_GetPlaylistLengthinteger WAC_GetPlaylistLength ( integer $InstanzID )ParameterlisteInstanzIDID des zu steuernden Media PlayersRückgabewerteAnzahl der Tracks, die in der Playlist eingetragen sind.BeschreibungGibt die Länge der internen Playlist vom Media Player mit der ID InstanzID zurück.Beispiel$len = WAC_GetPlaylistLength(12345);if($len > 0)WAC_Play(12345);


WAC_GetPlaylistPositioninteger WAC_GetPlaylistPosition ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteWert zwischen 1 und WAC_GetPlayListLength; Falls die Playlist leer sein sollte, wird -1 zurückgegeben.BeschreibungGibt die aktuelle Position der internen Playlist vom Media Player mit der ID InstanzID zurück.Beispiel$pos = WAC_GetPlaylistPosition(12345);


WAC_SetPlaylistPositionboolean WAC_SetPlaylistPosition ( integer $InstanzID )ParameterlisteInstanzIDID des zu schaltenden GerätsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSetzt die aktuelle Position der internen Playlist vom Media Player mit der ID InstanzID auf die neue Position. Nachdem Ausführen muss WAC_Play ausgeführt werden, wenn die Wiedergabe an der neuen Position starten soll. Andernfallswird der nächste Titel, nach dem Ende des aktuellen Titels abgespielt.BeispielWAC_SetPlaylistPosition(12345, 0); //An Anfang setzen


System InformationenÜber die Systemfunktionen können Sie Informationen über ihr System und die vorhandene Hardware auslesen, um diesezu visualisieren oder anderweitig in Skripten zu verwenden.


Sys_Pingarray Sys_Ping ( string $Host , integer $Timeout )ParameterlisteHostTimeoutRechnername oder <strong>IP</strong>-AdresseZeit in MillisekundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet einen Ping an Host und wartet Timeout Millisekunden.BeispielSys_Ping("meinrechner", 1000); //Max. 1 Sekunde warten


Sys_GetProcessInfoarray Sys_GetProcessInfo ( )RückgabewerteArray mit Informationen, wie z.B. Speicherverbrauch und Anzahl der ThreadsBeschreibungGibt Informationen zum Prozess von <strong>IP</strong>-<strong>Symcon</strong>.Beispielprint_r(Sys_GetProcessInfo());/*Array([<strong>IP</strong>S_HANDLECOUNT] => 635[<strong>IP</strong>S_NUMTHREADS] => 53[<strong>IP</strong>S_VIRTUALSIZE] => 240373760[<strong>IP</strong>S_WORKINGSETSIZE] => 32706560[<strong>IP</strong>S_PAGEFILE] => 52719616[PROCESSCOUNT] => 53)*/


Sys_GetMemoryInfoarray Sys_GetMemoryInfo ( )RückgabewerteArray mit Informationen zum Gesamtspeicherverbrauch und virtuellen SpeicherverbrauchBeschreibungGibt Informationen zum Speicherverbrauch des Betriebssystems.Beispielprint_r(Sys_GetMemoryInfo());/*Array([TOTALPHYSICAL] => 1072467968[AVAILPHYSICAL] => 526647296[TOTALPAGEFILE] => 2420019200[AVAILPAGEFILE] => 1386422272[TOTALVIRTUAL] => 2147352576[AVAILVIRTUAL] => 1906978816)*/


Sys_GetCPUInfoarray Sys_GetCPUInfo ( )RückgabewerteArray mit Informationen zur CPU-AuslastungBeschreibungLiefert für jede CPU die aktuelle Last (CPU_*) und die durchschnitt Last der letzten 60 Sekunden für alle CPU Kerne(CPU_AVG). Die durchschnittliche Last wird berechnet, indem jeder Sekunde ein Messwert der aktuellen Lastgenommen und abgespeichert wird. Die durchschnittliche Last wird berechnet, indem die letzten 60 Messwerte addiertund durch 60 geteilt werden.Die durchschnittliche Last ist nicht die durchschnittliche Last der aktuellen Last, sondern die durchschnittliche Lastder letzten 60 Sekunden.Beispielprint_r(Sys_GetCPUInfo());/*Array([CPU_0] => 3[CPU_AVG] => 3)*/


Sys_GetHardDiskInfoarray Sys_GetHardDiskInfo ( )RückgabewerteArray mit Informationen zu allen FestplattenBeschreibungLiefert Informationen zu den vorhandenen Festplatten im System inklusive der Größe und dem bereits verbrauchtenSpeicher.Beispielprint_r(Sys_GetHarddiskInfo());/*Array([HDD0] => Array([LETTER] => c:\[LABEL] =>[TOTAL] => 53684989952[FREE] => 23275171840))*/[NUMDRIVES] => 1


Sys_GetNetworkInfoarray Sys_GetNetworkInfo ( )RückgabewerteArray mit Informationen zu allen NetzwerkadapternBeschreibungLiefert Informationen über alle NetzwerkadapterBeispielprint_r(Sys_GetNetworkInfo());


Sys_GetSpoolerarray Sys_GetSpooler ( )RückgabewerteArray mit Informationen zu allen Druckerwarteschlagen und den im Druck befindlichen DokumentenBeschreibungGibt Informationen über alle Druckerwarteschlangen ausBeispielprint_r(Sys_GetSpooler());


Sys_GetBatteryarray Sys_GetBattery ( )RückgabewerteArray mit Informationen zur BatterieBeschreibungGibt Informationen über das Vorhandensein einer Batterie, ob sie in Gebrauch ist und wieviel Prozent der Batterie nochvorhanden sind.Beispielprint_r(Sys_GetBattery());/*Array([OnBattery] =&gt;[BatteryLevel] =&gt; -1)*/


Sys_GetURLContentarray Sys_GetURLContent ( string $URL )ParameterlisteURLVollständige URLRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis den Inhalt der Webseite (auch Binärcode),andernfalls FALSE.BeschreibungLiest den Inhalt der URL aus und gibt ihn als Rückgabewert zurück.Beispielecho Sys_GetURLContent("http://www.google.de");


Sys_GetURLContentExarray Sys_GetURLContentEx ( string $URL , array $Parameter )ParameterlisteURLParameterVollständige URLArray mit Index => Value PaarenTypTimeoutAuthUserAuthPassProxyHostProxyPortProxyUsernameProxyPasswordBeschreibungTimeout in MillisekundenBenutzername für Basis-AuthentifizierungPasswort für Basis-AuthentifizierungHost-Adresse zum ProxyPort zum ProxyBenutzername für ProxyPasswort für ProxyRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis den Inhalt der Webseite (auch Binärcode),andernfalls FALSE.BeschreibungLiest den Inhalt der URL aus und gibt ihn als Rückgabewert zurück. Dabei können einige Parameter für Timeouts,Authentifizierung und Proxy vorgenommen werden.Beispielecho Sys_GetURLContentEx("http://www.google.de", Array("AuthUser"=> "test", "AuthPass"=> "test"));


Shutter ControlUm das <strong>IP</strong>-<strong>Symcon</strong> Shutter-Modul hardwareunabhängig zu machen, braucht das Modul ein Skript, welches sich um dieWeitergabe der Befehle an Ihre Hardware kümmert.Alle, die folgende Hardware besitzen, können das Skript einfach kopieren und verwenden. Andere Hardware lässt sichleicht hinzufügen. (Mehr dazu unterhalb des Skripts).Eaton Xcomfort Shutter1-Wire ShutterHomematic (Dank an hengesb)LCN (Dank an philipp)FS20MSDieses Skript muss im Normalfall nur einmal in <strong>IP</strong>-<strong>Symcon</strong> vorhanden sein und es können beliebig viele Instanzen daraufzugreifen. Es muss Nichts editiert werden.Rolladen einmessenBeim zweiten Schritt werden die Zeiten gemessen, die der Rolladen braucht, um auf die einzelnen Positionen zu fahren.Die Messung muss zweimal durchgeführt werden. Für Auf und Ab. Zum Starten wird der entsprechende Buttongedrückt, woraufhin der Rolladen sich in Bewegung setzen sollte. Der Button muss erneut gedrückt werden, wenn die aufihm stehende Position erreicht wird.Nach jedem Einlernen müssen die Werte mit dem “Setzen” Button übernommen werden.Tipps & TricksBei einer Fahrt auf 0% und 100% werden fünf Sekunden zur Fahrzeit addiert, um eine definierte Position zuerreichen.Sollte die Laufzeit des Rollladens oberhalb des PHP-Skript-Limits liegen (180sek) muss dieses in der php.ini erhöhtwerden. (siehe PHP)Hinweise für LCN NutzerDas Shuttermodul kann mit dem Script universell für die Steuerung des Rolladen/Jalousie über die Ausgänge wie auchüber die Relais genutzt werden.Soll das Shuttermodul einen Rolladen/Jalousie steuern, welche/r an den zwei Ausgängen eines UPP/SH/HU hängt, dannmuss unter “Instance1! die Instanz des Ausgangs 1 des Moduls gewählt werden und für “Instance2! die Instanz desAusgangs 2 des Moduls. Diese Belegung entspricht dann der Standardrichtung, wie sie aus der LCN-Pro mit Hoch- bzw.Runterfahren angesteuert wird. Sollte der Anschluss umgekehrt sein, muss nur die Zuordung von Ausgang 1 und Ausgang2 zu den Einstellungen “Instance1! und “Instance2! geändert werden.Beim Betrieb mit Relais muss für “Instance1! immer das erste Relais der beiden angegeben werden. Das erste Relais istdas, welches den Strom AN/AUS schaltet. “Instance2! ist immer das Relais, welches die Richtung steuert.Sollte die Fahrtrichtung verdreht sein, muss dies manuell im Script geändert werden. Im “case Block für LCN” desShutter Scriptes findet sich an den beiden Stellen ein entsprechender Kommentar.Für den Fall, dass man unterschiedlich verdrahtete Rolladen/Jalousien an den Relais nutzt, müssen also für die jeweiligenKonfigurationen zwei Shutterscripte verwendet werden.Shutter Skript//Variables provided by ShutterControl Module//<strong>IP</strong>S_LogMessage("InstanceID", $_<strong>IP</strong>S['INSTANCE']); /* InstanceID *///<strong>IP</strong>S_LogMessage("Direction", $_<strong>IP</strong>S['DIRECTION']); /* {0..2} Stop, Up, Down *///<strong>IP</strong>S_LogMessage("Duration", $_<strong>IP</strong>S['DURATION']); /* ms */if($_<strong>IP</strong>S['SENDER'] != "ShutterControl")die("This script can only be started by the ShutterControl Module");


define("SC_DIRECTION_STOP", 0);define("SC_DIRECTION_UP", 1);define("SC_DIRECTION_DOWN", 2);$instance = <strong>IP</strong>S_GetInstance($_<strong>IP</strong>S['INSTANCE']);switch($instance['ModuleInfo']['ModuleID']){case "{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}": //FS20$running = CreateVariableByName($SC_INSTANCE, "Moving", 0);$value = GetValue(<strong>IP</strong>S_GetStatusVariableID($_<strong>IP</strong>S['INSTANCE'],"StatusVariable"));switch($_<strong>IP</strong>S['DIRECTION']){case SC_DIRECTION_STOP:if(GetValue($running)){FS20_SwitchMode($_<strong>IP</strong>S['INSTANCE'], $value);SetValue($running, false);}break;case SC_DIRECTION_UP:if(!GetValue($running)){FS20_SwitchMode($_<strong>IP</strong>S['INSTANCE'], true);SetValue($running, true);}if($SC_DURATION > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);FS20_SwitchMode($_<strong>IP</strong>S['INSTANCE'], true);SetValue($running, false);}break;case SC_DIRECTION_DOWN:if(!GetValue($running)){FS20_SwitchMode($_<strong>IP</strong>S['INSTANCE'], false);SetValue($running, true);}if($SC_DURATION > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);FS20_SwitchMode($_<strong>IP</strong>S['INSTANCE'], false);SetValue($running, false);}break;}break;case "{1B7B5B7D-CAA9-4AB5-B9D8-EC805EC955AD}": //xComfortswitch($_<strong>IP</strong>S['DIRECTION']){case SC_DIRECTION_STOP:MXC_ShutterStop($_<strong>IP</strong>S['INSTANCE']);break;case SC_DIRECTION_UP:MXC_ShutterMoveUp($_<strong>IP</strong>S['INSTANCE']);if($_<strong>IP</strong>S['DURATION'] > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);MXC_ShutterStop($_<strong>IP</strong>S['INSTANCE']);


}break;case SC_DIRECTION_DOWN:MXC_ShutterMoveDown($_<strong>IP</strong>S['INSTANCE']);if($_<strong>IP</strong>S['DURATION'] > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);MXC_ShutterStop($_<strong>IP</strong>S['INSTANCE']);}break;}break;case "{2D871359-14D8-493F-9B01-26432E3A710F}": //LCN$type=LCN_GetUnit($_<strong>IP</strong>S['INSTANCE']);switch($type){case 0: //Ausgängeswitch($_<strong>IP</strong>S['DIRECTION']){case SC_DIRECTION_STOP:LCN_SetIntensity($_<strong>IP</strong>S['INSTANCE'],0,0);LCN_SetIntensity($_<strong>IP</strong>S['INSTANCE2'],0,0);break;case SC_DIRECTION_UP:LCN_SetIntensity($_<strong>IP</strong>S['INSTANCE'],100,4);if($_<strong>IP</strong>S['DURATION'] > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);LCN_SetIntensity($_<strong>IP</strong>S['INSTANCE'],0,0);}break;case SC_DIRECTION_DOWN:LCN_SetIntensity($_<strong>IP</strong>S['INSTANCE2'],100,4);if($_<strong>IP</strong>S['DURATION'] > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);LCN_SetIntensity($_<strong>IP</strong>S['INSTANCE2'],0,0);}break;}break;case 2: //Reaisswitch($_<strong>IP</strong>S['DIRECTION']){case SC_DIRECTION_STOP:LCN_SwitchRelay($_<strong>IP</strong>S['INSTANCE'],false);break;case SC_DIRECTION_UP:LCN_SwitchRelay($_<strong>IP</strong>S['INSTANCE'],true);LCN_SwitchRelay($_<strong>IP</strong>S['INSTANCE2'],false); // Um Relaisrichtung zu ändern bitte auf trueif($_<strong>IP</strong>S['DURATION'] > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);LCN_SwitchRelay($_<strong>IP</strong>S['INSTANCE'],false);}break;case SC_DIRECTION_DOWN:LCN_SwitchRelay($_<strong>IP</strong>S['INSTANCE'],true);LCN_SwitchRelay($_<strong>IP</strong>S['INSTANCE2'],true);// Um Relaisrichtung zu ändern bitte auf false


if($_<strong>IP</strong>S['DURATION'] > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);LCN_SwitchRelay($_<strong>IP</strong>S['INSTANCE'],false);}break;}break;}break;case "{9317CC5B-4E1D-4440-AF3A-5CC7FB42CCAA}": //1-Wire Shutter Modul (e-service Online)switch($_<strong>IP</strong>S['DIRECTION']){case SC_DIRECTION_STOP:TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, true);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, true);<strong>IP</strong>S_Sleep(100);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, false);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, false);break;case SC_DIRECTION_UP:TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, true);<strong>IP</strong>S_Sleep(100);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, false);if($_<strong>IP</strong>S['DURATION'] > 0){TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, true);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, true);<strong>IP</strong>S_Sleep(100);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, false);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, false);}break;case SC_DIRECTION_DOWN:TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, true);<strong>IP</strong>S_Sleep(100);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, false);}break;if($_<strong>IP</strong>S['DURATION'] > 0){<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, true);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, true);<strong>IP</strong>S_Sleep(100);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 0, false);TMEX_F3A_SetPin($_<strong>IP</strong>S['INSTANCE'], 1, false);}break;/*case "{9317CC5B-4E1D-4440-AF3A-5CC7FB42CCAA}": //1-Wire Shutter (1-wire.de) switch($_<strong>IP</strong>S['DIRECTION']) {case SC_DIRECTION_STOP: OneWireShutter($_<strong>IP</strong>S['INSTANCE'], 0, $_<strong>IP</strong>S['DURATION']); break; caseSC_DIRECTION_UP: if($_<strong>IP</strong>S['DURATION'] == 0) $_<strong>IP</strong>S['DURATION'] = 120000;OneWireShutter($_<strong>IP</strong>S['INSTANCE'], 0, $_<strong>IP</strong>S['DURATION']); break; case SC_DIRECTION_DOWN:if($_<strong>IP</strong>S['DURATION'] == 0) $_<strong>IP</strong>S['DURATION'] = 120000; OneWireShutter($_<strong>IP</strong>S['INSTANCE'], 1,$_<strong>IP</strong>S['DURATION']); break; } break; */


case "{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}": //Homematic Shutter switch($_<strong>IP</strong>S['DIRECTION']) { caseSC_DIRECTION_STOP: HM_WriteValueBoolean($_<strong>IP</strong>S['INSTANCE'], "STOP", true); break; caseSC_DIRECTION_UP: HM_WriteValueFloat($_<strong>IP</strong>S['INSTANCE'], "LEVEL", 1.0); if($_<strong>IP</strong>S['DURATION'] > 0) {<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']); HM_WriteValueBoolean($_<strong>IP</strong>S['INSTANCE'], "STOP", true); } break; caseSC_DIRECTION_DOWN: HM_WriteValueFloat($_<strong>IP</strong>S['INSTANCE'], "LEVEL", 0.0); if($_<strong>IP</strong>S['DURATION'] > 0) {<strong>IP</strong>S_Sleep($_<strong>IP</strong>S['DURATION']); HM_WriteValueBoolean($_<strong>IP</strong>S['INSTANCE'], "STOP", true); } break; } break;default: die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found"); }function OneWireShutter($ins, $dir, $sec) {@TMEX_F29_SetStrobe($ins, True);$res = ($dir * 128) + ($sec / 1000);@TMEX_F29_SetPort((integer)$ins, (integer)$res);}function CreateVariableByName($id, $name, $type){$vid = @<strong>IP</strong>S_GetVariableIDByName($name, $id);if($vid===false) {$vid = <strong>IP</strong>S_CreateVariable($type);<strong>IP</strong>S_SetParent($vid, $id);<strong>IP</strong>S_SetName($vid, $name);<strong>IP</strong>S_SetInfo($vid, "This Variable was created by Script #".$_<strong>IP</strong>S['SELF']);}return $vid;}Informationen zum Erweitern des SkriptesEs werden bei einem Aufruf immer drei Parameter übergeben.Die InstanzID des in dem Shutter Control Instanz eingestellten “Transmit Device”Die Richtung, in die gefahren werden soll.Die Zeit, die gefahren werden soll. (Dieser Wert ist 0 bei STOP und bei den TEST Buttons in der Eigenschaften-Seite)In den “Case Statements” müssen die GUIDs für das jeweilige Modul eingefügt werden. Alle <strong>IP</strong>-<strong>Symcon</strong> Funktionenkönnen verwendet werden. Es darf kein Output generiert werden (echo), andernfalls gilt dies als Fehler und wird imMessage-Log angezeigt und der Status der “Position” Variable wird nicht aktualisiert.


SC_Moveboolean SC_Move ( integer $InstanzID , integer $Position )ParameterlisteInstanzIDPositionID der Shutter Control Instanz0%-100%, 99% = Auf Spalt fahrenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen für das Gerät mit der ID InstanzID auf die Position.Da einige Funk-Systeme unidirektonal sind, kann nicht festgestellt werden, ob ein Befehl erfolgreich war. Dadurchkann die genaue Positionierung nicht garantiert werden.BeispielSC_Move(12345, 50); //Auf 50% fahren


SC_MoveDownboolean SC_MoveDown ( integer $InstanzID , integer $Dauer )ParameterlisteInstanzIDDauerID der Shutter Control Instanz0 = Endlagenschalter, >1 = Dauer in msRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen für das Gerät mit der ID InstanzID für Dauer Millisekunden nach unten.Die Statusvariable wird unabhängig von der gefahrenen Zeit auf 100 zurückgesetzt.BeispielSC_MoveDown(12345, 0); //Nach unten fahren


SC_MoveUpboolean SC_MoveUp ( integer $InstanzID , integer $Dauer )ParameterlisteInstanzIDDauerID der Shutter Control Instanz0 = Endlagenschalter, >1 = Dauer in msRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungBewegt den Rolladen für das Gerät mit der ID InstanzID für Dauer Millisekunden nach oben.Die Statusvariable wird unabhängig von der gefahrenen Zeit auf 0 zurückgesetzt.BeispielSC_MoveUp(12345, 0); //Nach oben fahren


SC_Stopboolean SC_Stop ( integer $InstanzID )ParameterlisteInstanzIDID der Shutter Control InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungStoppt einen Bewegungsvorgang für das Gerät mit der ID InstanzID.Die Statusvariable wird auf -1 zurückgesetzt.BeispielSC_Stop(12345); //Anhalten


Utils ControlDieses Modul ist eine Schnittstelle zwischem dem Dienst und der <strong>IP</strong>-<strong>Symcon</strong> Konsole und erlaubt erweiterte Funktionen,wie z.B. Suchen und Ersetzen in Dateien.Dieses Modul sollte nicht gelöscht werden.Falls es gelöscht wird, wird es beim nächsten Start wieder neu erstellt.


Event ControlDieses Modul erlaubt dem User, bei bestimmten Ereignissen in <strong>IP</strong>-<strong>Symcon</strong> darauf zu reagieren und ein Skript zu starten.Es wird automatisch erstellt und steht dem Benutzer jederzeit zur Verfügung. Es kann im Objektbaum an folgender Stellegefunden werden:Kern Instanzen -> Event HandlerFolgende Ereignisse sind zur Zeit verfügbar:EreignisBeim StartBeimHerunterfahrenBeiStatusänderungBeschreibungNachdem <strong>IP</strong>-<strong>Symcon</strong> gestartet ist, wird dieses Ereignis aufgerufen. Zu diesem Zeitpunkt sollten bereits alleSchnittstellen verfügbar sein und alle Geräte geschaltet werden können.Kurz bevor <strong>IP</strong>-<strong>Symcon</strong> herunterfährt wird dieses Ereignis aufgerufen. An diesem Zeitpunkt sollten noch alleGerät schaltbar sein.Wenn sich der Status einer Instanz ändert, kann in einem angegebenen Skript auf diese Änderung reagiert werden.Die im Skript vorhandenen Spezialvariablen können sie der Systemvariablen Seite entnehmen.Dieses Modul sollte nicht gelöscht werden.Falls es gelöscht wird, wird es beim nächsten Start wieder neu erstellt.


Archive ControlDas Archive Control Modul kümmert sich um das Speichern der Variablenwerte in einer Datenbank. Zur Zeit werden alleWerte in einer SQLite Datenbank gespeichert, welche sich im <strong>IP</strong>-<strong>Symcon</strong> Ordner befindet.Um eine Variable in der Datenbank zu loggen, muss diese dafür ausgewählt werden. Dafür müssen Sie die Variablebearbeiten und die Checkbox "Datenbank-Logging aktivieren" ausgewählt haben. Sofern Sie keinen Graphen für dieseVariable im WebFront sehen möchten, können Sie die Checkbox "Graph in Visualisierung aktivieren" abwählen.Sobald das Logging ausgewählt ist, werden alle Daten in der Datenbank abgespeichert. Dabei werden die Daten zweifachgespeichert. Alle Rohdaten werden in der Datenbank abgelegt und diese Daten werden wiederum auf die einzelnenIntervalle (Tag, Woche, Monat, Jahr) zusammengefasst abgespeichert, um ein schnelleres erstellen der Graphen zuermöglichen. Die Graphen können über das WebFront angesehen oder ins Dashboard über das WebControl integriertwerden.Siehe: Dashboard IntegrationWerte ansehen und manipulierenFalls sich fehlerbehaftete Werte in der Datenbank befinden, so ist es möglich diese zu löschen. Dazu müssen sie dieVerwaltung vom Archivmodul öffnen.Folgende Funktionen bietet die Verwaltung:FunktionAnsichtLöschenDaten löschenVariablenIDändernBeschreibungZeigt die gespeicherten Rohdaten an und erlaubt das Löschen von einzelnen Datensätzen. Nach dem Löschenist es erforderlich, die Variablendaten neu zu aggregieren.Löscht alle Rohdaten aus dem Archiv.Löscht eine ganze Zeitspanne von Rohdaten aus dem Archiv.Falls sich der Sensor und die damit verbundene Variable ändern sollte, so ist es möglich die alten Rohdaten auf dieneue Variable umzuschreiben. Währen sie dazu die alte Variable und hinterher die neue Variable aus.


DatenbankwiederherstellungUnter gewissen Umständen, wie z.B. einem Stromausfall, kann die <strong>IP</strong>-<strong>Symcon</strong>-Logging-Datenbank aufgrund nichtabgeschlossener Schreibvorgänge beschädigt werden.Die folgende Anleitung beschreibt, wie die Datenbank auf Fehler überprüft und eine saubere Datenbankdatei erzeugtwerden kann.Fehlerüberprüfung1. <strong>IP</strong>-<strong>Symcon</strong>-Dienst beenden: Rechtsklick auf das <strong>IP</strong>S-Tray-Icon -> Dienst beenden2. Vorkompilierte Binärversion von SQLite 3 herunterladen: www.sqlite.org/download.html (aktuell:www.sqlite.org/sqlite-3_6_23_1.zip)3. sqlite3.exe in C:\<strong>IP</strong>-<strong>Symcon</strong>\db entpacken4. Kommandozeile starten: Start -> Ausführen -> “cmd” -> OK5. In das <strong>IP</strong>-<strong>Symcon</strong>-Datenbankverzeichnis wechseln: cd C:\<strong>IP</strong>-<strong>Symcon</strong>\db6. Datenbank überprüfen: sqlite3.exe logging.db “pragma integrity_check”7. Ist die Befehlsrückgabe “ok”, ist die Datenbank in Ordnung und es braucht nichts weiter unternommen werden.Andernfalls ist mit dem nächsten Schritt fortzufahren.Datenbank-WiederherstellungBefehle für die Kommandozeile (siehe Schritt Fehlerüberprüfung)1. Datenbankdatei umbenennen: mv logging.db logging.db.backup2. Datenbank wiederherstellen: sqlite3.exe logging.db.backup .dump | sqlite3.exe logging.db3. <strong>IP</strong>-<strong>Symcon</strong>-Dienst wieder starten4. Beschädigte Werte reaggregieren, hierzu kann das folgende Skript benutzt werdenAutomatische Reaggregation aller geloggten Variablen/******* Automatische Reaggregation aller geloggten Variablen** Dieses Skript reaggregiert automatisch alle geloggten Variablen nacheinander* automatisiert bei Ausführung. Nach Abschluss des Vorgangs wird der Skript-Timer* gestoppt. Zur erneuten kompletten Reaggregation ist der Inhalt der automatisch* unterhalb des Skripts angelegten Variable 'History' zu löschen.******/$archiveHandlerID = <strong>IP</strong>S_GetInstanceIDByName("Archive Handler", 0);$historyID = CreateVariableByName($_<strong>IP</strong>S['SELF'], "History", 3, "");$finished = true;$history = explode(',', GetValue($historyID));$variableIDs = <strong>IP</strong>S_GetVariableList();foreach ($variableIDs as $variableID){if (AC_GetLoggingStatus($archiveHandlerID, $variableID) && !in_array($variableID,$history)){$finished = false;if (@AC_ReAggregateVariable($archiveHandlerID, $variableID)){$history[] = $variableID;SetValue($historyID, implode(',', $history));}break;}


}if ($finished){<strong>IP</strong>S_LogMessage('Reaggregation', 'Reaggregation completed!');}<strong>IP</strong>S_SetScriptTimer($_<strong>IP</strong>S['SELF'], $finished ? 0 : 60);function CreateVariableByName($id, $name, $type, $profile = ""){$vid = @<strong>IP</strong>S_GetVariableIDByName($name, $id);if($vid === false){$vid = <strong>IP</strong>S_CreateVariable($type);<strong>IP</strong>S_SetParent($vid, $id);<strong>IP</strong>S_SetName($vid, $name);<strong>IP</strong>S_SetInfo($vid, "this variable was created by script #".$_<strong>IP</strong>S['SELF']);if($profile !== ""){<strong>IP</strong>S_SetVariableCustomProfile($vid, $profile);}}return $vid;}


AC_GetLoggedValuesBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 3.0array AC_GetLoggedValues ( integer $InstanzID , integer $VariablenID , integer $Startzeit , integer $Endzeit, integer $Limit )ParameterlisteInstanzIDVariablenIDStartzeitEndzeitLimitID zum ArchivHandlerID der abzufragenden VariablenDatum/Zeit als Unix TimestampDatum/Zeit als Unix TimestampMaximale Anzahl an Datensätzen. (0 = Kein Limit, 10000 ist das harte Limit, welches immer greift)RückgabewerteEin Array mit folgenden key => value Paaren.Die Ausgabe startet mit dem neusten Datensatz und dann absteigend mit den älteren Datensätzen.Index Typ BeschreibungTimeStamp integer Datum/Zeit beim Erstellen des Datensatzes als Unix TimestampValue variant WertBeschreibungDieser Befehlt gibt die Rohdaten zurück, die über das Archiv für eine Variable mit der VariablenID mitprotokolliertwurden. Dabei können die Start- und Endzeit als Parameter angegeben werden. Der Parameter Limit limitiert diemaximale Anzahl der zurückgegebenen Datensätze, wobei das Limit von 10000 Datensätzen pro Abfrage nieüberschritten werden kann.Das Archiv erstellt nur neue Datensätze für geänderte Werte! Aktualisierungen werden nicht berücksichtigt.Diese Funktion verursacht eine erhebliche Belastung für das System, da in den meisten Fällen sehr viele Datensätzeverarbeitet werden müssen. Bitte weichen Sie in jedem möglichen Falle auf bereits voraggregierte Werte über dieAC_GetAggregatedValues Funktion aus. Diese Funktion bietet Ihnen direkten Zugriff auf Mittelwerte oder Summenfür verschiedene Zeiträume wie z.B. Jahre, Monate, Wochen und Tage.In <strong>IP</strong>-<strong>Symcon</strong> 2.x war diese Funktion fehlerbehaftet. Es wurde immer ein Wert mehr ausgegeben, welcher vor derStartzeit lag. Das war insofern nützlich, dass die für z.B. die Graphengenerierung der vorherige Wert bekannt war,und für die vollständige Zeitspanne ein Graph erstellt werden konnte. Anderfalls wäre eine Lücke am Anfang desGraphen sichtbar. Für eine Funktion mit dem Parameter Startzeit ist diese Funktionsweise jedoch nicht korrekt. Werfür seine Skripte genau diese besondere Funktionsweise benötigt, kann die Hilfsfunktion nutzen, die den vorherigenDatensatz, der vor der Startzeit liegt, entsprechend abfragt und zum Array hinzufügt.Beispiel//Alle Datensätze vom 01.01.2013 bis zum 07.01.2013 abfragen$werte = AC_GetLoggedValues(12345, 55554, mktime(0, 0, 0, 1, 1, 2013), mktime(23, 59, 59, 1, 7, 2013), 0//Alle heutigen Datensätze abfragen$werte = AC_GetLoggedValues(12345, 55554, strtotime("today 00:00"), time(), 0); //55554 ist die ID der Varia


Alle gestrigen Datensätze abfragen$werte = AC_GetLoggedValues(12345, 55554, strtotime("yesterday 00:00"), strtotime("today 00:00")-1, 0);//Dieser Teil erstellt eine Ausgabe im Skriptfenster mit den abgefragten Wertenforeach($werte as $wert) {echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Value'] . PHP_EOL;}//Hilfsfunktion, die die Funktionsweise von <strong>IP</strong>-<strong>Symcon</strong> 2.x nachbildetfunction AC_GetLoggedValuesCompatibility($instanceID, $variableID, $startTime, $endTime, $limit) {$values = AC_GetLoggedValues($instanceID, $variableID, $startTime, $endTime, $limit );if((sizeof($values) == 0) || (end($values)['TimeStamp'] > $startTime)) {$previousRow = AC_GetLoggedValues($instanceID, $variableID, 0, $startTime - 1, 1 );$values = array_merge($values, $previousRow);}return $values;}


AC_GetAggregatedValuesBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 3.0array AC_GetAggregatedValues ( integer $InstanzID , integer $VariablenID , integer $Aggregationsstufe , integer $Startzeit, integer $Endzeit , integer $Limit )ParameterlisteInstanzIDVariablenIDAggregationsstufeStartzeitEndzeitLimitID zum ArchivHandlerID der abzufragenden VariablenAggregationsstufeBeschreibung0 Stündliche Aggregation1 Tägliche Aggregation2 Wöchentliche Aggregation3 Monatliche Aggregation4 Jährliche Aggregation5 5-Minütige Aggregation (Aus Rohdaten berechnet)6 1-Minütige Aggregation (Aus Rohdaten berechnet)Datum/Zeit als Unix TimestampDatum/Zeit als Unix TimestampMaximale Anzahl an Datensätzen. (0 = Kein Limit, 10000 ist das harte Limit, welches immer greift)RückgabewerteEin Array mit folgenden key => value Paaren.Die Ausgabe startet mit dem neusten Datensatz und dann absteigend mit den älteren Datensätzen.Bedeutung der Felder beim Aggregationstyp StandardIndex Typ BeschreibungTimeStamp integer Datum/Zeit vom Begin des Aggregationszeitraums als Unix TimestampMin variant Kleinster Wert innerhalb dieses AggregationszeitraumsMax variant Größter Wert innerhalb dieses AggregationszeitraumsAvg variant Durchschnittswert innerhalb dieses AggregationszeitraumsBedeutung der Felder beim Aggregationstyp ZählerIndex Typ BeschreibungTimeStamp integer Datum/Zeit vom Begin des Aggregationszeitraums als Unix TimestampMin variant Kleinstes positives Delta innerhalb dieses AggregationszeitraumsMax variant Größter positives Delta innerhalb dieses AggregationszeitraumsAvg variant Summe der positiven Delta innerhalb dieses AggregationszeitraumsBeschreibungDieser Befehlt gibt die aggregierten Daten zurück, die über das Archiv für eine Variable mit der VariablenID


mitprotokolliert und berechnet wurden. Dabei können die Start- und Endzeit als Parameter angegeben werden. DerParameter Limit limitiert die maximale Anzahl der zurückgegebenen Datensätze, wobei das Limit von 10000 Datensätzenpro Abfrage nie überschritten werden kann.Diese Funktion garantiert, dass alle Datensätze zwischen Startzeit und Endzeit auch vorhanden sind und ausgegebenwerden. Das bedeutet, dass es es keine zeitlichen Lücken zwischen den Datensätzen gibt. Datensätze werden maximalbis zum jetzigen Zeitpunkt ausgegeben.Die Aggregationsstufen 5-Minütige/1-Minütige Aggregation werden aus den Rohdaten berechnet, sodass diese beivielen Rohdaten ggf. mehr Systemleisung erfordern, als die anderen AggregationsstufenBeispiel//Alle Datensätze vom 01.01.2013 bis zum 31.12.2013 abfragen (Tägliche Aggregationsstufe)//z.B. um den Verbrauch am jeweiligen Tag zu ermitteln oder die Durchschnittstemperatur am jeweiligen Tag$werte = AC_GetAggregatedValues(12345, 55554, 1 /* Täglich */, mktime(0, 0, 0, 1, 1, 2013), mktime(23, 59//Alle heutigen Datensätze abfragen (Tägliche Aggregationsstufe)//z.B. um den heutigen Verbrauch er ermitteln oder die heutige Durchschnittstemperatur$werte = AC_GetAggregatedValues(12345, 55554, 1 /* Täglich */, strtotime("today 00:00"), time(), 0); //55554//Alle gestrigen Datensätze abfragen (Stündlichen Aggregationsstufe)//z.B. um den gesterigen Verbrauch oder die durchschittliche Windgeschwindigkeit jeder Stunde zu begutachten$werte = AC_GetAggregatedValues(12345, 55554, 0 /* Stündlich */, strtotime("yesterday 00:00"), strtotime//Dieser Teil erstellt eine Ausgabe im Skriptfenster mit den abgefragten Wertenforeach($werte as $wert) {echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Value'] . PHP_EOL;}


Heating ControlBeschreibungDas Heizungsmodul dient der Regelung von Temperaturen in Wohnräumen.Es basiert auf einem einfachen, aber wirkungsvollen 2-Punkt-Regler.Dieser vergleicht den Soll-Wert mit dem Ist-Wert und schaltet einen Aktor an oder aus.Bei jeder Über- oder Unterschreitung der Soll-Temperatur wird jeweils ein einzelner Schaltbefehl gesendet.VoraussetzungDen Ist-Wert erhält man über entsprechende Temperatursensoren, deren Wert als Variable <strong>IP</strong>-<strong>Symcon</strong> bekannt seinmuss. Desweiteren muss die Heizquelle über einen Aktor schaltbar sein. Beispiele: Heizkörper mit einem thermischeStellantrieb oder ein Heizlüfter und eine Funksteckdose.KonfigurationFügen Sie das “Heating Control” Modul (Hersteller: None) hinzu und geben Sie optional einen Namen ein z.B.‘Heizungsmodul Wohnzimmer’:VariableQuellvariable:BeschreibungWählen Sie hier die Variable aus, die den Ist-Wert enthält.Hysterese: Temperaturdifferenz zwischen Einschalt- und Ausschaltpunkt; Beispiel: T-Soll = 20,0 Grad und Hysterese =0,4; Der Aktor wird bei Unterschreiten von 19,8 Grad eingeschaltet und bei Überschreiten von 20,2 Gradausgeschaltet. Eine Hysterese von 0 bewirkt eine “Toggeln” des Aktors bei jeder Aktualisierung der Ist-


Absenkung:Sende-Instanzen:Vorrang-Variablen:Sende Intervall:Absenk-Variablen:Variablen.Temperatur in °C, um die abgesenkt werden soll, wenn eine oder mehrere der ‘Absenk-Variablen’ TRUE sindHier werden die zu schaltenden Aktoren eingetragen. Bei thermischen Stellantrieben, die bei stromlos geöffnetsind, muss “Invertieren” aktiviert werden.Können z.B. Status-Variablen von Fensterkontakten sein. Bei ‘True’ bleibt der Ausgang des Reglersausgeschaltet.Falls ein (Funk) Befehl nicht korrekt verarbeitet worden ist, kann dieser zyklisch wiederholt werden (nichtöfters als 15 Minuten).Können z.B. Präsenz-Variablen von Bewegung- oder Präsenz-Melder sein. Wenn sich in einem Raum keinePerson aufhält, kann durch eine Temperatur-Absenkung so Energie gespart werden.Experteneinstellungen: Für Sonderfälle kann hier ein eigenes Skript ausgewählt werden. Es wird bei jedem Schaltvorgang des Reglersaufgerufen. Alle notwendigen Daten sind in den ‘System-Variablen’ hinterlegt.Test Center:StatusvariablenTarget Value:Override:Heating:Um die Funktion des Reglers zu überprüfen, kann hier eine Soll-Temperatur eingetragen werden. Der Aktormuss dann wie gewünscht ein- oder ausschalten.Enthält die Soll-TemperaturBei True ist mindestens eine Vorrang-Variable ebenfalls True (Oder-Verknüpfung) und der Aktor bleibtausgeschaltet.Spiegelt den Ausgang des Reglers wieder. Ein Invertieren der Sende-Instanzen hat auf diese Variable keinenEinfluss.Tipps & TricksVerwenden Sie die Absenk-Funktion, um so in unbewohnten Räumen Energie zu sparen.Praxis-Beispiel:Ein im Raum installierter Bewegungsmelder liefert für einige Sekunden in <strong>IP</strong>-<strong>Symcon</strong> eine Variablenänderung auf TRUE.Das folgende Skript verlängert diesen Impuls auf z.B. 15 Minuten und schreibt den Status in die Variable ‘Präsenz’ (bittevorher anlegen!). Wenn innerhalb der gewünschten Zeit keine Bewegung im Raum mehr erkannt wird, wird die Variableauf FALSE gesetzt.Sie kann nun unter den ‘Absenk-Variablen’ hinzugefügt werden. Allerdings muss zusätzlich ‘Invertieren’ aktiviert werden,da wir ja bei NICHT-Präsenz die Temperatur absenken möchten. Diese muss nun nur noch unter ‘Absenkung’eingetragen werden: z.B. 2 °C.Ein geöffnetes Fenster mit seiner ‘Vorrang-Variable’ hat auch hier Vorrang und schaltet die Heizung komplett aus.$id_prae = 12345 /*[Präsenz]*/; // anlegen!if($_<strong>IP</strong>S['SENDER'] == "Variable"){if($_<strong>IP</strong>S['VALUE'] == True){ //Timer starten<strong>IP</strong>S_SetScriptTimer($_<strong>IP</strong>S['SELF'], 15 * 60);$prae = GetValue($id_prae );if($prae == False){SetValue($id_prae, True);}}}if($_<strong>IP</strong>S['SENDER'] == "TimerEvent"){<strong>IP</strong>S_SetScriptTimer($_<strong>IP</strong>S['SELF'], 0);SetValue($id_prae , False);}Weiterführende LinksZweipunktregler: http://de.wikipedia.org/wiki/Zweipunktregler


Hysterese: http://de.wikipedia.org/wiki/HystereseDa zu jeder Zeit der PC (Regelung) ausfallen kann, muss zusätzlich eine Temperaturbegrenzung /Sicherheitsabschaltung installiert werden, um Personen- oder Sachschäden zu vermeiden.


HC_TargetValueboolean HC_TargetValue ( integer $InstanzID , float $Soll-Wert )ParameterlisteInstanzIDSoll-WertID des zu schaltenden GerätsNeuer Soll-WertRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungSendet über die Instanz mit der ID InstanzID einen Soll-Wert an das Heating-Modul.BeispielHC_TargetValue(12345, 22.5); //Auf 22.5°C


Notification ControlDas Notification Control Modul gibt eine schnelle Übersicht über die zur Zeit für die Push-Benachrichtigung registriertenGeräte. In der Liste werden alle Geräte mit einer eindeutigen ID, dem änderbaren Namen und den zugeordnetenKonfiguratoren angezeigt. Durch Auswählen eines Geräts und klicken der "Test-Nachricht senden" Schaltfläche kanneine Test-Nachricht an das gewählte Gerät verschickt werden.Push-Nachrichten können über WFC_PushNotification versendet werden.Geräte hinzufügenNeue Geräte können nur über die mobilen Apps hinzugefügt werden. Dazu muss innerhalb der jeweiligen App dieKonfiguration des Server erneut ausgeführt werden. Im letzten Schritt haben Sie dann die Möglichkeit bei der Auswahlder Konfigurator die Benachrichtigungen jeweils pro Konfigurator zu aktivieren/deaktivieren. Sobald das Gerät dann amServer registriert wurde, erscheint diese im jeweils registrierten Konfigurator und in der Übersicht im NotificationControl.Geräte umbenennenDer Name eines Gerätes kann jederzeit geändert werden. Klicken Sie dazu einfach in der Liste auf das kleine Pfeil-Icon.Geräte entfernenIm Notification Control können Geräte vollständig von der Benachrichtigung entfernt werden. Sofern Geräte aus einemeinzelnen Konfigurator entfernt werden sollen, kann dies im jeweiligen Konfigurator unter dem Reiter"Benachrichtigungen" eingestellt werden.Server reaktivierenDie Push-Benachrichtigungen werden über den <strong>IP</strong>-<strong>Symcon</strong> versendet. Als zusätzliche Sicherheit authentifiziert sich der zusendene Server, sodass er eindeutig als Versender identifiziert werden kann. Wenn Sie Ihren Server ändern, austauschenoder neu installieren, ist ggf. eine reaktivierung erforderlich. Diese Reaktivierung können Sie alle 24h vornehmen. Dabeiwerden Sie zusätzlich per E-Mail über die Änderung benachrichtigt, um einen Misbrauch Ihrer Lizenz frühzeitig erkennenzu können.


Dummy ModulDas Dummy Modul ist eine Instanz, die keine eigenen Funktion oder Status Variablen anbietet, sonder nur als Platzhalterverwendet werden kann, um die Darstellung als Gerät in der Visualisierung zu erlangen.So wäre es vorstellbar, dass Sie mehrere Variablen erstellen, die zu einem Gerät gehören, für welche <strong>IP</strong>-<strong>Symcon</strong> keinModul anbietet. Um in der Visualisierung (z.B. WebFront) diese Variablen innerhalb eines Geräts zusammen darzustellen,können Sie die Dummy Instanz erstellen und die Variablen innerhalb der Instanz platzieren.In Kombination mit den Variablenprofilen und Variablenaktionen können Sie eigene “Instanzen” erstellen, die in derFunktion und automatischen Visualisierung nativer Instanzen eine ähnliche Funktionsvielfalt haben.


WebServerDer WebServer in <strong>IP</strong>-<strong>Symcon</strong> wird verwendet, um das WebFront über den Browser verfügbar zu machen. Diestandardmäßige Konfiguration ist wie folgt:Port: 82Root: webfrontOptional ist es möglich die Basis-Authentifizierung zu aktiveren, über die ein zusätzlicher Schutz erreicht werden kann.Die Authentifizierung erfolgt, bevor die Login-Seite vom WebFront angezeigt wird. Falls Sie je WebFront Konfiguratorein Kennwort vergeben wollen, so können Sie dies in der Konfiguration vom jeweiligen WebFront Konfigurator tun.Die Option “Logdateien erstellen” erstellt im “logs”-Verzeichnis von <strong>IP</strong>-<strong>Symcon</strong> je WebServer eine Datei namensaccess_12345.log, wobei die Zahl 12345 für die InstanzID ihres WebServers steht. Die erstellten Logdateien sindWebalizer-Kompatibel und können somit grafisch ausgewertet werden.Um SSL nutzen zu können, werden zwei Dateien benötigt, die die Zertifikate bereitstellen. Der WebServer liest dieZertifikatpfade nur beim Start von <strong>IP</strong>-<strong>Symcon</strong> ein, so dass jegliche Änderung an den Optionen A/B einen Neustartbenötigen. Es gibt zwei mögliche Orte, in denen die SSL-Zertifikate gesucht werden.Option A: /cert/ssl.cer; /cert/ssl.keyOption B: /cert/12345.cer; /cert/12345.key; /cert/12345.pemBei Option A werden die standardmäßig vorhandenen Zertifikate genutzt. Diese werden immer über das LiveUpdateaktualisiert und sollten somit nicht benutzerseitig verändert werden. Wenn benutzerdefinierte Zertifikate genutzt werdensollen, muss Option B gewählt werden. Dazu müssen jeweils das Zertifikat (id.cer), die Schlüsseldatei (id.key) undoptional das Root-Zertifikat (id.pem) angelegt werden. “id” gibt dabei die InstanzID der entsprechenden WebServerInstanz an.


RRDToolRRDtool is the OpenSource industry standard, high performance data logging and graphing system for time series data. Use it to writeyour custom monitoring shell scripts or create whole applications using its Perl, Python, Ruby, TCL or PHP bindings.Das RRDTool Modul ist eine direkte Einbindung von RRDTool als PHP Funktion in <strong>IP</strong>-<strong>Symcon</strong>.Es werden keine weiteren Funktionen angeboten.Somit ist das RRDTool Handbuch die erste Anlaufstelle, um Informationen zur Handhabung dieses Moduls zu finden.Die aktuelle Versionsnummer können sie folgendermaßen herausfinden:echo RRD_Execute("version -");


RRD_ExexuteDiese Funktion wurde mit <strong>IP</strong>-<strong>Symcon</strong> 2.4 entfernt.boolean RRD_Exexute ( integer $InstanzID , string $Befehl )ParameterlisteInstanzIDBefehlID des zu schaltenden GerätsRRD Befehl. Siehe: RRDToolRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungGibt einen Befehl an die RRDTool Library weiter und führt ihn aus. Sobald der Befehl ausgeführt wurde, wird mit derAusführung fortgefahren.Beispiel//Kein Beispiel vorhanden


GetValuevariant GetValue ( integer $VariablenID )ParameterlisteVariablenIDID der VariableRückgabewerteWert der angegebenen Variable im Typ der angegebenen VariableBeschreibungDer Befehl liefert als Ergebnis den Inhalt der externen Variablen mit der ID VariablenID. Der zurückgelieferteVariablentyp ist derjenige, der beim Anlegen der Variablen (<strong>IP</strong>S_CreateVariable) gewählt wurde. Wurde die Variable alsString angelegt, liefert die Funktion also immer einen String.Beispiel$Fenster_offen = GetValue(47788);// Boolean-Variable: true oder false$aktuelles_Projekt = GetValue(46250); // String-Variable: z.B. "Regenerfassung"


GetValueBooleanboolean GetValueBoolean ( integer $VariablenID )ParameterlisteVariablenIDID der VariableRückgabewerteWert der angegebenen Variable: TRUE/FALSEBeschreibungDer Befehl liefert als Ergebnis den Inhalt der externen Variablen mit der ID VariablenID. Die gewählte Variable mussvom Typ Boolean sein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung wird nichtvorgenommen. Für eine typunsichere Abfrage können Sie die GetValue Funktion nutzen.Beispiel$Fenster_offen = GetValue(47788);// Boolean-Variable: true oder false


GetValueIntegerinteger GetValueInteger ( integer $VariablenID )ParameterlisteVariablenIDID der VariableRückgabewerteWert der angegebenen Variable: -2,147,483,648 .. 2,147,483,647BeschreibungDer Befehl liefert als Ergebnis den Inhalt der externen Variablen mit der ID VariablenID. Die gewählte Variable mussvom Typ Integer sein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung wird nichtvorgenommen. Für eine typunsichere Abfrage können Sie die GetValue Funktion nutzen.Beispiel$Anzahl_Personen = GetValueInteger(47788);


GetValueFloatfloat GetValueFloat ( integer $VariablenID )ParameterlisteVariablenIDID der VariableRückgabewerteWert der angegebenen Variable: 64Bit GleitkommazahlBeschreibungDer Befehl liefert als Ergebnis den Inhalt der externen Variablen mit der ID VariablenID. Die gewählte Variable mussvom Typ Float sein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung wird nicht vorgenommen.Für eine typunsichere Abfrage können Sie die GetValue Funktion nutzen.Beispiel$aktuelle_Temperatur = GetValueFloat(47788);


GetValueStringstring GetValueString ( integer $VariablenID )ParameterlisteVariablenIDID der VariableRückgabewerteWert der angegebenen Variable: TextBeschreibungDer Befehl liefert als Ergebnis den Inhalt der externen Variablen mit der ID VariablenID. Die gewählte Variable mussvom Typ String sein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung wird nichtvorgenommen. Für eine typunsichere Abfrage können Sie die GetValue Funktion nutzen.Beispiel$aktuelles_Projekt = GetValueString(47788);


GetValueFormattedstring GetValueFormatted ( integer $VariablenID )ParameterlisteVariablenIDID der VariableRückgabewerteWert der angegebenen Variable passend zum Profil formatiertBeschreibungDer Befehl liefert als Ergebnis den Inhalt der externen Variablen mit der ID VariablenID, nachdem er passend zumVariablenprofil formatiert wurde. Der zurückgelieferte Variablentyp ist dabei durch die Formatierung immer String.Beispielecho GetValueFormatted(47788); //Profil = ~Switch//Ergibt: An oder Ausecho GetValueFormatted(46250); //Profil = ~Temperature//Ergibt: 17,5°C


SetValuevariant SetValue ( integer $VariablenID , variant $Wert )ParameterlisteVariablenIDWertID der VariableNeuer Wert der VariableRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl schreibt den Inhalt einer internen Variablen mit dem Wert Wert in die Externe Variable mit der IDVariablenID. Es ist darauf zu achten, dass der Typ von VariablenWert zum Typ der Zielvariablen passt. Ist dieZielvariable vom Typ String, so sollte auch Wert vom Typ String sein.Falls Quell- und Zieltyp nicht übereinstimmen, versucht PHP eine geeignete Konvertierung vorzunehmen. DasErgebnis dieser Konvertierung kann aber vom erwarteten Ergebnis abweichen. Es ist daher besser von vornhereinden richtigen Typ zu übergeben.BeispielSetValue(29117, true);// Boolean-Variable: Alarmanlage einschaltenSetValue(46250, $aktuelles_Projekt); // String-Variable: z.B. "Regenerfassung"


SetValueBooleanboolean SetValueBoolean ( integer $VariablenID , boolean $Wert )ParameterlisteVariablenIDWertID der VariableTRUE/FALSERückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt den Inhalt der externen Variablen mit der ID VariablenID. Die gewählte Variable muss vom TypBoolean sein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung wird nicht vorgenommen. Fürein typunsicheres Setzen der Variable können Sie die SetValue Funktion nutzen.BeispielSetValueBoolean(47788, true); // Alarmanlage einschalten


SetValueIntegerboolean SetValueInteger ( integer $VariablenID , integer $Wert )ParameterlisteVariablenIDID der VariableWert -2,147,483,648 .. 2,147,483,647RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt den Inhalt der Externen Variablen mit der ID VariablenID. Die gewählte Variable muss vom TypInteger sein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung von Float (Trunc)/Boolean (0/1)wird vorgenommen. Für ein typunsicheres Setzten der Variable können Sie die SetValue Funktion nutzen.BeispielSetValueInteger(47788, $Anzahl_Personen);


SetValueFloatboolean SetValueFloat ( integer $VariablenID , float $Wert )ParameterlisteVariablenIDWertID der Variable64Bit GleitkommazahlRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt den Inhalt der externen Variablen mit der ID VariablenID. Die gewählte Variable muss vom Typ Floatsein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung von Integer/Boolean (0/1) wirdvorgenommen. Für ein typunsicheres Setzten der Variable können Sie die SetValue Funktion nutzen.BeispielSetValueFloat(47788, $aktuelle_Temperatur);


SetValueStringboolean SetValueString ( integer $VariablenID , string $Wert )ParameterlisteVariablenIDWertID der VariableTextRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt den Inhalt der externen Variablen mit der ID VariablenID. Die gewählte Variable muss vom Typ Stringsein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung von Float/Integer/Boolean (False/True)wird vorgenommen. Für ein typunsicheres Setzten der Variable können Sie die SetValue Funktion nutzen.BeispielSetValueString(47788, $aktuelles_Projekt);


<strong>IP</strong>S_GetKernelDirstring <strong>IP</strong>S_GetKernelDir ( )RückgabewerteGibt den vollständigen Pfad zum <strong>IP</strong>-<strong>Symcon</strong> Programmverzeichnis als String zurückBeschreibungDer Befehl liefert einen String mit dem vollständigen Pfad zum <strong>IP</strong>-<strong>Symcon</strong> Programmverzeichnis. Der Pfad enthält einenabschließenden Backslash (“\”).Beispiel//liefert z.B.: "C:\Programme\<strong>IP</strong>-<strong>Symcon</strong>\"echo <strong>IP</strong>S_GetKernelDir();


<strong>IP</strong>S_GetKernelVersionstring <strong>IP</strong>S_GetKernelVersion ( )RückgabewerteProgrammversion. Major/Minorversion durch Punkt (.) getrennt.BeschreibungDer Befehl liefert einen String mit der Nummer der <strong>IP</strong>-<strong>Symcon</strong> Programmversion. Durch Abfrage der Programmversionkann entschieden werden, ob ein Skript unter der gemeldeten Version lauffähig ist.Beispielecho <strong>IP</strong>S_GetKernelVersion(); // liefert z.B.: "2.00"


<strong>IP</strong>S_GetUptimefloat <strong>IP</strong>S_GetUptime ( )RückgabewerteZeitpunkt, an dem <strong>IP</strong>-<strong>Symcon</strong> gestartet wurdeBeschreibungDer Befehl liefert Datum und Uhrzeit des Startzeitpunkts von <strong>IP</strong>-<strong>Symcon</strong> in einem erweiterten Unix Timestamp Formatmit zusätzlichen Nachkommastellen. Dieses Format benutzt auch der PHP-Befehl microtime(true). Der ganzzahligeAnteil des Float-Werts entspricht exakt einem Unix Timestamp. Die Nachkommastellen repräsentieren dieSekundenbruchteile.Beispiel// liefert z.B. 1204675012.2551echo <strong>IP</strong>S_GetUptime();// liefert z.B. "2008.03.04 23:56:52"echo gmdate("Y.m.d H:i:s.", <strong>IP</strong>S_GetUptime());


<strong>IP</strong>S_LogMessageboolean <strong>IP</strong>S_LogMessage ( string $Sender , string $Meldung )ParameterlisteSenderMeldungBeliebiger AbsenderstringBeliebiger MeldungsstringRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl schreibt unter Angabe des Absenders Sender den String Meldung in die <strong>IP</strong>-<strong>Symcon</strong> Log-Datei. Der StringSender gibt dabei den Verursacher der Meldung an, z.B. den Namen des Skripts. Die Ausgabe der Meldung kann als“Custom Message” live im Meldungsfenster beobachtet werden.Beispiel$SkriptStart = microtime(true);//hier viel berechnen...$SkriptLaufzeit = microtime(true) - $SkriptStart;<strong>IP</strong>S_LogMessage($_<strong>IP</strong>S['SELF'], "Laufzeit beträgt ". $SkriptLaufzeit. "sek");


<strong>IP</strong>S_FunctionExistsBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.6boolean <strong>IP</strong>S_FunctionExists ( string $Funktionsname )ParameterlisteFunktionsnameName, der zu prüfenden FunktionRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl prüft, ob die Funktion mit dem Namen Funktionsname innerhalb von <strong>IP</strong>-<strong>Symcon</strong> registriert ist.Beispielif (<strong>IP</strong>S_FunctionExists("GetValue"))echo "Die Funktion GetValue existiert!";


<strong>IP</strong>S_GetFunctionBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.6array <strong>IP</strong>S_GetFunction ( string $Funktionsname )ParameterlisteFunktionsnameName, der zu prüfenden FunktionRückgabewerteEin Array mit folgenden key => value PaarenIndex Typ BeschreibungFunctionName string FunktionsnameParameters array ParameterlisteResult array RückgabeinformationBeschreibungDieser Befehl liefert weitere Informationen zu einer in <strong>IP</strong>-<strong>Symcon</strong> registrierten Funktion. Der Parameter Funktionsnamegibt an, welche Funktion inspiziert werden soll.Beispiel//Siehe bitte <strong>IP</strong>S_GetFunctionList


<strong>IP</strong>S_GetFunctionListBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.6array <strong>IP</strong>S_GetFunctionList ( integer $InstanzID )ParameterlisteInstanzIDInstanzID, für zu suchende Funktion. 0, um alle zu suchen.RückgabewerteEin Array von String-Werten aller FunktionenBeschreibungDer Befehl ermittelt alle in der aktuellen Konfiguration von <strong>IP</strong>-<strong>Symcon</strong> verfügbaren <strong>IP</strong>S-Befehle. Die Funktionen werdenin einem Array aufgelistet. Die Anzahl der Befehle ist abhängig von der derzeitigen Konfiguration von <strong>IP</strong>-<strong>Symcon</strong>. Wennz.B. eine Instanz des TTS-Moduls (Text-To-Speech) konfiguriert ist, dann werden zusätzlich auch alle TTS-Befehleaufgeführt.Als Parameter kann die InstanzID als Filter angegeben werden. Somit werden nur die Funktionen angezeigt, die diebetreffende Instanz veröffentlicht. Wird als InstanzID 0 angegeben, so ist der Filtermechanismus nicht aktiv und eswerden alle in <strong>IP</strong>-<strong>Symcon</strong> verfügbaren Funktionen ausgegeben.Details zu den einzelnen Funktionen können über <strong>IP</strong>S_GetFunction ermitteln werden.Beispiel$alleFunktionen = <strong>IP</strong>S_GetFunctionList(0);print_r(<strong>IP</strong>S_GetFunction($alleFunktionen[48])); // nur Funktion 48 ausgeben (<strong>IP</strong>S_CreateScript)/* liefert:Array([FunctionName] => <strong>IP</strong>S_CreateScript[Parameters] => Array([0] => Array([Description] => ScriptType[Type_] => 1))*/)[Result] => Array([Description] => Result[Type_] => 1)//Exportiert alle <strong>IP</strong>-<strong>Symcon</strong> Funktionen mit einer Parameterliste$instanceid = 0; //0 = Alle Funktionen, sonst Filter auf InstanzID$fs = <strong>IP</strong>S_GetFunctionList($instanceid);asort($fs);$typestr = Array("boolean", "integer", "float", "string", "variant", "array");foreach($fs as $f) {


}$f = <strong>IP</strong>S_GetFunction($f);echo sprintf("[%7s]", $typestr[$f['Result']['Type_']]) . " - ".$f['FunctionName']."(";$a = Array();foreach($f['Parameters'] as $p) {if(isset($p['Enumeration']) && sizeof($p['Enumeration']) > 0) {$b=Array();foreach($p['Enumeration'] as $k => $v) {$b[] = $k."=".$v;}$type = "integer/enum[".implode(", ", $b)."]";} else {$type = $typestr[$p['Type_']];}$a[]=$type." $".$p['Description'];}echo implode(", ", $a).");\n";


<strong>IP</strong>S_RunScriptboolean <strong>IP</strong>S_RunScript ( integer $SkriptID )ParameterlisteSkriptIDEindeutige ID des SkriptesRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl veranlasst den Start des Skripts mit der ID SkriptID. Das aufgerufene Skript läuft parallel (gleichzeitig) zumaufrufenden Skript.Vergleich zwischen <strong>IP</strong>S_RunScript und der PHP-Anweisung include:include ist eine PHP-Anweisung, kein <strong>IP</strong>S-Befehl. Das durch include eingebundene Skript wird so abgearbeitet, alsstünde es anstelle der include-Anweisung. Es wirkt sich so aus, als wäre es ein Bestandteil des aufrufenden Skripts. Dasbedeutet, dass alle Variablen, die dem aufrufenden Skript bekannt sind auch dem eingebundenen Skript zur Verfügungstehen. Die Laufzeit des Skripts verlängert sich um die Laufzeit des eingebundenen Skripts.Bei Verwendung von <strong>IP</strong>S_RunScript wird das aufgerufene Skript in einem eigenen Kontext gestartet. Es weiß alsofolglich nichts von den Variablen des aufrufenden Skripts. Daten können hier nur über externe Variablen ausgetauschtwerden. Der Befehl ist geeignet für Situationen, wo ein Skript zeitgerecht ausgeführt werden muss, aber kein direkterBezug zum aufrufenden Skript erforderlich ist. Die Laufzeit des Skripts ändert sich nicht, da beide Skripte (quasi)gleichzeitig ausgeführt werden.Beispiel<strong>IP</strong>S_RunScript(12345 /*[Gartenbeleuchtung An]*/);


<strong>IP</strong>S_RunScriptExboolean <strong>IP</strong>S_RunScriptEx ( integer $SkriptID , array $Parameter )ParameterlisteSkriptIDParameterEindeutige ID des SkriptesKey (string) => Value (variant) Paar auf die im neu ausgeführten Skript zu gegriffen werden kann.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl veranlasst den Start des Skripts mit der ID SkriptID und übergibt dabei das Array Parameter als Argument.Das aufgerufene Skript läuft parallel (gleichzeitig) zum aufrufenden Skript. Auch hier gelten die bei <strong>IP</strong>S_RunScriptbeschriebenen Hinweise.Das Array Parameter kann beliebig viele “Key => Value” Paare enthalten (siehe PHP Arrays). Jedes Paar erscheint imaufgerufenen Skript als Variable Key mit ihrem Inhalt Value.Beispiel//Skript, dass ein anderes Skript mit Parameterübergabe starten will<strong>IP</strong>S_RunScriptEx(12345 /*[Temp]*/, Array("Titel" => "Temp.", "Tmin" => 10.0));//Skript, das aufgerufen wurde. Parameter sind als einzelne Variablen in der//globalen Variablen $_<strong>IP</strong>S verfügbar. Der Variablenname entspricht dem im Array-Index//übergebenen Namen.$Ueberschrift = $_<strong>IP</strong>S['Titel']. "verlauf"; //Ergibt: Temp.verlauf$MaxTemp = $Tmin + 30.0;


<strong>IP</strong>S_RunScriptWaitstring <strong>IP</strong>S_RunScriptWait ( integer $SkriptID )ParameterlisteSkriptIDEindeutige ID des SkriptesRückgabewerteResultat des ausgeführten SkriptsBeschreibungDer Befehl veranlasst den Start des Skripts mit der ID SkriptID. Das Skript wird aufgerufen und wartet auf das Ende, umdas Resultat als Rückgabewert zu übergeben. Auch hier gelten die bei <strong>IP</strong>S_RunScript beschriebenen Hinweise.Beispielecho <strong>IP</strong>S_RunScriptWait(12345 /*[Skript A]*/);


<strong>IP</strong>S_RunScriptWaitExboolean <strong>IP</strong>S_RunScriptWaitEx ( integer $SkriptID , array $Parameter )ParameterlisteSkriptIDParameterEindeutige ID des SkriptesKey (string) => Value (variant) Paar auf die im neu ausgeführten Skript zugegriffen werden kann.RückgabewerteResultat des ausgeführten SkriptsBeschreibungDer Befehl veranlasst den Start des Skripts mit der ID SkriptID, übergibt dabei das Array Parameter als Argument undwartet auf das Ende der Skriptausführung, um das Resultat als Rückgabewert zu übergeben. Auch hier gelten die bei<strong>IP</strong>S_RunScript beschriebenen Hinweise. Das Array Parameter kann beliebig viele “Key => Value” Paare enthalten(siehe PHP Arrays). Jedes Paar erscheint im aufgerufenen Skript als Variable Key mit ihrem Inhalt Value.Beispiel//Skript, dass ein anderes Skript mit Parameterübergabe starten willecho <strong>IP</strong>S_RunScriptWaitEx(12345 /*[Temp]*/, Array("Titel" => "Temp.", "Tmin" => 10.0));//Skript, das aufgerufen wurde. Parameter sind als einzelne Variablen in der//globalen Variablen $_<strong>IP</strong>S verfügbar. Der Variablenname entspricht dem im Array-Index//übergebenen Namen.$Ueberschrift = $_<strong>IP</strong>S['Titel']. "verlauf"; //Ergibt: Temp.verlaufecho $Tmin + 30.0;


<strong>IP</strong>S_Executeboolean <strong>IP</strong>S_Execute ( string $Programmpfad , string $Parameter , boolean $Dummy , boolean $Warten )ParameterlisteProgrammpfadParameterDummyWartenVollständiger Pfad zum ProgrammAn das Programm zu übergebende Parameter (optional)V1 Parameter. Wird in der V2 nicht ausgewertet.Gibt an, ob auf das Programmende gewartet werden soll.RückgabewerteDen Rückgabewert von stderr/stdout, wenn der Warten Parameter auf True ist, sonst ist die Rückgabe ein leerer String.BeschreibungDer Befehl veranlasst den Start des externen Programms mit dem Namen ProgrammName. Dem Programm wird derString-Parameter als Aufrufparameter übergeben. Der Boolean-Wert Warten legt fest, ob das Programmende abgewartetoder das aufrufende Skript sofort fortgesetzt werden soll. Wird auf das Ergebnis gewartet, erscheint dieses, fallsvorhanden, als String im Rückgabewert.Als Quelle für den Rückgabewert kommt eine der folgenden Programmausgaben in Frage:Ausgabe nach stderrorAusgabe nach stdoutWerden vom Programm beide Möglichkeiten genutzt, erhält stderror den Vorrang, um z.B. Fehlermeldungen nicht zuverlieren.Vorsicht: Beim Warten auf das Programmende verlängert sich die Laufzeit des Skripts entsprechend. Dabei ist daraufzu achten, dass die in der Datei “php.ini” definierte maximale Laufzeit nicht überschritten wird. Andernfalls wird dasSkript mit einer Fehlermeldung abgebrochen. Dies ist vor allem dann wichtig, wenn das Programm Benutzereingabenerwartet.Achtung: Wenn das zu startende Programm interaktiv ist (z.B. ein Fenster beinhaltet), wird dieses nicht angezeigt/sichtbar. Es wird im Hintergrund als System-Prozess gestartet und kann dann nur mit Hilfe des Task-Managersgestoppt werden. Soll das Programm auf dem Desktop angezeigt werden, muss die <strong>IP</strong>S_ExecuteEx Funktionverwendet werden.Beispiel//Eine Batchdatei starten<strong>IP</strong>S_Execute("C:/autoexec.bat", "", false, false);


<strong>IP</strong>S_ExecuteExstring <strong>IP</strong>S_ExecuteEx ( string $Programmpfad , string $Parameter , boolean $FensterZeigen , boolean $Warten, integer $SessionID )ParameterlisteProgrammpfad Vollständiger Pfad zum ProgrammParameter An das Programm zu übergebende Parameter (optional)FensterZeigen True, wenn das Fenster angezeigt werden soll; False, wenn das Fenster unsichbar bleiben sollWartenGibt an, ob aus das Programmende gewartet werden soll.SessionID Die User Session ID, die genutzt werden soll (Unter XP ab 0, 2003/Vista ab 1)RückgabewerteLeerstringBeschreibungDer Befehl veranlasst den Start des externen Programms mit dem Namen ProgrammName. Dem Programm wird derString-Parameter als Aufrufparameter übergeben. Der Boolean-Wert Warten legt fest, ob das Programmende abgewartetoder das aufrufende Skript sofort fortgesetzt werden soll.Der Parameter SessionID gibt an, in welcher User-Session das Programm gestartet werden soll. (Unter Windows 2003können z.B. mehrere Terminal Sessions parallel gestartet sein.)Vorsicht: Beim Warten auf das Programmende verlängert sich die Laufzeit des Skripts entsprechend. Dabei ist daraufzu achten, dass die in der Datei “php.ini” definierte maximale Laufzeit nicht überschritten wird. Andernfalls wird dasSkript mit einer Fehlermeldung abgebrochen. Dies ist vor allem dann wichtig, wenn das Programm Benutzereingabenerwartet.Beispiel//Notepad starten<strong>IP</strong>S_ExecuteEx("notepad", "", false, false, 0);


<strong>IP</strong>S_Sleepboolean <strong>IP</strong>S_Sleep ( integer $Wartezeit )ParameterlisteWartezeitGibt die Wartezeit in Millisekunden anRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt die Abarbeitung des Skripts für Wartezeit Millisekunden aus. Nach Ablauf dieser Zeit wird das Skriptfortgesetzt. Mit Hilfe dieses Befehls lassen sich kurze (!) Wartezeiten realisieren. Längere Wartezeiten sollten nicht durchSleep Befehle realisiert, sondern über geeignete Ereignisse gesteuert werden.Da sich die Laufzeit des Skripts um Wartezeit verlängert, ist darauf zu achten, dass die in der Datei “php.ini“ definiertemaximale Laufzeit nicht überschritten wird. Andernfalls wird das Skript mit einer Fehlermeldung abgebrochen. LängereWartezeiten im Bereich von mehreren Sekunden und länger sollten mit anderen Methoden realisiert werden.<strong>IP</strong>S_Sleep hat keinen Einfluss auf andere gleichzeitig laufende Skripte.Beispiel//Daten zeitverzögert an den COM Port ausgebenCOMPort_SendText($id, chr(0x1b)); // ESC an LC-Display senden<strong>IP</strong>S_Sleep(200);// 200ms wartenCOMPort_SendText($id, "0");// LC-Display löschen<strong>IP</strong>S_Sleep(200);// 200ms wartenCOMPort_SendText($id, "Guten Tag!"); // Text ausgeben


<strong>IP</strong>S_SemaphoreEnterboolean <strong>IP</strong>S_SemaphoreEnter ( string $Name , integer $Wartezeit )ParameterlisteNameWartezeitName, der die Semaphore beschreibtMillisekunden, die gewartet wird, bis der Befehl abbrichtRückgabewerteTRUE, wenn die Semaphore betreten wurde. FALSE, wenn die Semaphore vor Ablauf der Wartezeit nicht betretenwerden konnteBeschreibungDieser Befehl setzt ein Semaphor (ein Zeichen mit Signalwirkung), das dazu verwendet werden kann, den Start andererSkripte zu verhindern. Ein Skript kann sich so vor konkurrierenden anderen Skripten schützen und natürlich auch voranderen Instanzen von sich selbst.Der Befehl versucht, das Semaphor mit dem Namen SemaphorName zu setzen. Existiert das Semaphor bereits, wird dieAbarbeitung des Skripts für die Zeitdauer Wartezeit (in Millisekunden) ausgesetz. Danach wird noch ein weitererVersuch unternommen.In <strong>IP</strong>-<strong>Symcon</strong> können grundsätzlich mehrere Skripte gleichzeitig laufen. Solange ein Skript keinen exklusiven Zugriff aufVariablen oder System-Ressourcen benötigt, stellt dieser Fall kein Problem dar. Falls aber ein exklusiver Zugriffunumgänglich ist, kann mit dem Befehl ein Semaphor gesetzt werden. Der Befehl prüft zuerst, ob das Semaphor mit demangegebenen Namen bereits gesetzt ist. Existiert es noch nicht, wird es durch den Befehl gesetzt und liefert TRUE alsRückmeldung. Alle anderen Skripte, die danach versuchen das selbe Semaphor zu setzen, müssen eine Warteschleife derDauer Wartezeit durchlaufen. Nach Ablauf der Wartezeit versucht der Befehl erneut das Semaphor zu setzen. Ist er dabeierfolgreich, wird TRUE zurückgemeldet, andernfalls FALSE. Wenn man gewährleisten will, dass während der Laufzeiteines Skripts die von ihm verwendeten Daten nicht von anderen, gleichzeitig laufenden Skripten verfälscht werden, kannman diesen Befehl verwenden, um sich exklusiven Zugriff zu sichern.Bei der Verwendung dieses Befehls ist darauf zu achten, dass das Semaphor möglichst bald wieder zurückgesetzt wird.Beispielif (<strong>IP</strong>S_SemaphoreEnter("KritischerPunkt", 1000)){// ...Kritische Befehle ausführen//Semaphore wieder freigeben!<strong>IP</strong>S_SemaphoreLeave("KritischerPunkt");}else{// ...Keine ausführung Möglich. Ein anderes Skript nutzt den "KritischenPunkt"// für länger als 1 Sekunde, sodass unsere Wartezeit überschritten wird.}


<strong>IP</strong>S_SemaphoreLeaveboolean <strong>IP</strong>S_SemaphoreLeave ( string $Name )ParameterlisteNameName, der die Semaphore beschreibt.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDieser Befehl löscht das zuvor mit <strong>IP</strong>S_SemaphoreEnter gesetzte Semaphor wieder.Beispiel//Siehe <strong>IP</strong>S_SemaphoreEnter()


<strong>IP</strong>S_SetParentboolean <strong>IP</strong>S_SetParent ( integer $ObjektID , integer $ParentID )ParameterlisteObjektIDParentIDID des zu verändernden ObjektsID des neuen übergeordneten Objekts im logischen ObjektbaumRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl verschiebt das Objekt mit der ID ObjektID im <strong>IP</strong>-<strong>Symcon</strong> Strukturbaum unter das Objekt mit der IDParentID. Das Objekt ist danach dem Parent-Objekt optisch untergeordnet. Die neue Zuordnung wird im logischenStrukturbaum (Logical Treeview) sichtbar. Auf diese Weise kann die logische Ansicht so angepasst werden, dass siebestmöglich die Zusammengehörigkeit und/oder Abhängigkeit verschiedener Komponenten widerspiegelt.Durch die Zuweisung an ein neues Parent-Objekt ändert sich nichts an bestehenden physikalischen Verbindungen. Siedient lediglich einer besseren Darstellungsweise.Falls das Objekt einen ‘Ident’ besitzt, darf kein gleicher ‘Ident’ an der neuen Zielposition existieren.Beispiel<strong>IP</strong>S_SetParent(47381, 15361);


<strong>IP</strong>S_SetIdentBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.5boolean <strong>IP</strong>S_SetIdent ( integer $ObjektID , string $Ident )ParameterlisteObjektIDIdentID des zu verändernden ObjektsNeuer Identifikator für das ObjektRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl ordnet dem Objekt mit der ID ObjektID den Identifikator Ident zu. Der Identifikator ist ein für denEndbenutzer nicht sichtbarer String, der aus Buchstaben und Zahlen bestehen kann. Er kann genutzt werden, umObjekte innerhalb einer Ebene auffindbar zu machen, ohne die eindeutige und systemabhängige ID zu nutzen. Über denIdentifikator werden z.B. alle StatusVariable der Instanzen realisiert. Der Befehl kann auf alle Objekte angewandt werden,die eine ID zur Identifikation besitzen.Es kann nur ein Objekt mit demselben Identifikator innerhalb einer Ebene existieren. Somit ist eine Abfrage über<strong>IP</strong>S_GetObjectIDByIdent eindeutig.Beispiel<strong>IP</strong>S_SetIdent(47381, "TEMPERATURE");


<strong>IP</strong>S_SetNameboolean <strong>IP</strong>S_SetName ( integer $ObjektID , string $Name )ParameterlisteObjektIDNameID des zu verändernden ObjektsNeuer Name für das ObjektRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl ordnet dem Objekt mit der ID ObjektID den Namen Name zu. Der Name erscheint dann im Strukturbaumanstelle der Objekt ID und kann so zur besseren Lesbarkeit beitragen. Der Befehl kann auf alle Objekte angewandtwerden, die eine ID zur Identifikation besitzen.Beispiel<strong>IP</strong>S_SetName(47381, "Sicherheitsvorkehrungen");


<strong>IP</strong>S_SetInfoboolean <strong>IP</strong>S_SetInfo ( integer $ObjektID , string $Info )ParameterlisteObjektIDInfoID des zu verändernden ObjektsNeuer Info-Text für das ObjektRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl ordnet dem Objekt mit der ID ObjektID erweitere Informationen zu. Diese können benutzt werden, um z.B.spezifische Konfigurationen oder spezielle Informationen pro Objekt zu hinterlegen, die zu einem späteren Zeitpunktwiederverwendet werden können.Beispiel<strong>IP</strong>S_SetInfo(47381, "USB Soundkarte - Port A, Keller - Grünes Kabel");


<strong>IP</strong>S_SetIconBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1boolean <strong>IP</strong>S_SetIcon ( integer $ObjektID , string $Icon )ParameterlisteObjektIDIconID des zu verändernden ObjektsDateiname des Icons ohne Pfad/ErweiterungRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl ordnet dem Objekt mit der ID ObjektID ein Icon zu. Der Name des Icons ist der Dateiname ohneErweiterung oder Pfad.Beispiel<strong>IP</strong>S_SetIcon(47381, "weather");


<strong>IP</strong>S_SetPositionBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1boolean <strong>IP</strong>S_SetPosition ( integer $ObjektID , integer $Position )ParameterlisteObjektIDPositionID des zu verändernden ObjektsPositionswert des ObjektsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl ordnet dem Objekt mit der ID ObjektID eine Position zu. Die Position wird in der Visualisierungverwendet, um die Objekte in der gewünschten Reihenfolge anzuzeigen. Defaultwert ist Null. Der Positionswert mussnicht eindeutig sein. Sollten zwei Positionen denselben Wert haben, wird der Name als zweites Sortierkriteriumverwendet.Beispiel<strong>IP</strong>S_SetPosition(47381, 5);


<strong>IP</strong>S_SetHiddenBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1boolean <strong>IP</strong>S_SetHidden ( integer $ObjektID , string $Versteckt )ParameterlisteObjektIDVerstecktID des zu verändernden ObjektsTRUE, wenn unsichtbarRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt die Sichtbarkeit des Objekts mit der ID ObjektID. Unsichtbare Objekte werden samt Unterobjektenvon der Visualisierung ausgeschlossen und in der Konfiguration als grau hinterlegt dargestellt.Beispiel<strong>IP</strong>S_SetHidden(47381, true); //Objekt verstecken


<strong>IP</strong>S_ObjectExistsboolean <strong>IP</strong>S_ObjectExists ( integer $ObjektID )ParameterlisteObjektIDDie zu prüfende ObjektIDRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl prüft, ob ein Objekt mit der ID ObjektID existiert.Beispielif (<strong>IP</strong>S_ObjectExists(34881))echo "Ein Objekt mit dieser ID existiert!";


<strong>IP</strong>S_GetObjectarray <strong>IP</strong>S_GetObject ( integer $ObjektID )ParameterlisteObjektIDDie zu zeigende ObjektIDRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungChildrenIDs array Untergeordnete ObjektIDs. Siehe: <strong>IP</strong>S_GetChildrenIDsHasChildren boolean TRUE, wenn das Objekt Unterobjekte hat. Siehe: <strong>IP</strong>S_HasChildrenObjectID integer ObjektIDObjectType integer Objekt-Typ (0: Kategorie, 1: Instanz, 2: Variable, 3: Skript, 4: Ereignis, 5: Media,6: Link)ObjectIdent string Identifikator des Objekts. Siehe <strong>IP</strong>S_SetIdentObjectName string Name des Objekts. Siehe: <strong>IP</strong>S_SetNameObjectInfo string Erweitere Informationen, die der Benutzer angeben kann. Siehe: <strong>IP</strong>S_SetInfoObjectIcon string Dateiname ohne Erweiterung des Icons. Siehe: <strong>IP</strong>S_SetIconObjectSummary string Kurzbeschreibung eines Objektes, welches vom Modul zur Laufzeit bei Bedarfgeneriert wird.ObjectPosition integer Position, die das Objekt in der Visualisierung haben soll. Dieser Wert muss nichtunbedingt eindeutig sein. Siehe: <strong>IP</strong>S_SetPositionObjectIsHidden boolean TRUE, wenn das Objekt in der Visualisierung versteckt sein soll. Siehe<strong>IP</strong>S_SetHiddenObjectIsReadOnly boolean TRUE, wenn das Objekt schreibgeschützt ist. (Wird zur Zeit nur für StatusVariablen benutzt)ParentID integer Übergeordnetes Objekt. 0 = Kein übergeordnetes Objekt. Siehe: <strong>IP</strong>S_SetParentBeschreibungDer Befehl liefert ein Array mit Informationen über das Objekt mit der ID ObjektID. Sollte das Objekt nicht vorhandensein, wird eine Warnung generiert.Beispielprint_r(<strong>IP</strong>S_GetObject(19668));/* liefert z.B.:Array([ChildrenIDs] => Array([0] => 38434)[HasChildren] => 1[ObjectID] => 19668


)*/[ObjectInfo] => Nutzt USB Soundkarte[ObjectName] => Text To Speech[ObjectType] => 1[ParentID] => 0


<strong>IP</strong>S_GetObjectListarray <strong>IP</strong>S_GetObjectList ( )RückgabewerteEin Array von Integer-Werten aller IDs in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> registrierten Objekte. Die IDs werden in einem Array aufgelistet.Beispielprint_r(<strong>IP</strong>S_GetObjectList());/* liefert z.B.:Array([0] => 0[1] => 10573[2] => 11363[3] => 11650[4] => 14114usw. ...)*/


<strong>IP</strong>S_GetObjectIDByNameinteger <strong>IP</strong>S_GetObjectIDByName ( string $ObjektName , integer $ParentID )ParameterlisteObjektNameParentIDZu suchender ObjektNameObjekt, in dessen Unterobjekten gesucht werden sollRückgabewerteID des gefundenen Objekts, sonst FALSEBeschreibungDer Befehl versucht die ID des Objekts mit dem Namen ObjektName, dessen übergeordnetes Objekt die ID ParentIDbesitzt, zu ermitteln. Es wird die ID des ersten gefundenen Objekts verwendet, dessen Name mit ObjektNameübereinstimmt. Falls ein solches Objekt gefunden wurde, wird dessen ID zurückgemeldet, andernfalls FALSE.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warnung. Sollte der Name nicht gefunden werden, benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$ObjektID = @<strong>IP</strong>S_GetObjectIDByName("Regenerfassung", $ParentID);if ($ObjektID === false)echo "Objekt nicht gefunden!";elseecho "Die Objekt-ID lautet: ". $ObjektID;


<strong>IP</strong>S_GetObjectIDByIdentBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.5integer <strong>IP</strong>S_GetObjectIDByIdent ( string $ObjektIdent , integer $ParentID )ParameterlisteObjektIdentParentIDZu suchender ObjektIdentifikatorObjekt, in dessen Unterobjekten gesucht werden sollRückgabewerteID des gefundenen Objekts, sonst FALSEBeschreibungDer Befehl versucht die ID des Objekts mit dem Identifikator ObjektIdent, dessen übergeordnetes Objekt die IDParentID besitzt, zu ermitteln. Falls ein solches Objekt gefunden wurde, wird dessen ID zurückgemeldet, andernfallsFALSE.Unterschied zu <strong>IP</strong>S_GetObjectIDByName: Da ObjektIdents in <strong>IP</strong>-<strong>Symcon</strong> eindeutig sind, wird entweder diekorrekte ID zurückgegeben oder eine Fehlermeldung generiert.Diese Funktion generiert eine Warnung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel//Diese Funktion kann als Ersatz für <strong>IP</strong>S_StatusVariableExists verwendet werden.//Beispiel für <strong>IP</strong>S_StatusVariableExists($id, "StatusVariable");echo !(@<strong>IP</strong>S_GetObjectIDByIdent("StatusVariable", $id) === false);//Ferner kann diese Funktion auch ein Ersatz für <strong>IP</strong>S_GetStatusVariableID darstellen.//Beispiel für <strong>IP</strong>S_GetStatusVariableID($id, "StatusVariable");echo <strong>IP</strong>S_GetObjectIDByIdent("StatusVariable", $id);$id = <strong>IP</strong>S_GetObjectIDByIdent($VariableIdent, $InstanceID);$v = <strong>IP</strong>S_GetVariable($id);$sv = Array("VariableID" => $id,"VariableIdent" => $VariableIdent,"VariableName" => "N/A","VariablePosition" => 0,"VariableProfile" => $v['VariableProfile'],"VariableType" => $v['VariableValue']['ValueType'],"VariableHasAction" => ($v['VariableAction'] > 0),"VariableUseAction" => ($v['VariableAction'] > 0));


<strong>IP</strong>S_HasChildrenboolean <strong>IP</strong>S_HasChildren ( integer $ObjektID )ParameterlisteObjektIDID des zu prüfenden ObjektsRückgabewerteTRUE, falls das Objekte Unterobjekte hat, andernfalls FALSEBeschreibungDer Befehl prüft, ob ein Objekt mit der ID ObjektID untergeordnete Objekte hat.Beispielif (<strong>IP</strong>S_IsHasChildren(0))echo "Das Root Objekt hat untergeordnete Objekte!";


<strong>IP</strong>S_IsChildboolean <strong>IP</strong>S_IsChild ( integer $ObjektID , integer $ParentID , boolean $Rekursiv )ParameterlisteObjektIDParentIDRekursivID des zu prüfenden ObjektsID des vermeintlichen ElternobjektsFalse, wenn nur eine Ebene geprüft werden soll, sonst TrueRückgabewerteTRUE, wenn ObjektID Kind von ParentID ist, sonst FALSEBeschreibungDer Befehl prüft, ob ein Objekt mit der ID ObjektID dem Objekt ParentID untergeordnet ist. Ist der ParameterRekursiv aktiviert, werden alle untergeordneten Objekte auf allen untergeordneten Ebenen überprüft. Andernfallswerden nur die direkt untergeordneten Objekte überprüft.Beispielif (<strong>IP</strong>S_IsChild(0, 12345, true))echo "Das Objekt 12345 ist dem Root Objekt untergeordnet!";


<strong>IP</strong>S_IsPersistentDiese Funktion sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.6 nicht mehr verwendet werden. Da alle Objekte in <strong>IP</strong>-<strong>Symcon</strong> persistent sind,ist diese Funktion überflüssig.boolean <strong>IP</strong>S_IsPersistent ( integer $ObjektID )ParameterlisteObjektIDzu prüfende ObjektIDRückgabewerteTRUE, wenn das Objekt gespeichert wird, sonst FALSEBeschreibungDieser Befehl prüft, ob ein Objekt vom System in die Settings abgespeichert wird. Das gilt zur Zeit für alle IDs größer als10000. Andernfalls wird das Ojekt beim Beenden verworfen.Beispielif (<strong>IP</strong>S_IsPersistent(34881))echo "Das Objekt wird beim Beenden abgespeichert!";


<strong>IP</strong>S_GetChildrenIDsarray <strong>IP</strong>S_GetChildrenIDs ( )RückgabewerteEin Array von Integer-Werten aller IDs der Unterobjekte von Objekt ObjektIDBeschreibungDer Befehl ermittelt die IDs aller Unterobjekte von Objekt ObjektID. Die IDs werden in einem Array aufgelistet.Beispielprint_r(<strong>IP</strong>S_GetChildrenIDs(32102));/* liefert z.B.:Array([0] => 11650[1] => 25578[2] => 30202usw. ...)*/


<strong>IP</strong>S_GetNamestring <strong>IP</strong>S_GetName ( integer $ObjektID )ParameterlisteObjektIDID für die der Namen zurückgegeben werden sollRückgabewerteName des Objekts im logischen ObjektbaumBeschreibungDieser Befehl gibt den Namen eines Objektes zurück.Beispielecho <strong>IP</strong>S_GetName(47359);//gibt z.B. zurück: Meine Tischlampe


<strong>IP</strong>S_GetParentinteger <strong>IP</strong>S_GetParent ( integer $ObjektID )ParameterlisteObjektIDID für die die ParentID zurückgegeben werden sollRückgabewerteParentID des Objekts im logischen ObjektbaumBeschreibungDieser Befehl gibt die ParentID eines Objektes zurück.Beispielecho <strong>IP</strong>S_GetParent(47359);//gibt z.B. zurück: 0 für die Hauptkategorie


<strong>IP</strong>S_GetLocationstring <strong>IP</strong>S_GetLocation ( integer $ObjektID )ParameterlisteObjektIDID für die der Pfad/Namen erstellt werden sollRückgabewertePfad/Name des Objekts im logischen ObjektbaumBeschreibungDieser Befehl dient dazu den kompletten Pfad inklusive Namen eines Objektes zu erhaltenDiese Funktion dient nur zur schnellen Visualisierung des Pfades. Da im Namen eines Objektes Backslashes “\”enthalten sein können, ist der Rückgabewert nicht eindeutig. Eine Weiterverwendung mit z.B. explode ist daher nichtsinnvoll.Beispielecho <strong>IP</strong>S_GetLocation(47359);//gibt z.B. zurück: FHT8b\LowBattery


<strong>IP</strong>S_CreateCategoryinteger <strong>IP</strong>S_CreateCategory ( )RückgabewerteID des neu erstellten ObjektsBeschreibungDer Befehl legt eine neue Kategorie an. Er benötigt keine Parameter. Nach Ausführung des Befehls erscheint imKategorienbaum von <strong>IP</strong>-<strong>Symcon</strong> ein neues Objekt mit der Bezeichnung z.B. ”Unnamed Object (ID: 48490)”. Mit Hilfedes Befehls <strong>IP</strong>S_SetName kann dem Objekt (hier der Kategorie) ein aussagefähiger Name gegeben werden. Der Name istjedoch für die Identifikation irrelevant. Hierfür ist immer die ID zuständig.Die Funktion liefert eine ID, mit deren Hilfe die erzeugte Kategorie eindeutig identifiziert werden kann.Beispiel// Anlegen einer neuen Kategorie mit dem namen "Regenerfassung"$CatID = <strong>IP</strong>S_CreateCategory(); // Kategorie anlegen<strong>IP</strong>S_SetName($CatID, "Regenerfassung"); // Kategorie benennen


<strong>IP</strong>S_DeleteCategoryboolean <strong>IP</strong>S_DeleteCategory ( integer $KategorieID )ParameterlisteKategorieIDID der zu löschenden KategorieRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl löscht die vorhandene Kategorie mit der ID KategorienID.Alle der Kategorie untergeordneten Objekte werden in die Root-Kategorie verschoben.Beispiel// Löschen der Kategorie 47788<strong>IP</strong>S_DeleteCategory(47788);


<strong>IP</strong>S_CategoryExistsboolean <strong>IP</strong>S_CategoryExists ( integer $KategorieID )ParameterlisteKategorieIDID der zu prüfenden KategorieRückgabewerteFalls die KategorieID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl prüft, ob die Kategorie mit der ID KategorienID existiert.Beispielif (<strong>IP</strong>S_CategoryExists(45724))echo "Kategorie existiert bereits!";


<strong>IP</strong>S_GetCategoryListboolean <strong>IP</strong>S_GetCategoryList ( )RückgabewerteEin Array von Integer-Werten aller IDs der Kategorien in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> eingerichteten Kategorien. Die IDs werden in einem Array aufgelistet.Falls keine Kategorie existiert, ist das Array leer.Beispiel$alleKategorien = <strong>IP</strong>S_GetCategoryList();print_r($alleKategorien);/* liefert z.B.:Array([0] => 0[1] => 37659[2] => 18326usw. ...)*/


<strong>IP</strong>S_GetCategoryIDByNameinteger <strong>IP</strong>S_GetCategoryIDByName ( string $KategorieName , integer $ParentID )ParameterlisteKategorieNameParentIDZu suchender KategorieNameObjekt, in deren Unterobjekten gesucht werden sollRückgabewerteID der gefundenen Kategorie, sonst FALSEBeschreibungDer Befehl versucht die ID der Kategorie mit dem Namen KategorienName, deren übergeordnetes Objekt die IDParentID besitzt, zu ermitteln. Es wird die ID der ersten gefundenen Kategorie verwendet, deren Name mitKategorienName übereinstimmt. Falls eine solche Kategorie gefunden wurde, wird deren ID zurückgemeldet,andernfalls FALSE.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warung. Sollte der Name nicht gefunden werden, benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$CatID = @<strong>IP</strong>S_GetCategoryIDByName("Regenerfassung", $ParentID);if ($CatID === false)echo "Kategorie nicht gefunden!";elseecho "Die Kategorien-ID lautet: ". $CatID;


<strong>IP</strong>S_CreateInstanceinteger <strong>IP</strong>S_CreateInstance ( string $ModulID )ParameterlisteModulIDModulID des zu erstellenden ObjektsRückgabewerteID der neu erstellten InstanzBeschreibungDer Befehl legt eine unkonfigurierte Instanz der ID ModulID an. Zulässige Werte für ModulID können über dieFunktion <strong>IP</strong>S_GetModuleList ermittelt werden. Die ModulID ist eine 32Bit GUID im Format {00000000-0000-0000-0000-000000000000}.Die Funktion liefert eine ID, mit deren Hilfe die erzeugte Instanz eindeutig identifiziert werden kann. Das erzeugteObjekt ist nach dem Anlegen noch unkonfiguriert und mit mit den entsprechenden gerätespezifischen Funktionenkonfiguriert werden. Anschließend muss die Konfiguration mit dem Befehl <strong>IP</strong>S_ApplyChanges übernommen werden.Beispiel//FS20 Instanz erstellenecho <strong>IP</strong>S_CreateInstance("{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}");


<strong>IP</strong>S_DeleteInstanceboolean <strong>IP</strong>S_DeleteInstance ( integer $InstanzID )ParameterlisteInstanzIDID der zu löschenden InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl löscht eine vorhandene Instanz mit der ID InstanzID.Alle der Instanz untergeordneten Objekte werden in die Root-Kategorie verschoben. Verbundene StatusVariablen werdengelöscht.Beispiel// Löschen der Instanz 47788<strong>IP</strong>S_DeleteInstance(47788);


<strong>IP</strong>S_InstanceExistsboolean <strong>IP</strong>S_InstanceExists ( integer $InstanzID )ParameterlisteInstanzIDID der zu prüfenden InstanzRückgabewerteFalls die InstanzID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl prüft, ob die Instanz mit der ID InstanzID existiert.Beispielif (<strong>IP</strong>S_InstanceExists(45724))echo "Instanz existiert bereits!";


<strong>IP</strong>S_GetInstancearray <strong>IP</strong>S_GetInstance ( integer $InstanzID )ParameterlisteInstanzIDDie zu zeigende InstanzIDRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungInstanceID integer InstanzIDInstanceStatus integer siehe Tabelle "Status der Instanz"LastChange float reservedModuleInfo array siehe Tabelle "Modulinformationen"ConnectionID integer Daten-Verbindung zu einer Splitter/IO InstanzTabelle: Status der InstanzCodeStatus101 Instanz wird erstellt102 Instanz ist aktiv103 Instanz wird gelöscht104 Instanz ist inaktiv>=200 Instanz ist fehlerhaftTabelle: ModulinformationenIndex Typ BeschreibungModuleID string ModulID zur InstanzModuleName string ModulName der InstanzModuleType integer ModulTyp der InstanzBeschreibungDer Befehl liefert ein Array mit Informationen über die Instanz mit der ID InstanzID. Sollte die Instanz nichtvorhanden sein, wird eine Warnung generiert.Beispielprint_r(<strong>IP</strong>S_GetInstance(19668));/* liefert z.B.:Array([InstanceID] => 18235[InstanceStatus] => 102[LastChange] => 0[ModuleInfo] => Array(


)*/[ModuleID] => {48FCFDC1-11A5-4309-BB0B-A0DB8042A969}[ModuleName] => FS20[ModuleType] => 3)[ConnectionID] => 29416


<strong>IP</strong>S_GetInstanceListarray <strong>IP</strong>S_GetInstanceList ( )RückgabewerteEin Array von Integer-Werten aller IDs der Instanzen in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> registrierten <strong>IP</strong>S-Instanzen. Die IDs werden in einem Array aufgelistet.Falls keine Instanz existiert, ist das Array leer.Beispiel$alleInstanzen = <strong>IP</strong>S_GetInstanceList();print_r($alleInstanzen);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. ...*/


<strong>IP</strong>S_GetInstanceListByModuleTypearray <strong>IP</strong>S_GetInstanceListByModuleType ( integer $InstanzTyp )ParameterlisteInstanzTypWertBeschreibung0 Kern Instanzen1 I/O Instanzen2 Splitter Instanzen3 Geräte Instanzen4 Konfigurator InstanzenRückgabewerteEin Array von Integer-Werten aller IDs der Instanzen vom Typ InstanzTyp in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller Instanzen eines bestimmten InstanzTyps. Die IDs werden in einem Array aufgelistet.Falls keine Instanz des angeforderten Typs existiert, ist das Array leer.Es werden nur Objekte des Instanztyps InstanzTyp aufgelistet. Sollen alle Instanzen aufgelistet werden, so kann hierfürder Befehl <strong>IP</strong>S_GetInstanceList verwendet werden.Beispiel$alleInstanzen = <strong>IP</strong>S_GetInstanceListByModuleType(1); // nur I/O Instanzen auflistenprint_r($alleInstanzen);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. ...*/


<strong>IP</strong>S_GetInstanceListByModuleIDarray <strong>IP</strong>S_GetInstanceListByModuleID ( string $ModulID )ParameterlisteModulIDModulID der zu suchenden InstanzenRückgabewerteEin Array von Integer-Werten aller gefundenen IDsBeschreibungDer Befehl gibt alle Instanzen, die der angegebenen ModulID entsprechen, in einem Array zurück.Beispiel//FS20 Sender$guid = "{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}";//Auflistenprint_r(<strong>IP</strong>S_GetInstanceListByModuleID($guid));


<strong>IP</strong>S_GetInstanceIDByNameinteger <strong>IP</strong>S_GetInstanceIDByName ( string $InstanzName , integer $ParentID )ParameterlisteInstanzNameParentIDZu suchender InstanzNameObjekt, in deren Unterobjekten gesucht werden sollRückgabewerteID der gefundenen Instanz, sonst FALSEBeschreibungDer Befehl versucht die ID der Instanz mit dem Namen InstanzName, deren übergeordnetes Objekt die ID ParentIDbesitzt, zu ermitteln. Es wird die ID der ersten gefundenen Instanz verwendet, deren Name mit InstanzNameübereinstimmt. Falls eine solche Instanz gefunden wurde, wird deren ID zurückgemeldet, andernfalls FALSE.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$InstanzID = @<strong>IP</strong>S_GetInstanceIDByName("Regenmenge", $ParentID);if ($InstanzID === false)echo "Instanz nicht gefunden!";elseecho "Die Instanz-ID lautet: ". $InstanzID;


<strong>IP</strong>S_HasInstanceParentDiese Funktion sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.6 nicht mehr verwendet werden und wird mit <strong>IP</strong>-<strong>Symcon</strong> 4.0 entfernt.boolean <strong>IP</strong>S_HasInstanceParent ( integer $InstanzID )ParameterlisteInstanzIDID der zu überprüfenden InstanzRückgabewerteDer Rückgabewert ist TRUE, wenn die Instanz eine übergeordnete Instanz besitzt. Sonst, FALSE.BeschreibungDer Befehl gibt an, ob eine bestimmte Instanz InstanzID, von der Hardware (physikalischen) Sicht gesehen aus,überliegenden Instanz z.B. einen Splitter oder I/O Modul hat.Dieser Befehl ist nur sinnvoll bei Device und Splitter Instanzen.Beispielif(<strong>IP</strong>S_HasInstanceParent(12345)){echo "Hat eine übergeordnete Instanz";}


<strong>IP</strong>S_HasInstanceChildrenDiese Funktion sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.6 nicht mehr verwendet werden und wird mit <strong>IP</strong>-<strong>Symcon</strong> 4.0 entfernt.boolean <strong>IP</strong>S_HasInstanceChildren ( boolean $InstanzID )ParameterlisteInstanzIDID der zu überprüfenden InstanzRückgabewerteDer Rückgabewert ist TRUE, wenn der Instanz eine oder mehrere Instanzen untergeordnet sind. Sonst, FALSE.BeschreibungDer Befehl gibt an, ob eine bestimmte Instanz InstanzID, von der Hardware (physikalischen) Sicht gesehen aus,Unterinstanz - z.B. einen Splitter oder Device Modul - hat.Dieser Befehl ist nur Sinnvoll bei I/O und Splitter Instanzen.Beispielif(<strong>IP</strong>S_HasInstanceParent(12345)){echo "Hat eine hat untergeordnete Instanzen";}


<strong>IP</strong>S_GetInstanceParentIDinteger <strong>IP</strong>S_GetInstanceParentID ( integer $InstanzID )ParameterlisteInstanzIDID der zu überprüfenden InstanzRückgabewerteID der übergeordneten InstanzBeschreibungDer Befehl gibt die ID der übergeordneten Instanz für Instanz InstanzID aus (von der Hardwaresicht (physikalisch)gesehen).Dieser Befehl ist nur sinnvoll bei Device und Splitter Instanzen.Beispielecho <strong>IP</strong>S_GetInstanceParentID(12345);


<strong>IP</strong>S_GetInstanceChildrenIDsDiese Funktion sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.6 nicht mehr verwendet werden und wird mit <strong>IP</strong>-<strong>Symcon</strong> 4.0 entfernt.array <strong>IP</strong>S_GetInstanceChildrenIDs ( integer $InstanzID )ParameterlisteInstanzIDID der zu überprüfenden InstanzRückgabewerteEin Array von InstanzIDs der UnterinstanzenBeschreibungDer Befehl gibt alle Unterinstanzen von einer bestimmte Instanz InstanzID aus, gesehen von der Hardwaresicht(physikalisch).Dieser Befehl ist nur sinnvoll bei I/O und Splitter Instanzen.Beispielprint_r(<strong>IP</strong>S_GetInstanceChildrenIDs(12345));


<strong>IP</strong>S_ConnectInstanceboolean <strong>IP</strong>S_ConnectInstance ( integer $InstanzID , integer $ParentID )ParameterlisteInstanzIDParentIDID der InstanzID der neu zu verbindenen InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl verbindet die Instanz InstanzID mit der Instanz ParentID von der Hardwaresicht (physikalisch) gesehen aus,so dass Daten ausgetauscht werden können. Beispiel wäre in FS20 Gerät, dass mit einem FHZ Splitter verbunden wird.Jede Instanz kann nur eine übergeordnete Instanz haben.Beispiel<strong>IP</strong>S_ConnectInstance(12345, 23456);


<strong>IP</strong>S_DisconnectInstanceboolean <strong>IP</strong>S_DisconnectInstance ( integer $InstanzID )ParameterlisteInstanzIDID der InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl löst eine verbundene Instanz InstanzID von der übergeordneten Instanz. Die Angabe der übergeordnetenInstanz ist nicht notwendig, da es nur eine geben kann und somit die zu lösenden Verbindung eindeutig ist.Beispiel<strong>IP</strong>S_DisconnectInstance(12345);


<strong>IP</strong>S_IsInstanceCompatibleboolean <strong>IP</strong>S_IsInstanceCompatible ( integer $InstanzID , integer $ParentID )ParameterlisteInstanzIDParentIDerste InstanzIDzweite InstanzIDRückgabewerteTRUE, wenn die Instanz kompatibel sind, sonst FALSEBeschreibungDer Befehl ermittelt, ob zwei Instanzen zueinander kompatibel sind.Beispielif (<strong>IP</strong>S_IsInstanceCompatible(12345, 23456))echo "Instanz ist zur anderen Instanz kompatibel!";


<strong>IP</strong>S_GetCompatibleInstancesboolean <strong>IP</strong>S_GetCompatibleInstances ( integer $InstanzID )ParameterlisteInstanzIDID der zu prüfenden InstanzRückgabewerteArray von Integer-Werten aller kompatiblen InstanzIDs zur InstanzIDBeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> verfügbaren Instanzen, die zur InstanzID kompatibel sind. Die IDswerden in einem Array aufgelistet.Beispielprint_r(<strong>IP</strong>S_GetCompatibleInstances(12345));/* liefert z.B.:Array([0] => 22222[1] => 33333[2] => 44444[3] => 55555usw. ...)*/


<strong>IP</strong>S_HasChangesboolean <strong>IP</strong>S_HasChanges ( integer $InstanzID )ParameterlisteInstanzIDID der zu überprüfenden InstanzRückgabewerteTRUE, wenn es Änderungen gibt, sonst FALSEBeschreibungDer Befehl überprüft, ob bei einer Instanz Änderungen an der Konfiguration vorgenommen wurden, die als aktuelle Ist-Konfiguration übernommen werden soll.Beispielif(<strong>IP</strong>S_HasChanges(12345)){<strong>IP</strong>S_ApplyChanges(12345);}


<strong>IP</strong>S_ResetChangesboolean <strong>IP</strong>S_ResetChanges ( integer $InstanzID )ParameterlisteInstanzIDID der zu ändernden InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl überschreibt die neue Soll-Konfiguration durch die aktuelle Ist-Konfiguration.Beispielif(<strong>IP</strong>S_HasChanges(12345)){<strong>IP</strong>S_ResetChanges(12345);}


<strong>IP</strong>S_ApplyChangesboolean <strong>IP</strong>S_ApplyChanges ( integer $InstanzID )ParameterlisteInstanzIDID der InstanzRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl übernimmt die neue Soll-Konfiguration als aktuelle Ist-Konfiguration und initialisiert bei Bedarfentsprechende Modulkomponenten neu. (Z.B. wird bei einem Socket Modul die Netzwerkverbindung getrennt und neuaufgebaut.)Beispielif(<strong>IP</strong>S_HasChanges(12345)){<strong>IP</strong>S_ApplyChanges(12345);}


<strong>IP</strong>S_SetPropertyBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.7boolean <strong>IP</strong>S_SetProperty ( integer $InstanzID , string $Eigenschaft , variant $Wert )ParameterlisteInstanzIDEigenschaftWertID der InstanzName der EigenschaftNeuer Wert der EigenschaftRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDieser Befehl setzt für die InstanzID den Soll-Wert der Eigenschaft ein. Sie können einen neuen Soll-Wert mit<strong>IP</strong>S_SetProperty übergeben und mit <strong>IP</strong>S_ApplyChanges übernehmen lassen.Folgende Module sind noch nicht mit dieser Funktion nutzbar:Archive ControlEIBGroupEventControlFS20FS20EXFHTHeatingControlHIDMediaPlayerOneWireShutterControlTextParserWebFrontConfiguratorZ-Wave ObjectALL3690Eigenschaft Typ Standardwert<strong>IP</strong>AddressstringInterval integer 0ALL3691Eigenschaft Typ Standardwert<strong>IP</strong>AddressstringInterval integer 0ALL4000Eigenschaft Typ Standardwert<strong>IP</strong>AddressstringDevices string [0,0,0,0,0,0,0,0,...


Interval integer 0AllUniversalEigenschaft Typ StandardwertDeviceNum integer 0<strong>IP</strong>AddressstringDeviceType integer 0Interval integer 0Archive ControlEigenschaft Typ StandardwertClient SocketEigenschaft Typ StandardwertPort integer 0Open boolean 0HoststringCodatex RFReader1Eigenschaft Typ StandardwertCutterEigenschaft Typ StandardwertLeftCutCharstringRightCutCharstringParseType integer 0SyncCharstringDeleteCutChars boolean 0InputLength integer 0Timeout integer 0DMXOUTEigenschaft Typ StandardwertChannelBase integer 1ChannelCount integer 1DMXSplitterEigenschaft Typ StandardwertDummy Module


Eigenschaft Typ StandardwertEIB GatewayEigenschaft Typ StandardwertGatewayMode integer 1EIB GroupEigenschaft Typ StandardwertEIB ShutterEigenschaft Typ StandardwertEM24-DINEigenschaft Typ StandardwertPhase integer 1Poller integer 0EZControl T-10Eigenschaft Typ Standardwert<strong>IP</strong>Address string 192.168.1.42EnOcean EltakoDimmerEigenschaft Typ StandardwertEmulateStatus boolean 1ButtonMode integer 0ReturnID string 0DeviceID string 0EnOcean EltakoFAFT60Eigenschaft Typ StandardwertDeviceIDstringEnOcean EltakoFAH60Eigenschaft Typ StandardwertDeviceIDstringEnOcean EltakoFSS12Eigenschaft Typ Standardwert


DeviceIDstringEnOcean EltakoSwitchEigenschaft Typ StandardwertEmulateStatus boolean 1ButtonMode integer 0ReturnID string 0DeviceID string 0EnOcean GatewayEigenschaft Typ StandardwertGatewayMode integer 0EnOcean HoppeEigenschaft Typ StandardwertDeviceIDstringEnOcean OpusEigenschaft Typ StandardwertButtonMode integer 0DeviceIDstringEnOcean PTM200Eigenschaft Typ StandardwertDeviceIDstringEnOcean PTM200RXEigenschaft Typ StandardwertButtonMode integer 0DeviceIDstringEnOcean RCM100Eigenschaft Typ StandardwertButtonMode integer 0DeviceIDstringEnOcean STM100Eigenschaft Typ StandardwertDeviceIDstring


EnOcean STM250Eigenschaft Typ StandardwertDeviceIDstringEnOcean ThermokonEigenschaft Typ StandardwertTempRange integer 40TempOffset integer 0DeviceIDstringEvent ControlEigenschaft Typ StandardwertFHTEigenschaft Typ StandardwertFHZ1X00PCEigenschaft Typ StandardwertFS10Eigenschaft Typ StandardwertDeviceType integer 0DeviceID integer 0FS10 SplitterEigenschaft Typ StandardwertFS20Eigenschaft Typ StandardwertFS20EXEigenschaft Typ StandardwertFTDIEigenschaft Typ StandardwertStopBits string 1


BaudRate string 19200Parity string NoneDataBits string 8PortstringOpen boolean 0HIDEigenschaft Typ StandardwertHMSEigenschaft Typ StandardwertDeviceType integer 0DeviceID integer 0Heating ControlEigenschaft Typ StandardwertHomeMatic ConfiguratorEigenschaft Typ StandardwertHomeMatic DeviceEigenschaft Typ StandardwertAddressstringProtocol integer 0EmulateStatus boolean 1HomeMatic SocketEigenschaft Typ Standardwert<strong>IP</strong>Address string 172.17.31.130WRPort integer 2000RFPort integer 2001Port integer 5544Open boolean 0Mode integer 0HoststringIMAPEigenschaft Typ StandardwertCacheInterval integer 300


PasswordstringCacheSize integer 10Username string mail@example.comUseAuthentication boolean 1Port integer 25Host string smtp.example.comUseSSL boolean 0IRTrans DeviceEigenschaft Typ StandardwertDeviceID integer 0IRTrans GatewayEigenschaft Typ StandardwertISDN ModuleEigenschaft Typ StandardwertMSNIncomingstringController integer 1MSNOutgoingstringScriptID integer 0Image GrabberEigenschaft Typ StandardwertMediaID integer 0ImageAddress string http://localhost/...AuthUserstringAuthPassstringImageType integer 0Interval integer 300UseBasicAuth boolean 0KNX/EIB ConfiguratorEigenschaft Typ StandardwertKS300Eigenschaft Typ Standardwert


LCN ConfiguratorEigenschaft Typ StandardwertLCN DataEigenschaft Typ StandardwertDataType integer 0LCN ModuleEigenschaft Typ StandardwertTarget integer 0Segment integer 0LCN ShutterEigenschaft Typ StandardwertMoveChannel integer 0Unit integer 0DirectionChannel integer 0LCN SplitterEigenschaft Typ StandardwertPasswordstringUsernamestringLCN UnitEigenschaft Typ StandardwertChannel integer 0Unit integer 0LCN ValueEigenschaft Typ StandardwertR1ValueType integer 0R2ValueType integer 0EmulateStatus boolean 0TValueType integer 0ValueTypes string []Interval integer 0LevelJetEigenschaft Typ Standardwert


M-Bus DeviceEigenschaft Typ StandardwertAddress integer 1Interval integer 0M-Bus GatewayEigenschaft Typ StandardwertMF420IRCTFEigenschaft Typ Standardwert<strong>IP</strong>AddressstringInterval integer 0Media PlayerEigenschaft Typ StandardwertModBus AddressEigenschaft Typ StandardwertWriteAddress integer 0ReadAddress integer 0Poller integer 0ReadOnly boolean 0ModBus RTU/TCPEigenschaft Typ StandardwertDeviceID integer 1SwapWords boolean 1GatewayMode integer 0Notification ControlEigenschaft Typ StandardwertOZW ConfiguratorEigenschaft Typ StandardwertOZW DataPointEigenschaft Typ StandardwertWriteAccess boolean 0


Id integer 0Interval integer 60OZW DeviceEigenschaft Typ StandardwertSerialNumberstringOZW SplitterEigenschaft Typ Standardwert<strong>IP</strong>Address string 192.168.3.199Password string PasswordUsername string AdministratorOneWireEigenschaft Typ StandardwertPOP3Eigenschaft Typ StandardwertCacheInterval integer 300PasswordstringCacheSize integer 10Username string mail@example.comUseAuthentication boolean 1Port integer 25Host string smtp.example.comUseSSL boolean 0ProJet AccelerometerEigenschaft Typ StandardwertDeviceID integer 0ProJet CounterEigenschaft Typ StandardwertImpulses integer 1000DeviceID integer 128CounterID integer 1Mode integer 1Interval integer 0ProJet DisplayEigenschaft Typ Standardwert


DeviceID integer 1ProJet Display InputEigenschaft Typ StandardwertDeviceID integer 1ProJet Display OutputEigenschaft Typ StandardwertOutputID integer 1DeviceID integer 1ProJet GatewayEigenschaft Typ StandardwertProJet InputEigenschaft Typ StandardwertInputID integer 1DeviceID integer 0ProJet StripeEigenschaft Typ StandardwertDeviceID integer 1ProJet Stripe InputEigenschaft Typ StandardwertDeviceID integer 1ProJet TrackerEigenschaft Typ StandardwertTrackerID integer 1DeviceID integer 0ProJet WatchDogTimerEigenschaft Typ StandardwertDeviceID integer 165Register VariableEigenschaft Typ StandardwertRXObjectID integer 0


SI USBXpressEigenschaft Typ StandardwertStopBits string 1BaudRate string 19200Parity string NoneDataBits string 8PortstringOpen boolean 0SMSEigenschaft Typ StandardwertAPIID integer 0PasswordstringSenderstringUsernamestringSMTPEigenschaft Typ StandardwertPasswordstringRecipientstringSenderAddressstringUsername string mail@example.comSenderNamestringUseAuthentication boolean 1Port integer 25Host string smtp.example.comUseSSL boolean 0Serial PortEigenschaft Typ StandardwertStopBits string 1BaudRate string 9600Parity string NoneDataBits string 8PortstringOpen boolean 0Server SocketEigenschaft Typ StandardwertLimit integer 0Port integer 1024


Open boolean 0Shutter ControlEigenschaft Typ StandardwertSiemens AddressEigenschaft Typ StandardwertAddress integer 0Bit integer 0DataType integer 1Poller integer 0ReadOnly boolean 0AreaAddress integer 0Area integer 7Siemens S7Eigenschaft Typ Standardwert<strong>IP</strong>Address string 10.199.1.77ComPort string Com1ProtocolType integer 5MPISpeed integer 2CPUSlot integer 2CPURack integer 0MPIRemote integer 2MPILocal integer 0Open boolean 0TMEXEigenschaft Typ StandardwertAdapterSpeed integer 0AdapterType integer 6AdapterPort integer 1Open boolean 1AdapterLevel integer 0Text ParserEigenschaft Typ StandardwertText To SpeechEigenschaft Typ Standardwert


TTSAudioOutputTTSEnginestringstringThermoJetEigenschaft Typ StandardwertUDP SocketEigenschaft Typ StandardwertBindPort integer 0Bind<strong>IP</strong>stringPort integer 0Open boolean 0HoststringUVR1611Eigenschaft Typ StandardwertDeviceCount integer 1Interval integer 0Utils ControlEigenschaft Typ StandardwertVelleman USBEigenschaft Typ StandardwertVirtual I/OEigenschaft Typ StandardwertWMRS200Eigenschaft Typ StandardwertDeviceType integer 0DeviceID integer 0WMRS200 ReceiverEigenschaft Typ StandardwertWWW ReaderEigenschaft Typ Standardwert


Active boolean 1AuthUserstringAuthPassstringUseBasicAuth boolean 0URLstringInterval integer 300WebFront ConfiguratorEigenschaft Typ StandardwertWebServerEigenschaft Typ StandardwertAuthPasswordstringActive boolean 1HomeDir string webEnableSSL boolean 0Server string 0.0.0.0AuthUsernamestringEnableBasicAuth boolean 0Port integer 80EnableLogFile boolean 0WinLIRCEigenschaft Typ StandardwertWuT CounterEigenschaft Typ StandardwertImpulses integer 1000IONum integer 0WuT GatewayEigenschaft Typ Standardwert<strong>IP</strong>AddressstringPasswordstringInterval integer 0WuT InputEigenschaft Typ StandardwertIONum integer 0


WuT OutputEigenschaft Typ StandardwertIONum integer 0WuT ThermoHygroEigenschaft Typ Standardwert<strong>IP</strong>AddressstringInterval integer 0XBee GatewayEigenschaft Typ StandardwertXBee SplitterEigenschaft Typ StandardwertDeviceID integer 0Z-Wave ConfiguratorEigenschaft Typ StandardwertZ-Wave GatewayEigenschaft Typ StandardwertZ-Wave ModuleEigenschaft Typ StandardwertdS ConfiguratorEigenschaft Typ StandardwertdS LightEigenschaft Typ StandardwertdSIDstringdS ShutterEigenschaft Typ StandardwertdSIDstringdS Splitter


Eigenschaft Typ Standardwert<strong>IP</strong>Address string dss.localTokenstringxComfort Binary InputEigenschaft Typ StandardwertDataPoint integer 0xComfort ConfiguratorEigenschaft Typ StandardwertxComfort DimmerEigenschaft Typ StandardwertEmulateStatus boolean 0DataPoint integer 0xComfort EnergyEigenschaft Typ StandardwertEnergyType integer 0DataPoint integer 0xComfort GatewayEigenschaft Typ StandardwertxComfort HRVEigenschaft Typ StandardwertDataPoint integer 0TemperatureVariableID integer 0xComfort HumidityEigenschaft Typ StandardwertDataPoint integer 0xComfort ImpulseEigenschaft Typ StandardwertImpulses integer 1000DataPoint integer 0xComfort Remote


Eigenschaft Typ StandardwertDataPoint integer 0xComfort Room ControlEigenschaft Typ StandardwertDataPoint integer 0xComfort ShutterEigenschaft Typ StandardwertDataPoint integer 0xComfort SwitchEigenschaft Typ StandardwertEmulateStatus boolean 0DataPoint integer 0xComfort TemperatureEigenschaft Typ StandardwertDataPoint integer 0xComfort Value RXEigenschaft Typ StandardwertValueType integer 0DataPoint integer 0xComfort Value TXEigenschaft Typ StandardwertValueType integer 0DataPoint integer 0Beispiel<strong>IP</strong>S_SetProperty($id, "Open", true); //I/O Instanz soll aktiviert sein.<strong>IP</strong>S_ApplyChanges($id); //Neue Konfiguration übernehmen


<strong>IP</strong>S_GetPropertyBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.7variant <strong>IP</strong>S_GetProperty ( integer $InstanzID , string $Eigenschaft )ParameterlisteInstanzIDEigenschaftID der InstanzName der EigenschaftRückgabewerteAktueller Wert der EigenschaftBeschreibungDieser Befehl liest für die InstanzID den Ist-Wert der Eigenschaft ein. Eine genaue Auflistung der möglichenEigenschaften für die einzelnen Instanzen finden Sie in der Beschreibung des Befehls <strong>IP</strong>S_SetProperty. Sie können einenneuen Soll-Wert mit <strong>IP</strong>S_SetProperty übergeben und mit <strong>IP</strong>S_ApplyChanges übernehmen lassen.Beispielecho <strong>IP</strong>S_GetProperty($id, "Open"); //Soll die I/O Instanz aktiviert werden beim Übernehmen?.


<strong>IP</strong>S_StatusVariableExistsDie Dokumentation dieser Funktion ist nur noch aus Kompatibilitätsgründen vorhanden und sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.5nicht mehr verwendet werden. Diese Funktion wird ab Version 2.5 nur noch emuliert und sollte durch dieentsprechenden Ersatzfunktionen ausgetauscht werden. Diese Funktion wird zum nächsten Major-Release vollständigentfernt.boolean <strong>IP</strong>S_StatusVariableExists ( integer $InstanzID , string $VariableIdent )ParameterlisteInstanzIDVariableIdentID der InstanzStatus Variable Identifikator. Eine Auflistung kann über <strong>IP</strong>S_GetStatusVariableIdents geholt werden.RückgabewerteDer Rückgabewert ist TRUE, wenn die Status Variable vorhanden ist, sonst FALSEBeschreibungDer Befehl überprüft, ob eine bestimmte Instanz InstanzID die Status Variable mit dem Status Variablen IdentifikatorVariableIdent besitzt.Beispielif(<strong>IP</strong>S_StatusVariableExists(12345, "StatusVariable")){echo <strong>IP</strong>S_GetStatusVariableID(12345, "StatusVariable");}


<strong>IP</strong>S_GetStatusVariableDie Dokumentation dieser Funktion ist nur noch aus Kompatibilitätsgründen vorhanden und sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.5nicht mehr verwendet werden. Diese Funktion wird ab Version 2.5 nur noch emuliert und sollte durch dieentsprechenden Ersatzfunktionen ausgetauscht werden. Diese Funktion wird zum nächsten Major-Release vollständigentfernt.array <strong>IP</strong>S_GetStatusVariable ( integer $InstanzID , string $VariableIdent )ParameterlisteInstanzIDVariableIdentID der InstanzStatus Variable Identifikator. Eine Auflistung kann über <strong>IP</strong>S_GetStatusVariableIdents abgerufen werden.RückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungVariableID integer Aktuelle ID der verknüpften <strong>IP</strong>-<strong>Symcon</strong> VariableVariableIdent string Status Variablen IdentifikatorVariableName string Standard Name der angelegten VariableVariablePosition integer Standard Position der angelegten VariableVariableProfile string Standard Profilname der angelegten VariableVariableType integer Kompatibler Variablentyp (Siehe <strong>IP</strong>S_GetVariable)VariableHasAction boolean Gibt an, ob intern eine Aktion definiert ist, die mit dieser Status Variableverknüpft wurde.VariableUseAction boolean Gibt an, wie die vorhandene Aktion in der Visualisierung benutzt werden soll.BeschreibungDer Befehl liefert ein Array mit Informationen über die Status Variable von der Instanz InstanzID und der StatusVariable mit dem Status Variablen Identifikator VariableIdent.Beispielif(<strong>IP</strong>S_StatusVariableExists(12345, "StatusVariable")){print_r(<strong>IP</strong>S_GetStatusVariable(12345, "StatusVariable"));}


<strong>IP</strong>S_GetStatusVariableIdentsDie Dokumentation dieser Funktion ist nur noch aus Kompatibilitätsgründen vorhanden und sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.5nicht mehr verwendet werden. Diese Funktion wird ab Version 2.5 nur noch emuliert und sollte durch dieentsprechenden Ersatzfunktionen ausgetauscht werden. Diese Funktion wird zum nächsten Major-Release vollständigentfernt.array <strong>IP</strong>S_GetStatusVariableIdents ( integer $InstanzID )ParameterlisteInstanzIDID der InstanzRückgabewerteEin Array von Strings, die die Status Variable Indentifikatoren der Instanz angebenBeschreibungDer Befehl ermittelt alle der Instanz InstanzID bekannten Status Variablen und liefert die Status VariablenIdentifikatoren in einem Array von Werten zurück.Beispielprint_r(<strong>IP</strong>S_GetStatusVariableIdents(12345));


<strong>IP</strong>S_SetStatusVariableUseActionDie Dokumentation dieser Funktion ist nur noch aus Kompatibilitätsgründen vorhanden und sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.5nicht mehr verwendet werden. Diese Funktion wird ab Version 2.5 nur noch emuliert und sollte durch dieentsprechenden Ersatzfunktionen ausgetauscht werden. Diese Funktion wird zum nächsten Major-Release vollständigentfernt.boolean <strong>IP</strong>S_SetStatusVariableUseAction ( integer $InstanzID , string $VariableIdent , boolean $BenutzteAktion )ParameterlisteInstanzIDVariableIdentBenutzteAktionID der InstanzStatus Variable Identifikator. Eine Auflistung kann über <strong>IP</strong>S_GetStatusVariableIdents abgerufen werden.Gibt an, ob die Aktion in der Visualisierung genutzt werden soll.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt, ob die intern verknüpfte Aktion einer bestimmten Instanz InstanzID und der Status Variable mit demStatus Variablen Identifikator VariableIdent benutzt werden soll.Beispielif(<strong>IP</strong>S_StatusVariableExists(12345, "StatusVariable")){<strong>IP</strong>S_SetStatusVariableUseAction(12345, "StatusVariable", false); //Per WebFront nicht mehr schaltbar mach}


<strong>IP</strong>S_GetStatusVariableIDDie Dokumentation dieser Funktion ist nur noch aus Kompatibilitätsgründen vorhanden und sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.5nicht mehr verwendet werden. Diese Funktion wird ab Version 2.5 nur noch emuliert und sollte durch dieentsprechenden Ersatzfunktionen ausgetauscht werden. Diese Funktion wird zum nächsten Major-Release vollständigentfernt.integer <strong>IP</strong>S_GetStatusVariableID ( integer $InstanzID , string $VariableIdent )ParameterlisteInstanzIDVariableIdentID der InstanzStatus Variable Identifikator. Eine Auflistung kann über <strong>IP</strong>S_GetStatusVariableIdents abgerufen werden.RückgabewerteVariablenID der Variable, die der Status Variable zugeordnet istBeschreibungDer Befehl gibt die VariablenID der Variable zurück, die mit der Status Variable der Instanz InstanzID und dem StatusVariablen Identifikator VariableIdent verknüpft ist.Beispiel//Zustand von z.B. einem FS20 Gerät darstellen ohne die ID der "Status" Variable zu kennenecho GetValue(<strong>IP</strong>S_GetStatusVariableID(12345, "StatusVariable"));


<strong>IP</strong>S_CreateVariableinteger <strong>IP</strong>S_CreateVariable ( integer $VariablenTyp )ParameterlisteVariablenTypWertBeschreibung0 Legt eine Variable vom Typ Boolean an1 Legt eine Variable vom Typ Integer an2 Legt eine Variable vom Typ Float an3 Legt eine Variable vom Typ String anRückgabewerteID der neu erstellten VariableBeschreibungDer Befehl legt eine neue <strong>IP</strong>S-Variable vom Typ VariablenTyp an.Die Funktion liefert eine ID, mit deren Hilfe die erzeugte Variable eindeutig identifiziert werden kann.Beispiel// Anlegen einer Float-Variablen$VarID_Raumtemperatur = <strong>IP</strong>S_CreateVariable(2);


<strong>IP</strong>S_DeleteVariableboolean <strong>IP</strong>S_DeleteVariable ( integer $VariablenID )ParameterlisteVariablenIDID der zu löschenden VariableRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl löscht eine vorhandene Variable mit der ID VariablenID.Alle der Variable untergeordneten Objekte werden in die Root-Kategorie verschoben.Beispiel// Löschen der Variablen 47788<strong>IP</strong>S_DeleteVariable(47788);


<strong>IP</strong>S_VariableExistsboolean <strong>IP</strong>S_VariableExists ( integer $VariablenID )ParameterlisteVariablenIDID der zu prüfenden VariableRückgabewerteFalls die VariablenID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl prüft, ob die Variable mit der ID VariablenID existiert.Beispielif (<strong>IP</strong>S_VariableExists(44788))echo "Variable existiert bereits!";


<strong>IP</strong>S_GetVariablearray <strong>IP</strong>S_GetVariable ( integer $VariablenID )ParameterlisteVariablenIDDie zu zeigende VariablenIDRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungVariableChanged float Unix-Timestamp, wenn die Variable zuletzt verändert wurdeVariableUpdated float Unix-Timestamp, wenn die Variable zuletzt aktualisiert wurdeVariableValue array Siehe Tabelle VariablenwertVariableID integer VariablenIDVariableIsBinary boolean Gibt an, ob die String Variable über SOAP Base64 kodiert wird.VariableIsLocked boolean Gibt an, ob diese Variable oberhalb des Variablenlimits ist und deshalb nichtbeschrieben werden kann (Verfügbar ab Version 2.3).VariableProfile string Name vom System gegebenen Profil. Leer, falls kein Profil angegbenVariableAction integer ID der Instanz, die bei einer gewünschten Änderungen der Variable denÄnderungswunsch entgegen nimmt. 0 bei keiner oder einer deaktiviertenVerknüpfung.VariableCustomProfile string Name vom Benutzer gegebenen Profil. Leer, falls kein Profil angeben.VariableCustomAction integer ID des Skriptes, dass bei einer gewünschten Änderung der Variable über dieVisualisierung gestartet werden soll. Sofern aktuell eine vorhandeneStandardaktion deaktiviert wird, ist die nichtvorhandene SkriptID Eins (1)angegeben. (Ab Version 2.5 #2300)Tabelle: VariablenWertIndex Typ BeschreibungValueType integer Variablentyp (0: Boolean, 1: Integer, 2: Float, 3: String)ValueBoolean boolean Wert der Variable abhängig vom ValueTypeValueInteger integer Wert der Variable abhängig vom ValueTypeValueFloat float Wert der Variable abhängig vom ValueTypeValueString string Wert der Variable abhängig vom ValueTypeBeschreibungDer Befehl liefert ein Array mit Informationen über die Variable mit der ID VariablenID.Beispielprint_r(<strong>IP</strong>S_GetVariable(40770));/* liefert z.B.:Array([VariableChanged] => 1246039629.471


[VariableCustomAction] => 0[VariableCustomProfile] => BoolProfile[VariableID] => 40770[VariableIsBinary] =>[VariableIsLocked] =>[VariableProfile] => ~Switch[VariableUpdated] => 1246039629.471[VariableValue] => Array([ValueArray] => Array()[ValueBoolean] => 1[ValueFloat] => 0[ValueIndex] => Array([IndexInt] => 0[IndexStr] =>[IndexType] => 0))[ValueInteger] => 0[ValueString] =>[ValueType] => 0)*/


<strong>IP</strong>S_GetVariableListarray <strong>IP</strong>S_GetVariableList ( )RückgabewerteEin Array von Integer-Werten aller IDs der Variablen in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> registrierten <strong>IP</strong>S-Variablen. Die IDs werden in einem Array aufgelistet.Falls keine Variable existiert, ist das Array leer.Beispiel$alleVariablen = <strong>IP</strong>S_GetVariableList();print_r($alleVariablen);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. ...*/


<strong>IP</strong>S_GetVariableIDByNameinteger <strong>IP</strong>S_GetVariableIDByName ( string $VariablenName , integer $ParentID )ParameterlisteVariablenNameParentIDZu suchender VariablenNameObjekt, in deren Unterobjekten gesucht werden sollRückgabewerteID der gefundenen Variable, sonst FALSEBeschreibungDer Befehl versucht die ID der Variablen mit dem Namen VariablenName, deren übergeordnetes Objekt die IDParentID besitzt, zu ermitteln. Es wird die ID der ersten gefundenen Variablen verwendet, deren Name mitVariablenName übereinstimmt. Falls eine solche Variable gefunden wurde, wird deren ID zurückgemeldet, andernfallsFALSE.Da hier im Gegensatz zu <strong>IP</strong>S_GetVariableID ein zusätzliches Kriterium (ParentID) bei der Suche verwendet wird, ist dieWahrscheinlichkeit die richtige ID zu finden erheblich größer. Trotzdem gilt:Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$VarID = @<strong>IP</strong>S_GetVariableIDByName("Regenmenge", $ParentID);if ($VarID === false)echo "Variable nicht gefunden!";elseecho "Die Variablen-ID lautet: ". $VarID;


<strong>IP</strong>S_GetVariableEventListarray <strong>IP</strong>S_GetVariableEventList ( integer $VariablenID )ParameterlisteVariablenIDVariablenID, zu der verknüpfte Ereignisse gesucht werden sollenRückgabewerteEin Array von Integer-Werten aller EreignisIDs, die mit der Variable VariablenID verknüpft sindBeschreibungDer Befehl liefert ein Array, dessen Elemente jeweils die IDs zu den Ereignissen sind, in der die Variable VariableIDverwendet wird. Die Ereignisse können dann mit dem Befehl <strong>IP</strong>S_GetEvent weiterverarbeitet werden.Beispiel$events = <strong>IP</strong>S_GetVariableEventList(12345);print_r($events); // ermittelt alle Ereignisse des aktuellen Skripts


<strong>IP</strong>S_SetVariableCustomActionboolean <strong>IP</strong>S_SetVariableCustomAction ( integer $VariablenID , integer $SkriptID )ParameterlisteVariablenIDSkriptIDID der Variable, der die Aktion zugeordnet werden sollID eines Skriptes, das als Aktions aufgeführt werden soll. Sofern eine vorhandene Standardaktion deaktiviertwerden soll, kann die nichtvorhandene SkriptID Eins (1) angegeben werden, wodurch die Standardaktionausgeschaltet wird. Wenn eine gültige SkriptID angegebenen wird, so hat diese Vorrang vor der Standardaktion.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl vergibt der Variable VariablenID eine benutzerdefinierte Aktion, die in der Visualisierung benutzt wird, umeine Änderung der Variable an die richtige Funktion des Moduls weiterzuleiten. Ein Beispiel für ein Aktionsskript kannhier gefunden werden: VariablenprofileBeispiel<strong>IP</strong>S_SetVariableCustomAction(12345, 44431);


<strong>IP</strong>S_SetVariableCustomProfileBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 3.0boolean <strong>IP</strong>S_SetVariableCustomProfile ( integer $VariablenID , string $ProfilName )ParameterlisteVariablenIDProfilNameID der Variable, der das Profil zugeordnet werden sollName des Profils. Verfügbare Profile können über <strong>IP</strong>S_GetVariableProfileList abgefragt werden. Wenn einLeerstring übergeben wird, dann wird das benutzerdefinierte Profil deaktiviert.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl vergibt der Variable VariablenID das benutzerdefinierte Profil ProfilName.Diese Funktion überprüft vor dem Setzen die Existenz des zu setzenden Profils und die Übereinstimmung vonProfiltyp und Variablentyp.Standardprofile, die nicht geändert werden können, fangen mit einer Tilde (~) an.Beispiel<strong>IP</strong>S_SetVariableCustomProfile(12345, "~Switch");


<strong>IP</strong>S_GetVariableIDDiese Funktion kann ab <strong>IP</strong>-<strong>Symcon</strong> 2.5 nicht mehr verwendet werden. Alte <strong>IP</strong>-<strong>Symcon</strong> 1.0 Funktionen wurden mitdiesem Release entfernt.integer <strong>IP</strong>S_GetVariableID ( string $VariablenName )ParameterlisteVariablenNamezu suchender VariablenNameRückgabewerteID der gefundenen Variable, sonst FALSE und ein WarningBeschreibungDer Befehl versucht, die ID der Variablen mit dem Namen VariablenName zu ermitteln. Es wird die ID der erstengefundenen Variablen verwendet, deren Name mit VariablenName übereinstimmt. Falls eine solche Variable gefundenwurde, wird deren ID zurückgemeldet, andernfalls FALSE.Eine sicherere Methode, die ID zu bestimmen, bietet der Befehl <strong>IP</strong>S_GetVariableIDByName.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Beispiel//Fehlermeldung mit @ unterdrücken$VarID = @<strong>IP</strong>S_GetVariableID("Regenmenge");if ($VarID === false)echo "Variable nicht gefunden!";elseecho "Die Variablen-ID lautet: ". $VarID;


<strong>IP</strong>S_CreateVariableProfileboolean <strong>IP</strong>S_CreateVariableProfile ( string $ProfilName , integer $VariablenTyp )ParameterlisteProfilNameVariablenTypName des Profils. Erlaubt sind A-Z, Punkt, Komma, UnterstrichWertBeschreibung0 Legt eine Variable vom Typ Boolean an1 Legt eine Variable vom Typ Integer an2 Legt eine Variable vom Typ Float an3 Legt eine Variable vom Typ String anRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl legt ein neues Variablenprofile für den Typ VariablenTyp an.Die Funktion liefert eine ID, mit deren Hilfe die erzeugte Variable eindeutig identifiziert werden kann.Beispiel//Anlegen eines Profils für Boolean-Variablen<strong>IP</strong>S_CreateVariableProfile("Schalter", 0);//... hier die weitere Konfiguration des Profils


<strong>IP</strong>S_DeleteVariableProfileboolean <strong>IP</strong>S_DeleteVariableProfile ( string $ProfilName )ParameterlisteProfilNameName des zu löschenden ProfilsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl löscht ein vorhandenes Variablenprofil mit dem Namen ProfilName.Beispiel//Löschen des Schalter Profils<strong>IP</strong>S_DeleteVariableProfile("Schalter");


<strong>IP</strong>S_SetVariableProfileTextboolean <strong>IP</strong>S_SetVariableProfileText ( string $ProfilName , string $Präfix , string $Suffix )ParameterlisteProfilNamePräfixSuffixName des Profils. Verfügbare Profile können über <strong>IP</strong>S_GetVariableProfileList abgefragt werden.Prefix für den WertSuffix für den WertRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt den Präfix und Suffix eines Variablenprofils mit Namen ProfilName.Standardprofile, die nicht geändert werden können, fangen mit einer Tilde (~) an.Beispiel<strong>IP</strong>S_SetVariableProfileText("Schalter", "", "%");


<strong>IP</strong>S_SetVariableProfileValuesboolean <strong>IP</strong>S_SetVariableProfileValues ( string $ProfilName , float $Minimalwert , float $Maximalwert , float $Schrittweite )ParameterlisteProfilNameMinimalwertMaximalwertSchrittweiteName des Profils. Verfügbare Profile können über <strong>IP</strong>S_GetVariableProfileList abgefragt werden.Der für die Visualisierung genutzte Minimalwert. Diese Soft-Limitation beeinflusst nicht den Variablenwert.Der für die Visualisierung genutzte Maximalwert. Diese Soft-Limitation beeinflusst nicht den Variablenwert.Die für die Visualisierung genutzte Schrittweite zur Erstellung der Sollwert-Veränderngsleiste. Eine Schrittweitevon 0 aktiviert die Assoziationsliste.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt den MinimalWert, MaximalWert und die Schrittweite eines Variablenprofils mit Namen ProfilName.Standardprofile, die nicht geändert werden können, fangen mit einer Tilde (~) an.Beispiel<strong>IP</strong>S_SetVariableProfileValues("Temperatur", -10, 40, 0.5);


<strong>IP</strong>S_SetVariableProfileDigitsboolean <strong>IP</strong>S_SetVariableProfileDigits ( string $ProfilName , integer $Nachkommastellen )ParameterlisteProfilNameNachkommastellenName des Profils. Verfügbare Profile können über <strong>IP</strong>S_GetVariableProfileList abgefragt werden.Anzahl der in der Visualisierung angezeigten NachkommastellenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt die Anzahl der Nachkommastellen eines Variablenprofils mit Namen ProfilName.Standardprofile, die nicht geändert werden können, fangen mit einer Tilde (~) an.Beispiel<strong>IP</strong>S_SetVariableProfileDigits("Temperatur", 1);


<strong>IP</strong>S_SetVariableProfileAssociationboolean <strong>IP</strong>S_SetVariableProfileAssociation ( string $ProfilName , float $Wert , string $Name , string $Icon, integer $Farbe )ParameterlisteProfilNameWertNameIconFarbeName des Profils. Verfügbare Profile können über <strong>IP</strong>S_GetVariableProfileList abgefragt werden.Wert, zu dem der Name und das Icon verknüpft werden sollenName zum angegebenen WertIcon zum angegebenen WertFarbwert im HTML Farbcode (z.b. 0x0000FF für Blau). Sonderfall: -1 für transparentRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt die Namen, das Icon und die Farbe für einen Wert eines Variablenprofils mit Namen ProfilName.Die Farbe wird nicht angezeigt für Profile vom Typ Wertanzeige/Slider (siehe Objekt-Darstellung).Wenn Name und Icon leer sind, wird die Assoziation zum angegebenen Wert gelöscht.Standardprofile, die nicht geändert werden können, fangen mit einer Tilde (~) an.Beispiel//Anlegen für Wert 1 in der Farbe weiß<strong>IP</strong>S_SetVariableProfileAssociation("Temperatur", 1, "Wert 1", "Speaker", 0xFFFFFF);//Löschen für Wert 1<strong>IP</strong>S_SetVariableProfileAssociation("Temperatur", 1, "", "", -1);


<strong>IP</strong>S_SetVariableProfileIconboolean <strong>IP</strong>S_SetVariableProfileIcon ( string $ProfilName , string $Icon )ParameterlisteProfilNameIconName des Profils. Verfügbare Profile können über <strong>IP</strong>S_GetVariableProfileList abgefragt werden.Icon zum angegebenen WertRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt das standardmäßig genutzte Icon eines Variablenprofils mit Namen ProfilName.Die Reihenfolge der genutzten Icons ist wie folgt: AssoziationsIcon -> ProfilIcon -> LinkIcon -> ObjektIconWenn Name und Icon leer sind, wird die Assoziation zum angegebenen Wert gelöscht.Standardprofile, die nicht geändert werden können, fangen mit einer Tilde (~) an.Beispiel<strong>IP</strong>S_SetVariableProfileIcon("Temperatur", "Temperature");


<strong>IP</strong>S_VariableProfileExistsboolean <strong>IP</strong>S_VariableProfileExists ( string $ProfilName )ParameterlisteProfilNameName des gesuchten VariablenprofilsRückgabewerteFalls die VariablenID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl löscht eine vorhandenes Variablenprofil mit dem Namen ProfilName.Beispielif (<strong>IP</strong>S_VariableProfileExists("Temperatur"))echo "Profil existiert bereits!";


<strong>IP</strong>S_GetVariableProfilearray <strong>IP</strong>S_GetVariableProfile ( string $ProfilName )ParameterlisteProfilNameName des VariablenprofilsRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungAssociations array Array mit Wert, Name, Icon PaarenIcon string Icon des VariablenprofilsIsReadOnly boolean TRUE, wenn es ein systemerstelltes Profil ist, welches nicht geändert werden kann.MaxValue float Maximalwert für die VisualisierungMinValue float Minimalwert für die VisualisierungStepSize float Schrittweite für die Visualisierung; 0, wenn Assoziationstabelle genutzt werden sollDigits integer Anzahl der NachkommastellenPrefix array Präfix für die VisualisierungSuffix integer Suffix für die VisualisierungProfileName string Name des Profils (~ = Systemprofil)ProfileType integer Typ des Profils (Siehe VariablenTyp)BeschreibungDer Befehl liefert ein Array mit Informationen über das Variableprofil mit dem Namen ProfilName.Beispielprint_r( <strong>IP</strong>S_GetVariableProfile("~WindDirection") );/* liefert z.B.:Array([Associations] => Array())*/[Digits] => 1[Icon] => WindDirection[IsReadOnly] => 1[MaxValue] => 360[MinValue] => 0[Prefix] =>[ProfileName] => ~WindDirection[ProfileType] => 2[StepSize] => 60[Suffix] => °


<strong>IP</strong>S_GetVariableProfileListarray <strong>IP</strong>S_GetVariableProfileList ( )RückgabewerteEin Array von String-Werten aller Namen der VariablenprofileBeschreibungDer Befehl ermittelt in <strong>IP</strong>-<strong>Symcon</strong> vorhandenen Variablenprofile. Die Namen werden in einem Array aufgelistet.Beispiel$Profile = <strong>IP</strong>S_GetVariableProfileList();print_r($Profile);/* liefert z.B.:Array([0] => ~Temperature[1] => ~Humidity[2] => ~AirPressureusw. ...*/


<strong>IP</strong>S_GetVariableProfileListByTypearray <strong>IP</strong>S_GetVariableProfileListByType ( integer $VariablenTyp )ParameterlisteVariablenTypWertBeschreibung0 Sucht vom Typ Boolean1 Sucht vom Typ Integer2 Sucht vom Typ Float3 Sucht vom Typ StringRückgabewerteEin Array von String-Werten aller Namen der VariablenprofileBeschreibungDer Befehl ermittelt in <strong>IP</strong>-<strong>Symcon</strong> vorhandenen Variablenprofile vom Typ Variablentyp. Die Namen werden in einemArray aufgelistet.Beispiel$Profile = <strong>IP</strong>S_GetVariableProfileListByType(0);print_r($Profile);/* liefert z.B.:Array([0] => ~Switch[1] => ~Alert[2] => ~Alert.Reversedusw. ...*/


<strong>IP</strong>S_CreateScriptinteger <strong>IP</strong>S_CreateScript ( integer $SkriptTyp )ParameterlisteSkriptTypWertBeschreibung0 Erzeugt ein normales PHP SkriptRückgabewerteID des neu erstellten SkriptsBeschreibungDer Befehl legt ein Skript vom Typ SkriptTyp an.Die Funktion liefert eine ID, mit deren Hilfe das erzeugte Skript eindeutig identifiziert werden kann. Der Befehlt erzeugtauch automatisch eine passende Skriptdatei, die normalerweise vom Format SkriptID.ips.php ist. Falls Sie eine andereDatei zuordnen möchten, können Sie dies über den Befehl <strong>IP</strong>S_SetScriptFile tun. Beachten Sie, dass Sie in demZusammenhang auch die alte Skriptdatei löschen sollten, um unnötige Skriptdateien zu vermeiden.Beispiel$ScriptID = <strong>IP</strong>S_CreateScript(0);echo"Die Skript-ID lautet: ". $ScriptID;


<strong>IP</strong>S_DeleteScriptboolean <strong>IP</strong>S_DeleteScript ( integer $SkriptID , boolean $DateiLöschen )ParameterlisteSkriptIDDateiLöschenID des zu löschenden SkriptsTRUE, wenn Datei gelöscht werden soll; FALSE, wenn die Datei in den ‘deleted’ Ordner verschoben werden sollRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl entfernt das Skript mit der ID SkriptID aus der internen Skriptliste. Das Skript erscheint nicht mehr imStrukturbaum und kann auch nicht mehr bearbeitet werden.Gelösche Skripte werden in den “/scripts/deleted/” Ordner verschoben.Alle dem Skript untergeordneten Objekte werden in die Root-Kategorie verschoben.Beispiel<strong>IP</strong>S_DeleteScript($ScriptID, true); // Skript inklusive Datei löschen


<strong>IP</strong>S_SetScriptFileboolean <strong>IP</strong>S_SetScriptFile ( integer $SkriptID , string $Dateiname )ParameterlisteSkriptIDDateinameID des Skript, dem der Dateiname zugeordnet werden sollDateiname des PHP Skripts (relativ zum “/scripts” Ordner)RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl bindet den Dateinamen DateiName an das Skript mit der ID SkriptID. Normalerweise besteht derDateiname eines Skripts nur aus dessen ID mit der Extension “.ips.php”. Mit diesem Befehl ist es möglich, einen anderenDateinamen zu verwenden.Der Dateiname hat nichts mit dem Skriptnamen zu tun, der im Location Tree zu sehen ist. Skriptname und Dateinamekönnen völlig verschieden sein. Die SkriptID bleibt auch nach der Zuordnung erhalten. Weder der Skriptname noch derDateiname können direkt zur Identifikation des Skripts verwendet werden. Von <strong>IP</strong>-<strong>Symcon</strong> wird hierfür immer nur dienumerische SkriptID benutzt.Beispiel$ScriptPath = "Example.ips.php"; //Skriptdatei$ScriptID = <strong>IP</strong>S_CreateScript(0);$Script = <strong>IP</strong>S_GetScript($ScriptID);//Alte Datei löschenunlink(<strong>IP</strong>S_GetKernelDir() . '/scripts/' . $Script['ScriptFile']);//Neu Verknüpfen<strong>IP</strong>S_SetScriptFile($ScriptID, $ScriptPath);


<strong>IP</strong>S_GetScriptFilestring <strong>IP</strong>S_GetScriptFile ( integer $SkriptID )ParameterlisteSkriptIDID des Skripts, dem der Dateiname zugeordnet werden sollRückgabewerteGibt den Dateinamen des Skripts zurückBeschreibungDer Befehl gibt den Dateinamenvom Skript mit der ID SkriptID zurück. Dadurch kann die Datei z.B. direkt in andereSkripte inkludiert werden.Beispielinclude(<strong>IP</strong>S_GetScriptFile($ScriptID));


<strong>IP</strong>S_ScriptExistsboolean <strong>IP</strong>S_ScriptExists ( integer $SkriptID )ParameterlisteSkriptIDID der zu prüfenden SkripteRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl prüft, ob das Skript mit der ID SkriptID existiert.Beispielif (<strong>IP</strong>S_ScriptExists(34881))echo "Ein Skript mit dieser ID existiert!";


<strong>IP</strong>S_GetScriptarray <strong>IP</strong>S_GetScript ( integer $SkriptID )ParameterlisteSkriptIDDie zu zeigende SkriptIDRückgabewerteFolgende Informationen stehen als key => value Paare zur verfügung:Index Typ BeschreibungIsBroken boolean TRUE, wenn beim letzten Skriptaufruf Fehler aufgetreten sind, andernfalls FALSELastExecute float Unix Timestamp des letzten AufrufsScriptFile string Dateiname des SkriptsSkriptID integer SkriptIDScriptType integer Skript-Typ (0: PHP Skript)BeschreibungDer Befehl liefert ein Array mit Informationen über das Skript mit der ID SkriptID.Beispiel$SkriptID = 46413;$SkriptInfo = <strong>IP</strong>S_GetScript($SkriptID);print_r($SkriptInfo);/* liefert z.B.:Array([IsBroken] => false[LastExecute] => 1204933792[ScriptFile] => 46413.ips.php[ScriptID] => 46413[ScriptType] => 0)*/


<strong>IP</strong>S_GetScriptListarray <strong>IP</strong>S_GetScriptList ( )RückgabewerteEin Array von Integer-Werten aller IDs der Skripte in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> registrierten Skripte. Die IDs werden in einem Array aufgelistet. Falls keinSkript existiert, ist das Array leer.Beispiel$alleSkripte = <strong>IP</strong>S_GetScriptList();print_r($alleSkripte);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. ...*/


<strong>IP</strong>S_GetScriptIDByNameinteger <strong>IP</strong>S_GetScriptIDByName ( string $SkriptName , integer $ParentID )ParameterlisteSkriptNameParentIDzu suchender SkriptNameObjekt in deren Unterobjekten gesucht werden sollRückgabewerteID des gefundenen Skripts, sonst FALSEBeschreibungDer Befehl versucht die ID des Skripts mit dem Namen SkriptName, dessen übergeordnetes Objekt die ID ParentIDbesitzt, zu ermitteln. Es wird die ID des ersten gefundenen Skripts verwendet, dessen Name mit SkriptNameübereinstimmt. Falls ein solches Skript gefunden wurde, wird dessen ID zurückgemeldet, andernfalls FALSE.Da hier im Gegensatz zu <strong>IP</strong>S_GetScriptID ein zusätzliches Kriterium (ParentID) bei der Suche verwendet wird, ist dieWahrscheinlichkeit die richtige ID zu finden erheblich größer. Trotzdem gilt:Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$ScriptID = @<strong>IP</strong>S_GetScriptIDByName("Regenerfassung", $ParentID);if ($ScriptID === false)echo "Skript nicht gefunden!";elseecho "Die Skript-ID lautet: ". $ScriptID;


<strong>IP</strong>S_GetScriptIDByFileinteger <strong>IP</strong>S_GetScriptIDByFile ( string $Dateipfad )ParameterlisteDateipfadRelativer Dateipfad vom script-Order gesehenRückgabewerteID des gefundenen Skripts, sonst FALSEBeschreibungDer Befehl versucht die ID des Skripts herausfinden, welches zur Skriptdatei Dateipfad zugeordnet ist. Falls ein solchesSkript gefunden wurde, wird dessen ID zurückgemeldet, andernfalls FALSE.Diese Funktion generiert eine Warung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$ScriptID = @<strong>IP</strong>S_GetScriptIDByFile("12345.ips.php");if ($ScriptID === false)echo "Skriptdatei nicht gefunden!";elseecho "Die Skript-ID lautet: ". $ScriptID;


<strong>IP</strong>S_GetScriptEventListarray <strong>IP</strong>S_GetScriptEventList ( integer $SkriptID )ParameterlisteSkriptIDSkriptID, zu der verknüpfte Ereignisse gesucht werden sollenRückgabewerteEin Array von Integer-Werten aller EreignisIDs, die mit dem Skript SkriptID verknüpft sindBeschreibungDer Befehl liefert ein Array, dessen Elemente jeweils die IDs zu den Ereignissen des Skripts mit der ID SkriptIDenthalten. Die Ereignisse können dann mit dem Befehl <strong>IP</strong>S_GetEvent weiterverarbeitet werden.Beispiel$events = <strong>IP</strong>S_GetScriptEventList($_<strong>IP</strong>S['SELF']);print_r($events); // ermittelt alle Ereignisse des aktuellen Skripts


<strong>IP</strong>S_GetScriptIDDiese Funktion kann ab <strong>IP</strong>-<strong>Symcon</strong> 2.5 nicht mehr verwendet werden. Alte <strong>IP</strong>-<strong>Symcon</strong> 1.0 Funktionen wurden mitdiesem Release entfernt.integer <strong>IP</strong>S_GetScriptID ( string $SkriptName )ParameterlisteSkriptNameZu suchender SkriptNameRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl versucht, die ID des Skripts mit dem Namen SkriptName zu ermitteln. Es wird die ID des erstengefundenen Skripts verwendet, dessen Name mit SkriptName übereinstimmt. Falls ein solches Skript gefunden wurde,wird dessen ID zurückgemeldet, andernfalls 0 (Null).Eine sicherere Methode, die ID zu bestimmen, bietet der Befehl <strong>IP</strong>S_GetScriptIDByName.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Beispiel//Fehlermeldung mit @ unterdrücken$ScriptID = @<strong>IP</strong>S_GetScriptID("Regenerfassung");if ($ScriptID === false)echo "Skript nicht gefunden!";elseecho "Die Skript-ID lautet: ". $ScriptID;


<strong>IP</strong>S_SetScriptTimerboolean <strong>IP</strong>S_SetScriptTimer ( integer $SkriptID , integer $TimerWert )ParameterlisteSkriptIDTimerWertID des Skript, dessen Timer eingestellt werden solllZeit in Sekunden, in denen das Skript zyklisch aufgerufen werden sollRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl setzt den Integer-Startwert des ScriptTimers des Skripts mit der ID SkriptID auf den Wert TimerWert inSekunden. Mit diesem Befehl kann man den ScriptTimer auf einen bestimmten Wert setzen. Der Wert wird inSekundenschritten heruntergezählt. Beim Erreichen des Werts 0 wird das Skript gestartet und der ScriptTimer erneut aufden Startwert gesetzt. Dieser Vorgang wiederholt sich bis der Timer explizit gelöscht (auf 0 gesetzt) wurde.Steht der Wert auf 0, so ist der Timer abgeschaltet, und es erfolgt kein Timer-Event.Beispiel//veranlasst, dass das Skript alle 10 Sekunden ausgeführt wird<strong>IP</strong>S_SetScriptTimer($ScriptID, 10);


<strong>IP</strong>S_GetScriptTimerinteger <strong>IP</strong>S_GetScriptTimer ( integer $SkriptID )ParameterlisteSkriptIDID des Skripts, dessen Timer ausgelesen werden sollRückgabewerteZeit in Sekunden, die der Timer das Skript zyklisch aufruft. (Es ist nicht die Restzeit.)BeschreibungDer Befehl liefert einen Integer-Wert mit dem Startwert des ScriptTimers des Skripts mit der ID SkriptID. Der Wertwird in Sekunden angegeben. Mit diesem Befehl kann man prüfen, auf welchen Wert der ScriptTimer eines Skripts gesetztist und ob dieser korrekt ist.Steht der Wert auf 0, so ist der Timer abgeschaltet, und es erfolgt kein Timer-Event.Beispiel$TimerWert = <strong>IP</strong>S_GetScriptTimer($ScriptID); // ermittelt den Wert des ScriptTimers


<strong>IP</strong>S_CreateMediainteger <strong>IP</strong>S_CreateMedia ( integer $MedienTyp )ParameterlisteMedienTypWertBeschreibung0 Legt ein Designer Formular an1 Legt ein Image Objekt an2 Legt ein Sound Objekt an3 Legt ein Stream Objekt anRückgabewerteID des neu erstellten MedienobjektsBeschreibungDer Befehl legt ein leeres Medienobjekt vom Typ MedienTyp an.Die Funktion liefert eine ID, mit deren Hilfe das erzeugte Medienobjekt eindeutig identifiziert werden kann. Das erzeugteObjekt ist nach dem Anlegen noch leer und muss mit der Funktion <strong>IP</strong>S_SetMediaFile noch mit einer realen Mediendateiverbunden werden.Beispiel$ImageFile = "C:\\Bilder\\Alarmsymbol.png"; // Image-Datei$MediaID = <strong>IP</strong>S_CreateMedia(1);// Image im MedienPool anlegen<strong>IP</strong>S_SetMediaFile($MediaID, $ImageFile); // Image im MedienPool mit Image-Datei verbinden


<strong>IP</strong>S_DeleteMediaboolean <strong>IP</strong>S_DeleteMedia ( integer $MedienID , boolean $DateiLöschen )ParameterlisteMedienIDDateiLöschenID des zu löschenden MedienobjektsTRUE, wenn Datei gelöscht werden soll; FALSE, wenn die Datei in den ‘deleted’ Ordner verschoben werden sollRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl entfernt das Medienobjekt mit der ID MedienID aus dem MedienPool.Alle dem Medienobjekt untergeordneten Objekte werden in die Root-Kategorie verschoben.Beispiel<strong>IP</strong>S_DeleteMedia($MediaID, true);


<strong>IP</strong>S_SetMediaFileboolean <strong>IP</strong>S_SetMediaFile ( integer $MedienID , string $DateiName , boolean $DateiMussExistieren )ParameterlisteMedienIDDateiNameID des zu verändernden MedienobjektsDateiname der Mediendatei. Folgende Erweiterungen sind erlaubt:Typ des Medienobjektspassende Mediendateien0 (Designer Form) bin1 (Image Objekt) bmp, jpg, jpeg, gif, png, ico2 (Sound Objekt) wav, mp33 (Stream URL) url zu MJPEG-StreamDateiMussExistierenTRUE, wenn Existenz geprüft werden soll, sonst FALSERückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl bindet den Dateinamen DateiName an das Medienobjekt mit der ID MedienID. Der ParameterDateiMussExistieren gibt an, ob intern geprüft werden soll, ob die Datei vorhanden ist. Die zuzuordnende Mediendateimuss zum Medientyp des Medienobjekts passen.Der DateiName muss eindeutig sein. Wenn der DateiName bereits einem anderen Medienobjekt zugehörig ist, wirdein Fehler zurückgegeben.Beispiel$ImageFile = "C:\\Bilder\\Alarmsymbol.png"; // Image-Datei$MediaID = <strong>IP</strong>S_CreateMedia(1);// Image im MedienPool anlegen<strong>IP</strong>S_SetMediaFile($MediaID, $ImageFile, true); // Image im MedienPool mit Image-Datei verbinden


<strong>IP</strong>S_MediaExistsboolean <strong>IP</strong>S_MediaExists ( integer $MedienID )ParameterlisteMedienIDID des zu rüfenden MedienobjektsRückgabewerteFalls die MedienID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl prüft, ob das Medienobjekt mit der ID MediaID existiert.Beispielif (<strong>IP</strong>S_MediaExists(34881))echo "Ein Medienobjekt mit dieser ID existiert!";


<strong>IP</strong>S_GetMediaarray <strong>IP</strong>S_GetMedia ( integer $MedienID )ParameterlisteMedienIDDie zu zeigende MedienIDRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungIsAvailable boolean TRUE, wenn MediaFile vorhandenIsLinked boolean TRUE, wenn Datei außerhalb des Media Ordners liegtLastUpdate float Unix Timestamp der letzten AktualisierungMediaCRC string CRC32 der DateiMediaFile string Pfad zur DateiMediaID integer MediaIDMediaSize integer Größe in ByteMediaType integer Medien-Typ (0: Formular, 1: Bild, 2: Ton)SendEvent boolean TRUE, wenn automatisch Dateiänderungen versendet werden sollenBeschreibungDer Befehl liefert ein Array mit Informationen über Medien mit der ID MedienID.Beispielprint_r(<strong>IP</strong>S_GetMedia(45699));/* liefert z.B.:Array([IsAvailable] => 1[IsLinked] =>[LastUpdate] => 1214421546.474[MediaCRC] => E2D2C1D1[MediaFile] => media\45699.bin[MediaID] => 45699[MediaSize] => 8192[MediaType] => 0[SendEvent] =>)*/


<strong>IP</strong>S_GetMediaListarray <strong>IP</strong>S_GetMediaList ( )RückgabewerteEin Array von Integer-Werten aller IDs der Medienobjekte in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller im MedienPool registrierten Medienobjekte. Die IDs werden in einem Array aufgelistet.Falls kein Medienobjekt existiert, ist das Array leer.Es werden Objekte aller Medientypen aufgelistet. Sollen nur Objekte eines bestimmten Medientyps berücksichtigt werden,so kann hierfür der Befehl <strong>IP</strong>S_GetMediaListByType verwendet werden.Beispiel$alleMedienobjekte = <strong>IP</strong>S_GetMediaList();print_r($alleMedienobjekte);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. ...*/


<strong>IP</strong>S_GetMediaListByTypearray <strong>IP</strong>S_GetMediaListByType ( integer $Medien Typ )ParameterlisteMedien TypWertBeschreibung0 Designer Formular1 Image Objekt2 Sound ObjektRückgabewerteEin Array von Integer-Werten aller IDs der Medienobjekt vom Typ MedienTyp in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller im MedienPool registrierten Medienobjekte eines bestimmten MedienTyps. Die IDswerden in einem Array aufgelistet. Falls kein Medienobjekt des angeforderten Typs existiert, ist das Array leer.Es werden nur Objekte des Medientyps MedienTyp aufgelistet. Sollen alle Medienobjekte aufgelistet werden, so kannhierfür der Befehl <strong>IP</strong>S_GetMediaList verwendet werden.Beispiel$alleImageObjekte = <strong>IP</strong>S_GetMediaListByType(1); // nur Image-Objekte auflistenprint_r($alleImageObjekte);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. ...)*/


<strong>IP</strong>S_GetMediaIDByNameinteger <strong>IP</strong>S_GetMediaIDByName ( string $MedienName , Objekt, in deren Unterobjekten gesucht werdensoll $ParentID )ParameterlisteMedienNameParentIDZu suchender MedienNameTRUE, wenn Datei gelöscht werden soll; FALSE, wenn die Datei in den ‘deleted’ Ordner verschoben werden sollRückgabewerteID des gefundenen Medienobjekts, sonst FALSEBeschreibungDer Befehl versucht die ID von Median mit dem Namen MediaName, dessen übergeordnetes Objekt die ID ParentIDbesitzt, zu ermitteln. Es wird die ID des ersten gefundenen Medien verwendet, dessen Name mit MediaNameübereinstimmt. Falls ein solches Medium gefunden wurde, wird dessen ID zurückgemeldet, andernfalls FALSE.Da hier im Gegensatz zu <strong>IP</strong>S_GetMediaID ein zusätzliches Kriterium (ParentID) bei der Suche verwendet wird, ist dieWahrscheinlichkeit die richtige ID zu finden erheblich größer. Trotzdem gilt:Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$MediaID = @<strong>IP</strong>S_GetMediaIDByName("MeinBild", $ParentID);if ($MediaID === false)echo "Bild nicht gefunden!";elseecho "Die Media-ID lautet: ". $MediaID;


<strong>IP</strong>S_GetMediaIDByFileinteger <strong>IP</strong>S_GetMediaIDByFile ( string $MedienPfad )ParameterlisteMedienPfadRelativer MedienPfad vom KernelDir gesehenRückgabewerteID des gefundenen Medienobjekts, sonst 0 und WarningBeschreibungDer Befehl versucht, die ID von Medien mit dem Pfad MedienPfad zu finden. Sollte der MediePfad in <strong>IP</strong>-<strong>Symcon</strong> nichtvorhanden sein, wird eine Warnung generiert. Die kann mit dem @ Operator abgefangen werden.Beispiel$MediaID = @<strong>IP</strong>S_GetMediaIDByFile("media\\help.png");if ($MediaID == 0)echo "Bild nicht gefunden!";elseecho "Die Media-ID lautet: ". $MediaID;


<strong>IP</strong>S_SendMediaEventboolean <strong>IP</strong>S_SendMediaEvent ( integer $MedienID )ParameterlisteMedienIDID des zu prüfenden MedienobjektsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl sendet eine Mitteilung, dass sich das Medienobjekt mit der ID MedienID verändert hat. Diese Nachricht wirdz.B. vom Dashboard verwendet, um ein Bild/Forumular zu aktualisieren. Für Mediendateien im ‘media’ Ordner ist dieserBefehl nicht notwendig, da <strong>IP</strong>-<strong>Symcon</strong> alle Veränderungen systemintern beobachtet und etwaige Veränderungenautomatisch versendet.Beispiel<strong>IP</strong>S_SendMediaEvent(12345);


<strong>IP</strong>S_GetMediaIDinteger <strong>IP</strong>S_GetMediaID ( string $MedienName )ParameterlisteMedienNameZu suchender MediennameRückgabewerteID des gefundenen Medienobjekts, sonst 0BeschreibungDer Befehl versucht, die ID des Medienobjekts mit dem Namen MedienName zu ermitteln. Es wird die ID des erstengefundenen Medienobjekts verwendet, dessen Name mit MedienName übereinstimmt. Falls ein solches Medienobjektgefunden wurde, wird dessen ID zurückgemeldet, andernfalls 0 (Null).Eine sicherere Methode, die ID zu bestimmen, bietet der Befehl <strong>IP</strong>S_GetScriptIDByName.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Beispiel$MediaID = <strong>IP</strong>S_GetMediaID("Regenmenge");if ($MediaID == 0)echo "Medienobjekt nicht gefunden!";elseecho "Die Medienobjekt-ID lautet: ". $MediaID;


<strong>IP</strong>S_CreateLinkBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1integer <strong>IP</strong>S_CreateLink ( )RückgabewerteID des neu erstellten LinksBeschreibungDer Befehl legt eine neuen Link an. Er benötigt keine Parameter. Nach Ausführung des Befehls erscheint imKategorienbaum von <strong>IP</strong>-<strong>Symcon</strong> ein neues Objekt mit der Bezeichnung z.B. ”Unnamed Object (ID: 48490)”. Mit Hilfedes Befehls <strong>IP</strong>S_SetName kann dem Objekt (hier der Link) ein aussagefähiger Name gegeben werden. Der Name istjedoch für die Identifikation irrelevant. Hierfür ist immer die ID zuständig. Weiterhin sollte der Link mit einem anderenObjekt verknüpft werden. Dies kann über die Funktion <strong>IP</strong>S_SetLinkTargetID gemacht werden.Die Funktion liefert eine ID, mit deren Hilfe der erzeugte Link eindeutig identifiziert werden kann.Beispiel//Anlegen einer neuen Kategorie mit dem Namen "Regenerfassung"$LinkID = <strong>IP</strong>S_CreateLink();//Link anlegen<strong>IP</strong>S_SetName($LinkID, "Regenerfassung"); //Link benennen<strong>IP</strong>S_SetLinkChildID($LinkID, 12345); //Link verknüpfen


<strong>IP</strong>S_DeleteLinkBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1boolean <strong>IP</strong>S_DeleteLink ( integer $LinkID )ParameterlisteLinkIDID des zu löschenden LinksRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl löscht die vorhandene Kategorie mit der ID LinkID.Alle dem Link untergeordneten Objekte werden in die Root-Kategorie verschoben.Beispiel//Löschen des Links 47788<strong>IP</strong>S_DeleteLink(47788);


<strong>IP</strong>S_SetLinkTargetIDBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.6boolean <strong>IP</strong>S_SetLinkTargetID ( integer $LinkID , integer $VerknüpftesObjekt )ParameterlisteLinkIDVerknüpftesObjektID des zu verändernden LinksID des zu verknüpfenden ObjektsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl verknüpft ein bestimmtest Objekt VerknüpftesObjekt mit dem Link LinkID zusammen, so dass der Linkauf dieses Objekt zeigt.Beispiel<strong>IP</strong>S_SetLinkTargetID($LinkID, 12345); //Auf Objekt 12345 verweisen


<strong>IP</strong>S_SetLinkChildIDBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1Diese Funktion sollte ab <strong>IP</strong>-<strong>Symcon</strong> 2.6 nicht mehr verwendet werden. Bitte <strong>IP</strong>S_SetLinkTargetID nutzen, da dieseFunktion mit einem späteren Release von <strong>IP</strong>-<strong>Symcon</strong> entfernt wird.boolean <strong>IP</strong>S_SetLinkChildID ( integer $LinkID , integer $VerknüpftesObjekt )ParameterlisteLinkIDVerknüpftesObjektID des zu verändernden LinksID des zu verknüpfenden ObjektsRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl verknüpft ein bestimmtest Objekt VerknüpftesObjekt mit dem Link LinkID zusammen, so dass der Linkauf dieses Objekt zeigt.Beispiel<strong>IP</strong>S_SetLinkChildID($LinkID, 12345); //Auf Objekt 12345 verweisen


<strong>IP</strong>S_LinkExistsBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1boolean <strong>IP</strong>S_LinkExists ( integer $LinkID )ParameterlisteLinkIDID der zu prüfenden LinksRückgabewerteFalls die LinkID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl prüft, ob der Link mit der ID LinkID existiert.Beispielif (<strong>IP</strong>S_LinkExists(45724))echo "Link existiert bereits!";


<strong>IP</strong>S_GetLinkBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1array <strong>IP</strong>S_GetLink ( integer $LinkID )ParameterlisteLinkIDDie zu zeigende LinkIDRückgabewerteFolgende Informationen stehen als key => value Paare zur verfügung:Index Typ BeschreibungLinkID integer ObjektIDLinkChildID integer ID des Objektes mit dem dieser Link verknüpft ist. Siehe <strong>IP</strong>S_SetLinkChildIDBeschreibungDer Befehl liefert ein Array mit Informationen über den Link mit der ID LinkID. Sollte der Link nicht vorhanden sein,wird eine Warnung generiert.Beispielprint_r(<strong>IP</strong>S_GetLink(19668));/* liefert z.B.:Array([LinkID] => 19668[LinkChildID] => 14444)*/


<strong>IP</strong>S_GetLinkListBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1boolean <strong>IP</strong>S_GetLinkList ( )RückgabewerteEin Array von Integer-Werten aller IDs der Links in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> eingerichteten Links . Die IDs werden in einem Array aufgelistet. Fallskein Link existiert, ist das Array leer.Beispiel$alleLinks = <strong>IP</strong>S_GetLinkList();print_r($alleLinks);/* liefert z.B.:Array([0] => 0[1] => 37659[2] => 18326usw. ...)*/


<strong>IP</strong>S_GetLinkIDByNameBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.1integer <strong>IP</strong>S_GetLinkIDByName ( string $LinkName , integer $ParentID )ParameterlisteLinkNameParentIDZu suchender LinkNameObjekt, in deren Unterobjekten gesucht werden sollRückgabewerteID des gefundenen Links, sonst FALSEBeschreibungDer Befehl versucht die ID des Links mit dem Namen LinkName, deren übergeordnetes Objekt die ID ParentIDbesitzt, zu ermitteln. Es wird die ID des ersten gefundenen Links verwendet, deren Name mit LinkName übereinstimmt.Falls ein solcher Link gefunden wurde, wird deren ID zurückgemeldet, andernfalls FALSE.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$LinkID = @<strong>IP</strong>S_GetLinkIDByName("Verlinkte Regenerfassung", $ParentID);if ($LinkID === false)echo "Link nicht gefunden!";elseecho "Die Link-ID lautet: ". $LinkID;


<strong>IP</strong>S_CreateEventinteger <strong>IP</strong>S_CreateEvent ( integer $EreignisTyp )ParameterlisteEreignisTypWertBeschreibung0 Legt ein “ausgelöstes” Ereignis an1 Legt ein “zyklisches” Ereignis anRückgabewerteID des neu erstellten EreignissesBeschreibungDer Befehl legt ein Ereignisobjekt vom Typ EreignisTyp an.Die Funktion liefert eine ID, mit deren Hilfe das erzeugte Ereignisobjekt eindeutig identifiziert werden kann. Daserzeugte Objekt ist nach dem Anlegen noch umkonfiguriert und muss mit den Funktionen <strong>IP</strong>S_SetEventActive,<strong>IP</strong>S_SetEventScript und den entsprechenden <strong>IP</strong>S_SetEventCyclic / <strong>IP</strong>S_SetEventTrigger konfiguriert werden.Beispiel$eid = <strong>IP</strong>S_CreateEvent(0);//Ausgelöstes Ereignis<strong>IP</strong>S_SetEventTrigger($eid, 1, 15754); //Bei Änderung von Variable mit ID 15754<strong>IP</strong>S_SetParent($eid, $_<strong>IP</strong>S['SELF']);//Ereignis zuordnen<strong>IP</strong>S_SetEventActive($eid, true);//Ereignis aktiviereneid = <strong>IP</strong>S_CreateEvent(1);<strong>IP</strong>S_SetEventCyclic($eid, 2, 1, 0, 3, 6);<strong>IP</strong>S_SetEventCyclicDateBounds($eid,mktime(0, 0, 0, 12, 1, date("Y")),mktime(0, 0, 0, 12, 31,date("Y")));//Zyklisches Ereignis//Jeden Tag alle 6 Stunden//1.12 - 31.12 jeden Jahres<strong>IP</strong>S_SetEventCyclicTimeBounds($eid,mktime(15, 0, 0),mktime(23, 30, 0)); //15:00 bis 23:30<strong>IP</strong>S_SetParent($eid, $_<strong>IP</strong>S['SELF']);<strong>IP</strong>S_SetEventActive($eid, true);//Eregnis zuordnen//Ereignis aktivieren


<strong>IP</strong>S_DeleteEventboolean <strong>IP</strong>S_DeleteEvent ( integer $EreignisID )ParameterlisteEreignisIDID des zu löschenden EreignissesRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDer Befehl löscht eine vorhandene Variable mit der ID EreignisID.Alle dem Medienobjekt untergeordneten Objekte werden in die Root-Kategorie verschoben.Beispiel<strong>IP</strong>S_DeleteEvent($EreignisID);


<strong>IP</strong>S_SetEventActiveboolean <strong>IP</strong>S_SetEventActive ( integer $EreignisID , boolean $Aktiv )ParameterlisteEreignisIDAktivID des zu verändernden EreignissesGibt an, ob das Ereignis aktiviert (TRUE) / deaktiviert (FALSE) werden soll.RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungNach dem Aktiveren/Deaktiveren kann über <strong>IP</strong>S_GetEvent der neue Status ausgelesen werden. Bei aktiven, zyklischenEreignissen ist es möglich, den nächsten Ausführungszeitpunkt zu bestimmen. Bei einem deaktivierten Ereignis ist derNextRun Wert gleich null.Beispiel<strong>IP</strong>S_SetEventActive($EreignisID, true); // Aktivert Ereignis


<strong>IP</strong>S_SetEventLimitboolean <strong>IP</strong>S_SetEventLimit ( integer $EreignisID , integer $Anzahl )ParameterlisteEreignisIDAnzahlID des zu verändernden EreignissesDie Anzahl der Ausführung, bevor das Ereignis deaktiviert wird. 0 = Keine LimitierungRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungDie Limitierung auf Anzahl bewirkt, dass das Ereignis nur Anzahl Male ausgeführt wird. Danach ist die Anzahl gleichnull und das Ereignis ist deaktiviert. Die Einstellung Anzahl = 0 hebt die Limitierung auf.Beispiel<strong>IP</strong>S_SetEventLimit($EreignisID, 0); //Keine limitierung


<strong>IP</strong>S_SetEventScriptboolean <strong>IP</strong>S_SetEventScript ( integer $EreignisID , string $Skriptinhalt )ParameterlisteEreignisIDID des zu verändernden EreignissesSkriptinhalt PHP Skript ohne PHP Tags ()RückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungJedes Ereignis, welches nicht einem Skript, sondern z.B. einer Instanz/Variable untergeordnet ist, kann auf demübergeordneten Objekt (als der Instanz/Variable) eine Operation ausführen, die in PHP programmiert werden kann.Über diesen Befehl kann diese Operation als PHP Code definiert werden, die bei Auftreten des Ereignisses ausgeführtwird. Der PHP wird direkt ohne die PHP Tags () angegeben. Die Auflistung der Systemvariablen zeigt, welchespeziellen Variablen verfügbar sind.Beispiel//Skriptinhalt dem Ereignis zuordnen<strong>IP</strong>S_SetEventScript($EreignisID, "echo Verknüpftes Objekt: ".$_<strong>IP</strong>S['TARGET']);


<strong>IP</strong>S_SetEventTriggerboolean <strong>IP</strong>S_SetEventTrigger ( integer $EreignisID , integer $Auslösertyp , integer $AuslöserVariablenID )ParameterlisteEreignisIDAuslösertypID des zu verändernden EreignissesWertBeschreibung0 Bei Variablenaktualisierung1 Bei Variablenänderung2 Bei Grenzüberschreitung. Grenzwert wird über <strong>IP</strong>S_SetEventTriggerValuefestgelegt3 Bei Grenzunterschreitung. Grenzwert wird über <strong>IP</strong>S_SetEventTriggerValuefestgelegt4 Bei bestimmtem Wert. Wert wird über <strong>IP</strong>S_SetEventTriggerValue festgelegtAuslöserVariablenID VariablenID, auf dessen Änderung/Aktualisierung reagiert werden sollRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungUm ein auslösendes Ereignis zu konfigurieren, müssen sie festlegen, auf welchen Auslösertyp das Ereignis reagieren sollund welche Variable das Ereignis beobachten soll.Beispiel<strong>IP</strong>S_SetEventTrigger($eid, 0, 12345); //OnUpdate für Variable 12345


<strong>IP</strong>S_SetEventTriggerValueboolean <strong>IP</strong>S_SetEventTriggerValue ( integer $EreignisID , variant $Grenzwert )ParameterlisteEreignisIDGrenzwertID des zu verändernden EreignissesAbhänger Wert/Typ je nach VariablenID vom AuslöserRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungGibt einen Wert an, der beim Vergleich genutzt werden soll.Der Auslösertyp des Ereignisses kann wie folgt eingestellt sein:Bei GrenzüberschreitungBei GrenzunterschreitungBei bestimmem WertDer Grenzwert muss als korrekter Typ angegeben werden.Andernfalls kann der Vergleich fehlschlagen oder unerwartet ausgelöst werden.Beispiel<strong>IP</strong>S_SetEventTriggerValue($EreignisID, true); //Nur auf TRUE Werte auslösen


<strong>IP</strong>S_SetEventTriggerSubsequentExecutionboolean <strong>IP</strong>S_SetEventTriggerSubsequentExecution ( string $EreignisID , boolean $NachfolgendeAusführungen )ParameterlisteEreignisIDNachfolgendeAusführungenID des zu verändernden EreignissesTRUE für Erlaubt, sonst FALSERückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungGibt an, ob das Ereignis erneut ausgeführt werden soll, wenn eine Grenzüberschreitung/-unterschreitung zum zweitenMal ausgelöst wird. Andernfalls wird das Ereignis erst wieder ausgeführt, wenn der Variablenwert innerhalb desGrenzwertbereichs gewesen ist und erneut überschritten wird.Beispiel<strong>IP</strong>S_SetEventTriggerSubsequentExecution($EreignisID, true); //Erlauben


<strong>IP</strong>S_SetEventCyclicboolean <strong>IP</strong>S_SetEventCyclic ( integer $EreignisID , integer $Datumstyp , integer $Datumsintervall , integer $Datumstage, integer $Datumstagesintervall , integer $Zeittyp , integer $Zeitintervall )ParameterlisteEreignisIDDatumstypDatumsintervallDatumstageID des zu verändernden EreignissesWertBeschreibung0 Kein Datumstyp. Tägliche Ausführung.1 Einmalig. <strong>IP</strong>S_SetEventCyclicDateBounds für Zieldatum2 Täglich3 Wöchentlich4 Monatlich5 JährlichDatumstypBeschreibung0 0 (Keine Auswertung)1 0 (Keine Auswertung)2 Alle X Tage3 Alle X Wochen4 Alle X Monate5 1 = Januar … 12 = DezemberDatumstyp Beschreibung0 0 (Keine Auswertung)1 0 (Keine Auswertung)2 0 (Keine Auswertung)3 siehe Tabelle: Tageswerte (gewünschte Tageswerte müssen addieren werden)4 siehe Tabelle: Tageswerte5 0 (Keine Auswertung)Tabelle: TageswerteTagWertMontag 1Dienstag 2Mittwoch 4Donnerstag 8Freitag 16Samstag 32Sonntag 64Datumstagesintervall


DatumstypBeschreibung0 0 (Keine Auswertung)1 0 (Keine Auswertung)2 0 (Keine Auswertung)3 0 (Keine Auswertung)4 Jeden X Datumstag im Monat5 Jeden X Tag im JahrZeittypWertBeschreibung0 Einmalig <strong>IP</strong>S_SetEventCyclicTimeBounds für Zielzeit1 Sekündlich2 Minütlich3 StündlichZeitintervallZeittypBeschreibung0 0 (Keine Auswertung)1 Alle X Sekunden2 Alle X Minuten3 Alle X StundenRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungUm ein zyklisches Ereignis zu konfigurieren, müssen Sie die festlegen, in welchen Intervallen es ausgeführt werden soll.Dazu gehört ein Datumsintervall, das das Intervall in einem bestimmten Tages-, Wochen-, Monats- oder Jahresrythmusfestlegt und ein Zeitintervall, das an dem jeweiligen Tag ein sekunden-, minuten- oder stundenbasierendes Intervallfestlegt.Wird das Datumsintervall als “Woche” gewählt, so besteht die Möglichkeit die Tage der Woche zu bestimmten an denendas Ereignis gestartet werden soll. Bei Monatlichem oder Jährlichem Datumsintervall kann der Tag im Monat/Jahr imParameter Datumswert angegeben werden. Bei allen anderen Typen kann der Parameter mit dem Platzhalter 0angegeben werden.Spitzfindigkeiten: - (Monatlich) Bei der Variante “Am X. Tag alle Y Monate” bedeutet X >= 31, dass der letzte Tagim Monat gewählt wird. - (Monatlich) Bei der Variante “Am X. Wochentag alle Y Monate” darf X nur die Werte 1-4enthalten. Auch wenn es in manchen Monaten z.B. den fünften Freitag gibt, so wird dieser Spezialfall nichtunterstützt. - (Jährlich) Bei der Variante “Am X. Monat” wird ein Timer nur ausgeführt, wenn X ein gültiger Tag indiesem Monat ist, andernfalls wird der Timer nicht ausgeführt. Der Spezialfall des 29. Februars wird nicht unterstützt.Beispiel<strong>IP</strong>S_SetEventCyclic($eid, 2, 1, 0, 0, 3, 6);//Jeden Tag alle 6 Stunden<strong>IP</strong>S_SetEventCyclic($eid, 0, 0, 0, 2, 2 ,2);//Alle 2 Minuten


<strong>IP</strong>S_SetEventCyclic($eid, 3, 2, 1+4, 0, 0, 0); //Alle 2 Wochen am Montag+Mittwoch<strong>IP</strong>S_SetEventCyclicTimeBounds($eid, mktime(15, 0, 0), 0); //immer um 15:00Uhr


<strong>IP</strong>S_SetEventCyclicDateBoundsboolean <strong>IP</strong>S_SetEventCyclicDateBounds ( integer $EreignisID , float $StartDatum , float $EndDatum )ParameterlisteEreignisIDStartDatumEndDatumID des zu verändernden EreignissesDatum als Unix TimestampDatum als Unix TimestampRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungWenn gewünscht, können das Startdatum und das Enddatum für ein Ereignis definiert werden.Das Datum muss als Unix Timestamp übergeben werden. (Wikipedia:Unixzeit)Wird in einem Parameter 0 angegeben, so gibt es kein Start- und/oder Enddatum.Beispiel//Kein Start/Enddatum dem Ereignis zuordnen<strong>IP</strong>S_SetEventCyclicDateBound($EreignisID, 0, 0);


<strong>IP</strong>S_SetEventCyclicTimeBoundsboolean <strong>IP</strong>S_SetEventCyclicTimeBounds ( integer $EreignisID , float $StartUhrzeit , float $EndUhrzeit )ParameterlisteEreignisIDStartUhrzeitEndUhrzeitID des zu verändernden EreignissesZeit als Unix TimestampZeit als Unix TimestampRückgabewerteKonnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE.BeschreibungWenn gewünscht, können die Startuhrzeit und die Enduhrzeit für ein Ereignis definiert werden. Desweiteren kanndadurch definiert werden, zu welchem Sekundenanteil das Skript gestartet werden soll (z.B. 00:00:30, wenn zu jederhalben Minute gestartet werden soll).Die Zeit muss als Unix Timestamp übergeben werden. (Wikipedia:Unixzeit)Wird in einem Parameter 0 angegeben, so gibt es keine Start- und/oder Endzeit.Beispiel//Keine Start/Endzeiten dem Ereignis zuordnen<strong>IP</strong>S_SetEventCyclicTimeBounds($EreignisID, 0, 0);//Ereignis um 7:30 starten<strong>IP</strong>S_SetEventCyclicTimeBounds($EreginisID, mktime(7, 30, 0), 0);


<strong>IP</strong>S_EventExistsboolean <strong>IP</strong>S_EventExists ( integer $EreignisID )ParameterlisteEreignisIDID des zu prüfenden EreignissesRückgabewerteFalls die EreignisID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl löscht eine vorhandene Variable mit der ID EreignisID.Alle dem Ereignis untergeordneten Objekte werden in die Root-Kategorie verschoben.Beispielif (<strong>IP</strong>S_EventExists(34881))echo "Ein Ereignis mit dieser ID existiert!";


<strong>IP</strong>S_GetEventarray <strong>IP</strong>S_GetEvent ( )RückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungCyclicDateType integer Datumtyp. Siehe: <strong>IP</strong>S_SetEventCyclicCyclicDateValue integer Datumintervall. Siehe: <strong>IP</strong>S_SetEventCyclicCyclicDateDay integer Datumstage. Siehe: <strong>IP</strong>S_SetEventCyclicCyclicDateDayValue integer Datumstagesintervall. Siehe <strong>IP</strong>S_SetEventCyclicCyclicDateFrom float Unix Timestamp des Starttages für das Ereignis, 0 = Immer. Siehe<strong>IP</strong>S_SetEventCyclicDateBoundsCyclicDateTo float Unix Timestamp des Endtages für das Ereignis, 0 = Nie. Siehe<strong>IP</strong>S_SetEventCyclicDateBoundsCyclicTimeType integer Zeittyp. Siehe: <strong>IP</strong>S_SetEventCyclicCyclicTimeValue integer Zeitintervall. Siehe: <strong>IP</strong>S_SetEventCyclicCyclicTimeFrom float Unix Timestamp der Startzeit für das Ereignis, 0 = Mitternacht. Siehe<strong>IP</strong>S_SetEventCyclicTimeBoundsCyclicTimeTo float Unix Timestamp des Endtages für das Ereignis, 0 = Nie. Siehe<strong>IP</strong>S_SetEventCyclicTimeBoundsEventID integer EreignisIDEventLimit integer Restliche Anzahl der Ausführungen. 0 = Kein LimitEventScript string PHP Code der auszuführenden OperationEventActive boolean TRUE, wenn das Ereignis aktiv istEventType integer Ereignis-Typ: (0: Auslöser, 1: Zyklisch)LastRun float Unix Timestamp der letzten Ausführung, 0 = NieNextRun float Unix Timestamp der nächsten Ausführung, 0 = NieTriggerSubsequentExecution boolean Erlaube erneute Ausführung bei Auslösung ohne WertänderungTriggerType integer Wert für den Auslöser-Typ: Siehe: <strong>IP</strong>S_SetEventTriggerTriggerUseDefaultValue boolean TRUE, wenn der Über/Unterschreitungswert der Variable verwendetwerden sollTriggerVariableID integer VariablenID, die als Auslöser genutzt werden sollBeschreibungDer Befehl liefert ein Array mit Informationen über Ereignis mit der ID EreignisID.Beispiel$EreignisID = 46413;$EreignisInfo = <strong>IP</strong>S_GetEvent($EreignisID);print_r($EreignisInfo);/* liefert z.B.:


Array([CyclicDateData] => 0[CyclicDateFrom] => 1228082400[CyclicDateTo] => 1230674400[CyclicDateValue] => 2[CyclicDateDay] => 0[CyclicDateDayValue] => 1[CyclicTimeFrom] => 1223816400[CyclicTimeTo] => 1223847000[CyclicTimeType] => 3[CyclicTimeValue] => 6[EventID] => 35365[EventLimit] => -1[EventScript] =>[EventActive] => 1[EventType] => 1[LastRun] => 0[NextRun] => 1228136400[TriggerSubsequentExecution] => 1[TriggerType] => 0[TriggerUseDefaultValue] => 1[TriggerVariableID] => 0)*/


<strong>IP</strong>S_GetEventListarray <strong>IP</strong>S_GetEventList ( )RückgabewerteEin Array von Integer-Werten aller IDs der Ereignisse in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> registrierten Ereignisse. Die IDs werden in einem Array aufgelistet. Fallskein Ereignis existiert, ist das Array leer.Beispiel$alleEreignisse = <strong>IP</strong>S_GetEventList();print_r($alleEreignisse);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. ...)*/


<strong>IP</strong>S_GetEventListByTypearray <strong>IP</strong>S_GetEventListByType ( integer $EreignisTyp )ParameterlisteEreignisTypWertBeschreibung0 Ausgelöstes Ereignis1 Zyklisches EreignisRückgabewerteEin Array von Integer-Werten aller IDs der Ereignisse vom Typ EreignisTyp in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller Ereignisse eines bestimmten EreignisTyps. Die IDs werden in einem Array aufgelistet.Falls kein Ereignis des angeforderten Typs existiert, ist das Array leer.Es werden nur Objekte des Ereignistyps EreignisTyp aufgelistet. Sollen alle Ereignisse aufgelistet werden, so kannhierfür der Befehl <strong>IP</strong>S_GetEventList verwendet werden.Beispiel$alleEreignisse = <strong>IP</strong>S_GetEventListByType(1); // nur zyklische Ereignisse auflistenprint_r($alleEreignisse);/* liefert z.B.:Array([0] => 37659[1] => 18326usw. …)*/


<strong>IP</strong>S_GetEventIDByNameinteger <strong>IP</strong>S_GetEventIDByName ( string $EreignisName , integer $ParentID )ParameterlisteEreignisNameParentIDZu suchender EreignisNameObjekt, in dessen Unterobjekten gesucht werden sollRückgabewerteID des gefundenen Ereignisses, sonst FALSEBeschreibungDer Befehl versucht die ID des Ereignisses mit dem Namen EreignisName, dessen übergeordnetes Objekt die IDParentID besitzt, zu ermitteln. Es wird die ID des ersten gefundenen Ereignisses verwendet, dessen Name mitEreignisName übereinstimmt. Falls ein solches Ereignis gefunden wurde, wird dessen ID zurückgemeldet, andernfallsFALSE.Vorsicht: Da Namen in <strong>IP</strong>-<strong>Symcon</strong> beliebig vergeben werden können, und damit nicht eindeutig sind, kann derBefehl eine falsche ID zurückmelden.Diese Funktion generiert eine Warung, sollte der Name nicht gefunden werden. Benutzen Sie den @ Operator, fallsSie diese Meldung unterdrücken wollen. Die genau Funktionsweise dieses Operators können Sie dem PHP Handbuchentnehmen.Beispiel$EreignisID = @<strong>IP</strong>S_GetEventIDByName("TimerABC", $ParentID);if ($EreignisID === false)echo "Ereignis nicht gefunden!";elseecho "Die Ereignis-ID lautet: ". $EreignisID;


<strong>IP</strong>S_LibraryExistsboolean <strong>IP</strong>S_LibraryExists ( string $BibliothekID )ParameterlisteBibliothekIDID der zu prüfenden BibliothekRückgabewerteFalls die BibliothekID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSE.BeschreibungDer Befehl prüft, ob die Bibliothek mit der ID BibliothekID existiert.Beispielif (<strong>IP</strong>S_LibraryExists("{7DC57F9A-C095-4CDE-A6F0-2CB35A29A8FE}"))echo "ELV Bibliothek ist vorhanden!";


<strong>IP</strong>S_GetLibraryarray <strong>IP</strong>S_GetLibrary ( string $BibliothekID )ParameterlisteBibliothekIDDie zu zeigende BibliothekIDRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungAuthor string Name des AutorsBuild integer Fortlaufende Zahl zur VersionierungDate integer Unix-TimestampLibraryID string BibliothekIDName string Name der BibliothekURL string Internetadresse des BibliothekautorsVersion integer HighByte: Major Version, LowByte: Minor VersionBeschreibungDer Befehl liefert ein Array mit Informationen über die Bibliothek mit der ID BibliothekID.Beispielprint_r(<strong>IP</strong>S_GetLibrary("{7DC57F9A-C095-4CDE-A6F0-2CB35A29A8FE}"));/* liefert z.B.:Array([Author] => <strong>IP</strong>-<strong>Symcon</strong> - CSS[Build] => 0[Date] => 2085798496[LibraryID] => {7DC57F9A-C095-4CDE-A6F0-2CB35A29A8FE}[Name] => ELV Device Library[URL] => www.ip-symcon.de[Version] => 512)*/


<strong>IP</strong>S_GetLibraryListarray <strong>IP</strong>S_GetLibraryList ( )RückgabewerteEin Array von String-Werten aller GUIDs der Bibliotheken in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> verfügbaren Bibliotheken. Die IDs werden in einem Array aufgelistet.Beispielprint_r(<strong>IP</strong>S_GetLibraryList());/* liefert z.B.:Array([0] => {FF95B199-B3BD-424C-9AEF-3F004BC672B6}[1] => {6EC74E99-C6FD-4E03-9195-E7BD90E6C07E}[2] => {2CE84600-0A3C-438C-AC22-86439A1E5DF0}usw. ...)*/


<strong>IP</strong>S_GetLibraryModulesarray <strong>IP</strong>S_GetLibraryModules ( string $BibliothekID )ParameterlisteBibliothekIDDie zu zeigende BibliothekIDRückgabewerteEin Array von String-Werten aller GUIDs der Module in einer Bibliothek in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs der verfügbaren Module in einer angegebenen Bibliothek. Die IDs werden in einem Arrayaufgelistet.Beispielprint_r(<strong>IP</strong>S_GetLibraryModules("{7DC57F9A-C095-4CDE-A6F0-2CB35A29A8FE}"));/* liefert z.B.:Array([0] => {57040540-4432-4220-8D2D-4676B57E223D}[1] => {48FCFDC1-11A5-4309-BB0B-A0DB8042A969}[2] => {56800073-A809-4513-9618-1C593EE1240C}[3] => {2FD7576A-D2AD-47EE-9779-A502F23CABB3}usw. ...)*/


<strong>IP</strong>S_ModuleExistsboolean <strong>IP</strong>S_ModuleExists ( string $ModulID )ParameterlisteModulIDID des zu prüfenden ModulsRückgabewerteFalls die ModulID im System existiert, wird TRUE zurückgemeldet, andernfalls FALSEBeschreibungDer Befehl prüft, ob das Modul mit der ID ModulID existiert.Beispielif (<strong>IP</strong>S_ModuleExists("{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}"))echo "FS20 Modul ist vorhanden!";


<strong>IP</strong>S_GetModulearray <strong>IP</strong>S_GetModule ( string $ModulID )ParameterlisteModulIDDie zu zeigende ModulIDRückgabewerteFolgende Informationen stehen als key => value Paare zur Verfügung:Index Typ BeschreibungAliases array Array von alternativen Namen (string) für das ModulChildRequirements array Array von GUIDs (string), die von untergeordnete Objekten erwartet werdenParentRequirements array Array von GUIDs (string), die von übergeordneten Objekten erwartet werdenImplemented array Array von GUIDs (string), die das Modul anbietetLibraryID string BibliothekID, in dem das Modul enthalten istModuleID string ModulIDModuleName string Name des ModulsModuleType integer Type des Moduls (0: Core, 1: I/O, 2: Splitter, 3: Device)Vendor string System-/HerstellkennzeichnungBeschreibungDer Befehl liefert ein Array mit Informationen über das Modul mit der ID ModulID.Beispielprint_r(<strong>IP</strong>S_GetModule("{7DC57F9A-C095-4CDE-A6F0-2CB35A29A8FE}"));/* liefert z.B.:Array([Aliases] => Array([0] => FS20 Empfänger[1] => FS20 Sender)[ChildRequirements] => Array()[Implemented] => Array([0] => {DF4F0170-1C5F-4250-840C-FB5B67262530})[LibraryID] => {7DC57F9A-C095-4CDE-A6F0-2CB35A29A8FE}[ModuleID] => {48FCFDC1-11A5-4309-BB0B-A0DB8042A969}[ModuleName] => FS20[ModuleType] => 3


[ParentRequirements] => Array([0] => {122F60FB-BE1B-4CAB-A427-2613E4C82CBA}))*/[Vendor] => ELV


<strong>IP</strong>S_GetModuleListarray <strong>IP</strong>S_GetModuleList ( )RückgabewerteEin Array von String-Werten aller GUIDs der Module in <strong>IP</strong>-<strong>Symcon</strong>BeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> verfügbaren Module. Die IDs werden in einem Array aufgelistet.Beispielprint_r(<strong>IP</strong>S_GetModuleList());/* liefert z.B.:Array([0] => {2D8B0172-166C-45B0-B979-61A787809E22}[1] => {CCC52C33-D77A-4AE9-A6CF-462F152532A0}[2] => {11842D31-3CA4-4F1B-BBA9-E4A0FE1873AF}[3] => {4CB91589-CE01-4700-906F-26320EFCF6C4}usw. ...)*///Alle Modulnamen mit GUID ausgebenforeach(<strong>IP</strong>S_GetModuleList() as $guid){$module = <strong>IP</strong>S_GetModule($guid);$pair[$module['ModuleName']] = $guid;}ksort($pair);foreach($pair as $key=>$guid){echo $key." = ".$guid."\n";}/*ALL3690 = {BBD04875-8CC5-412A-B848-B2AB6F08C425}ALL4000 = {2D8B0172-166C-45B0-B979-61A787809E22}AllUniversal = {D805EC4C-7D17-4E84-98D3-A441AA71ACA3}Archive Control = {43192F0B-135B-4CE7-A0A7-1475603F3060}Client Socket = {3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}Codatex RFReader1 = {4C4EAE41-96D8-45AA-A506-67609B06E400}Cutter = {AC6C6E74-C797-40B3-BA82-F135D941D1A2}DMX4ALL = {B1E43BF6-770A-4FD7-B4FE-6D265F93746B}DMXOUT = {E19C2E41-7347-4A3B-B7D9-A9A88E0D133E}Dummy Module = {485D0419-BE97-4548-AA9C-C083EB82E61E}EIB Gateway = {1C902193-B044-43B8-9433-419F09C641B8}EIB Group = {D62B95D3-0C5E-406E-B1D9-8D102E50F64B}EM24-DIN = {2AA27F83-E4DA-48D5-86CF-613C09F1B4B5}EZControl T-10 = {9B177C28-BD4D-478C-922E-7743A6E6BBDB}EnOcean EltakoFSS12 = {7124C1BC-B260-4C5E-BF00-B38D3C7B5CB7}EnOcean Gateway = {A52FEFE9-7858-4B8E-A96E-26E15CB944F7}EnOcean Hoppe = {1C8D7E80-3ED1-4117-BB53-9C5F61B1BEF3}EnOcean Opus = {9B1F32CD-CD74-409A-9820-E5FFF064449A}


EnOcean PTM200 = {40C99CC9-EC04-49C8-BB9B-73E21B6FA265}EnOcean PTM200RX = {63484585-F8AD-4780-BAFD-3C0353641046}EnOcean RCM100 = {8492CEAF-ED62-4634-8A2F-B09A7CEDDE5B}EnOcean STM100 = {FA1479DE-C0C1-433D-98BC-EA7C298D1AA5}EnOcean STM250 = {B01DE819-EA69-4FC1-91AB-4D9FF8D55370}EnOcean Thermokon = {B4249BC6-5BA8-45E3-B506-86680935D4EE}Event Control = {ED573B53-8991-4866-B28C-CBE44C59A2DA}FHT = {A89F8DFA-A439-4BF1-B7CB-43D047208DDD}FHZ1X00PC = {57040540-4432-4220-8D2D-4676B57E223D}FS10 = {6D508C91-F197-44A9-A1AB-A27F97A18A5F}FS10 Receiver = {753E7267-7558-49D3-ACFB-86755C28318D}FS20 = {48FCFDC1-11A5-4309-BB0B-A0DB8042A969}FS20EX = {56800073-A809-4513-9618-1C593EE1240C}FTDI = {C1D478E9-2A3E-4344-BCC4-37C892F58751}HID = {E6D7692A-7F4C-441D-827B-64062CFE1C02}HMS = {2FD7576A-D2AD-47EE-9779-A502F23CABB3}Heating Control = {3F52FA69-77F5-4DE6-8B2A-347452AC5F8F}HomeMatic Configurator = {5214C3C6-91BC-4FE1-A2D9-A3920261DA74}HomeMatic Device = {EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}HomeMatic Socket = {A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}IMAP = {CABFCCA1-FBFF-4AB7-B11B-9879E67E152F}<strong>IP</strong>SDog = {B5F1C151-16DA-4EEA-962A-92D620FB47E6}IRTrans Device = {899DBC68-0147-4528-B95D-D43C568D4E56}IRTrans Gateway = {0F0F74EF-2304-4C23-840F-EC1C5B9A9A82}ISDN Module = {D738E8CC-F524-454A-BB69-93E5BE416E87}Image Grabber = {5A5D5DBD-53AB-4826-8B09-71E9E4E981E5}KNX/EIB Configurator = {33765ABB-CFA5-40AA-89C0-A7CEA89CFE7A}KS300 = {9D21F700-6F67-4FBB-ACC2-AA42420A0486}LCN Configurator = {0F64973F-4669-4272-BDB3-6338D0350269}LCN Data = {A26E7E5A-A7C5-4063-8BE0-ED8BB26F8411}LCN Module = {0E31FED6-E465-4621-95D4-AAF2683C41EC}LCN Splitter = {9BDFC391-DEFF-4B71-A76B-604DBA80F207}LCN Unit = {2D871359-14D8-493F-9B01-26432E3A710F}LCN Value = {0102BDC9-3B85-4A11-968D-7D314DA07C06}LevelJet = {D64B904C-5312-443C-A2F3-03201ED9811C}M-Bus Device = {B53BE2E5-892D-4537-94AC-EAC68A469188}M-Bus Gateway = {301AB802-23CD-4DE2-91D1-6E3BC9BF03FC}MF420IRCTF = {1599A33E-1A39-4DB3-904C-C88DAADB33EF}Media Player = {2999EBBB-5D36-407E-A52B-E9142A45F19C}ModBus Address = {CB197E50-273D-4535-8C91-BB35273E3CA5}ModBus RTU/TCP = {A5F663AB-C400-4FE5-B207-4D67CC030564}OneWire = {9317CC5B-4E1D-4440-AF3A-5CC7FB42CCAA}POP3 = {69CA7DBF-5FCE-4FDF-9F36-C05E0136ECFD}ProJet Counter = {134A1CFF-3CAA-4D2E-8517-F9BFDE7544C9}ProJet Display = {9542B617-C603-4E8A-BFDE-DD69663F0226}ProJet Display Input = {FBF6F86C-4901-4957-8D08-2B2CBC1DF71A}ProJet Display Output = {C8CF38E9-BEAA-4149-A9ED-C8AAE04E8A6D}ProJet Gateway = {995946C3-7995-48A5-86E1-6FB16C3A0F8A}ProJet Input = {5509B26C-F2F7-428F-973B-FD5D07C80111}ProJet Stripe = {7AF52E55-4994-44AE-9DB8-752895F1EB76}ProJet Stripe Input = {26B22717-924E-4D58-B091-C98E49812238}ProJet Tracker = {50460BD9-FA93-4DE0-976A-55208C90DF15}RRDTool = {D8F1786A-EA45-4B86-B2F6-2986F77C193A}Register Variable = {F3855B3C-7CD6-47CA-97AB-E66D346C037F}SI USBXpress = {BFC698E9-1F43-45CD-BD79-47EA79CE21AD}SMS = {96102E00-FD8C-4DD3-A3C2-376A44895AB1}SMTP = {375EAF21-35EF-4BC4-83B3-C780FD8BD88A}Serial Port = {6DC3D946-0D31-450F-A8C6-C42DB8D7D4F1}Server Socket = {8062CF2B-600E-41D6-AD4B-1BA66C32D6ED}


Shutter Control = {542CC907-CA63-4E7A-A8C7-92F74639FA4C}Siemens Address = {932076B1-B18E-4AB6-AB6D-275ED30B62DB}Siemens S7 = {1B0A36F7-343F-42F3-8181-0748819FB324}TMEX = {CED1D815-2477-4B05-8F65-0E4475913063}Text Parser = {4B00C7F7-1A6D-4795-A2D2-08151854D259}Text To Speech = {684CC410-6777-46DD-A33F-C18AC615BB94}ThermoJet = {C3380B6E-2351-4A19-9668-A17960F97E51}UDP Socket = {82347F20-F541-41E1-AC5B-A636FD3AE2D8}UVR1611 = {0A8F9D69-E78B-4EAB-8E26-C8A4ACF7FA25}Utils Control = {B69010EA-96D5-46DF-B885-24821B8C8DBD}Velleman USB = {8CE70CD0-6674-4907-B3CE-F6E5235C9938}Virtual I/O = {6179ED6A-FC31-413C-BB8E-1204150CF376}WMRS200 = {DD2A4676-82C6-4154-9AAD-DE30668D53B0}WMRS200 Receiver = {E4FDC411-95D5-453C-B731-0CEB0483E663}WWW Reader = {4CB91589-CE01-4700-906F-26320EFCF6C4}WebFront Configurator = {3565B1F2-8F7B-4311-A4B6-1BF1D868F39E}WebServer = {D83E9CCF-9869-420F-8306-2B043E9BA180}WinLIRC = {19E51FC2-064B-4A51-8995-11FEFF7F129A}WuT Counter = {5F1C5261-07A2-4A7E-9AC4-88AF9ED29420}WuT Gateway = {01CA6888-C833-484E-A3F3-806535421CB7}WuT Input = {C3D0F82C-CD07-4AA8-AE5C-7AD983FE91F3}WuT Output = {E85C40B3-C1E9-4A60-85C7-6CDDA3D8D7BF}WuT ThermoHygro = {2EF634A4-D96D-4018-BD90-94E487A89D49}XBee Device = {E4027862-E456-4634-A48C-7A8E0C720756}XBee Gateway = {7FA47C08-E31B-44A6-9E50-20C4DDD3E081}XBee Splitter = {9D5DCE79-1A97-4531-9D10-68839F4BEAAC}Z-Wave Configurator = {2D7CA355-2C51-4430-8F67-4E397EAAEA19}Z-Wave Gateway = {4EF72D56-BF9F-4347-8F0A-2035D241116F}Z-Wave Module = {101352E1-88C7-4F16-998B-E20D50779AF6}xComfort Binary Input = {3040A77D-3E9C-42D4-A1B6-329EFE8086DB}xComfort Configurator = {5DD921D4-4712-443F-B89F-03434A4DBF94}xComfort Dimmer = {8050FEEC-C875-4BDD-9143-D15134B89D35}xComfort Energy = {814067F0-EACB-43C3-99BD-5CB9B2F8FB9E}xComfort Gateway = {D2DCE381-19A7-4D14-B819-49C0539BC350}xComfort Humidity = {3EBA1AB7-72CA-48D2-8F89-813E085D41BB}xComfort Impulse = {A374DCF0-CEDE-4EB7-B6A8-E92787E19B25}xComfort Remote = {DCBD8143-83AB-4068-8FC0-0C92A93AA8A8}xComfort Room Control = {1A1C4C67-C99D-4D3E-8A34-23581CE8CCAA}xComfort Shutter = {1B7B5B7D-CAA9-4AB5-B9D8-EC805EC955AD}xComfort Switch = {27DD9788-802E-45B7-BA54-FB97141398F7}xComfort Temperature = {591B4A05-E5BF-4EEA-BC34-36E6F1CC9D56}xComfort Value RX = {DA2FCC12-2DE1-404A-8A5E-1C6AF05F96A2}xComfort Value TX = {ED6A1E00-81C7-416F-9F97-1F2CC8F45B15}*/


<strong>IP</strong>S_IsModuleCompatibleboolean <strong>IP</strong>S_IsModuleCompatible ( string $ModulID , string $ParentModuleID )ParameterlisteModulIDParentModuleIDErste ModulIDZweite ModulIDRückgabewerteTRUE, wenn die Module kompatibel sind, sonst FALSEBeschreibungDer Befehl ermittelt, ob zwei Module zueinander kompatibel sind.Beispielif (<strong>IP</strong>S_IsModuleCompatible("{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}","{57040540-4432-4220-8D2D-4676B57E223D}"))echo "FS20 Modul ist zum FHZ Modul kompatibel!";


<strong>IP</strong>S_GetCompatibleModulesboolean <strong>IP</strong>S_GetCompatibleModules ( string $ModulID )ParameterlisteModulIDID des zu prüfenden ModulsRückgabewerteArray von String-Werten aller kompatiblen ModulIDs zu ModulIDBeschreibungDer Befehl ermittelt die IDs aller in <strong>IP</strong>-<strong>Symcon</strong> verfügbaren Module, die zur ModulID kompatibel sind. Die IDs werdenin einem Array aufgelistet.Beispielprint_r(<strong>IP</strong>S_GetCompatibleModules("{57040540-4432-4220-8D2D-4676B57E223D}"));/* liefert z.B.:Array([0] => {4CB91589-CE01-4700-906F-26320EFCF6C4}[1] => {6DC3D946-0D31-450F-A8C6-C42DB8D7D4F1}[2] => {3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}[3] => {8062CF2B-600E-41D6-AD4B-1BA66C32D6ED}usw. ...)*/


EntwicklerbereichErweiterte Funktionen... damit ihnen auch nach dem Einstieg alle Möglichkeiten offen stehen!FunktionSystembefehleModulbefehlePHPClient/ServerModellSOAPSchnittstelleWebServerWebFrontBeschreibungNutzen Sie alle Befehle zum Konfigurieren von <strong>IP</strong>-<strong>Symcon</strong>, die normalerweise nur für native Modulentwicklerverfügbar waren. Über PHP können Sie auf Ihr System vollständig zugreifen – In der Befehlsreferenz bekommenSie einen Überblick, was alles möglich ist.Jedes Modul, jede Stellschraube der Module, die Sie über die Verwaltungskonsole ändern können, können Sie auchvon Ihren eigenen Skripten auslesen und verändern. Dadurch haben Sie die komplette Kontrolle über Ihreangeschlossenen Hardwaremodule. Die Modulreferenz bietet Ihnen eine komplette Auflistung der Aktionsbefehle.<strong>IP</strong>-<strong>Symcon</strong> bietet Ihnen das volle Potential der PHP Skriptsprache. Sie können nicht nur auf alle PHP Befehlezugreifen, sondern können über Ihre eigene php.ini Anpassungen vornehmen und Extensions laden lassen, überdie Sie z.B. erweiterte Grafikfunktionen (GD2) oder MySQL, MSSQL oder andere Datenbanken ansprechenkönnen. Der in <strong>IP</strong>-<strong>Symcon</strong> integrierte WebServer macht eine seperate LAMP Installation überflüssig.Der <strong>IP</strong>-<strong>Symcon</strong> Dienst fügt sich nahtlos in Ihr Serverbetriebssystem (z.B. Windows 2003) ein. Es muss keineInteraktive Session gestartet werden – Das bedeutet kein Ärger und keine Problematik bei unerwarteten oder auchgeplanten Neustarts des Systems. Nach dem Start ist Ihr System wieder wie gewohnt verfügbar. MitVerwaltungskonsole haben Sie immer einen komfortablen Zugriff auf Ihr System. Erweitern Sie Ihr Systembequem von der Workstation aus. Vorbei sind die Zeiten, in denen Sie immer direkt am Server sitzen musstenoder sich immer per RDP auf den Server verbinden mussten. Veränderungen in der Verwaltungskonsole werdenServerseitig sofort übernommen und können dadurch direkt ausprobiert werden.Ihnen reicht der Zugriff über PHP nicht aus? Sie wollen auf <strong>IP</strong>-<strong>Symcon</strong> von Ihrere eigenen nativen Applikationzugreifen ohne den Umweg über PHP zu gehen? Kein Problem dank der SOAP Schnittstelle über die Siedieselben Möglichkeiten haben wie in PHP. Alle Funktionen und Befehle können Sie aus IhrerLieblingsprogrammiersprache aufrufen. Dank der der selbstbeschreibenden Schnittstelle (über WSDL) sindFunktionen aus <strong>IP</strong>-<strong>Symcon</strong> binnen Minuten in Ihrer Software verfügbar. Entsprechende Informationen finden Siein unserem Entwicklerbereich der Dokumentation.Der integrierte WebServer kann auf mehreren Ports/virtuellen Pfaden betrieben werden. Eine Möglichkeit derSSL Verschlüsslung mit eigenen Zertifikaten und ein Webalizer kompatibles Logfile kann pro Instanz konfiguriertwerden.Das mit <strong>IP</strong>-<strong>Symcon</strong> mitgelieferte Web Interface mit dem Namen “WebFront” bietet eine schnelleVisualisierungsmöglichkeit. Sobald Ihre Geräte in <strong>IP</strong>-<strong>Symcon</strong> eingerichtet sind, können Sie von überall perLAN/WLAN/Web auf Ihre Geräte zugreifen. Ein Skin im iPhone/iPod Design ist automatisch mit dabei.Einfach das WebFront aufrufen und schalten. Dokumentationen zu den Erweiterungsmöglichkeiten desWebFronts finden Sie in unserem Entwicklerbereich. Für den optimalen Betrieb wird ein “Web 2.0!-fähigerBrowser vorausgesetzt wie z.B. Internet Explorer 7+, Firefox 3+, Opera 8+, Safari 4+. Für alle anderen Browseroder mobilen Endgeräte, die die neuartigen Funktionen nicht unterstützen gibt es das “WebFront Retro”, welchesähnliche Funktionen bietet, jedoch auf die leistungsschwächeren Geräte angepasst ist. Damit wird auch eineFuntion im Internet Explorer 4+, Firefox 1+, Netscape 3+ ermöglicht.SDK/ToolsMit dem <strong>IP</strong>-<strong>Symcon</strong> SDK ist es Möglich native Module für <strong>IP</strong>-<strong>Symcon</strong> zu erstellen. Installationsanleitung und Beispielefür Delphi werden angeboten.SOAP SchnittstelleDie SOAP Schnittstelle/WSDL Beschreibungen können über folgende Adresse erreicht werden:http://localhost:3773/Kompatibilität wurde bereits mit Delphi, Java, C#, VB.Net geprüft.Alle Befehle der SOAP Schnittstelle verhalten sich äquivalent zu denen in PHP. Dadurch kann die normaleBefehlsreferenz/Modulreferenz als Dokumentationsgrundlage verwendet werden.Für Modulbefehle muss der TIDHeader mitgesendet, indem die anzusprechende InstanzID angegeben wird.Bekannte Probleme:


Java kann I<strong>IP</strong>SFilePool nicht importieren.VB.Net kann bei empfangenen Nachrichten vom MessageReader das Variant Array nicht auswerten.UDP DiscoveryUm alle <strong>IP</strong>-<strong>Symcon</strong> Server im lokalen Netz finden zu können, müssen sie ein UDP Paket an Port 3775 mit folgendemInhalt broadcasten:<strong>IP</strong>SSOAP:FND:Alle vorhandenen <strong>IP</strong>-<strong>Symcon</strong> Server werden mit folgendem Paket antworten, wobei PORT der vom Server verwendePort zur SOAP Schnittstelle ist.<strong>IP</strong>SSOAP:SRV:PORT:


SDK/ToolsAktuelle Kernel-Version: 2.60VorraussetzungenDelphi 2007 + neusten Indy’s für SOAP ClientHinweiseDas Empfangen von Variants über SOAP ist in Delphi fehlerbehaftet. Wer die Professional Version von Delphi besitzt,kann im “source\win32\soap” Ordner die Quelldateien wie in den QC Reports beschrieben verändern. Damit dieÄnderungen kompiliert werden, muss der Pfad “source\win32\soap” in den Suchpfad hinzufügt werden. Nach demKompilieren sollten in den Dateien (z.B. OPToSOAPDomConv) die blauen Kreise (möglichen Breakpoints) im Editorerscheinen.Diese Maßnahme wird nur benötigt, wenn der MessageReader verwendet werden soll. Soll nur über die SOAPSchnittstelle auf <strong>IP</strong>-<strong>Symcon</strong> zugegriffen werden, sind diese Änderungen nur in den seltensten Fällen notwendig.Adressen zu den relevanten QC Reports:QualityCentral: ConvertSoapToVariant does not convert BooleanQualityCentral: Variant is converted with wrong Decimal SeperatorDie neusten Indy Komponenten gibt es hier: <strong>Download</strong>Alternativ kann man diese auch direkt aus dem Indy Project SVN auschecken. (branches\Tiburon)Für das Entwickeln normaler <strong>IP</strong>-<strong>Symcon</strong> Module, muss nichts gepatcht werden.Wesentliche Änderungen von Version 1.0 nach Version 2.0Das registrierte Interface (ModuleRegistry.RegisterModule(*)) wird automatisch nach PHP weitergereicht. Die HandlePHP Funktion entfällt komplett.Zurückgegebene Objekte müssen vom Typ T<strong>IP</strong>SRemotable sein (U<strong>IP</strong>SModuleTypes).Zurückgegebene Objekte werden automatisch in Array’s in PHP umgewandeltVersenden von Daten zwischen Modulen geschieht nun typsicher. Dazu muss jedes Modul bestimmte Interfacesanbieten, auf die dann die anderen Module zugreifen können (siehe das Beispiel Modul, U<strong>IP</strong>SDataTypes).Status Variablen werden direkt über die Hauptklasse T<strong>IP</strong>SModuleObject (U<strong>IP</strong>STypes) verwaltet.Wesentliche Änderungen von Version 2.0 nach Version 2.1Konstantaten sind jetzt in 100er Schritten definiert.Kategoriefunktionen vom ObjectManager in den CategoryManager verschobenLinkManager für die symbolischen LinksVariablenprofile werden über Strings verknüpft und müssen vorher im VariableManager registriert werden.Wesentliche Änderungen von Version 2.1 nach Version 2.2PHP Engine kann nun partielle Daten (flush) direkt weiterleitenWesentliche Änderungen von Version 2.2 nach Version 2.3PHP Engine kann nun mit $_POST und $_FILES umgehenGetFunctionList gibt leserliche Namen für Enumerations zurückWesentliche Änderungen von Version 2.3 nach Version 2.4Keine. Das SDK ist vollständig kompatibel zur 2.3Wesentliche Änderungen von Version 2.4 nach Version 2.5Die Handling der StatusVariablen wurde umgebaut, so dass es nicht mehr so kompliziert ist. Eine StatusVariable kannjetzt jederzeit über RegisterVariable bzw MaintainVariable erstellt/gelöscht werden. Ein ApplyChanges sollte somit nichtmehr im Code ausgeführt werden, wenn zur Laufzeit Variablen erstellt werden mussten.Die StatusVariable sind ab der 2.5 lose gekoppelt. Sie werden nur über den ObjectIdent gesucht und dann entsprechenderstellt, modifiziert oder gelöscht.


Best Practice:Statische Variable im Constructor per RegisterVariable konfigurierenDynamische Variablen im ApplyChanges per MaintainVariable konfigurierenAnpassungen:RegisterVariable/MaintainVariable war im LoadSettings teilweise notwendig, damit <strong>IP</strong>-<strong>Symcon</strong> die Variable zurLaufzeit “wiedererkennt”. Durch die lose Kopplung ist dies jetzt komplett überflüssig und sehr einfach geworden.Die Parameterreihenfolge hat sich bei MaintainVariable geändertDer ActionHandler wird jetzt direkt bei RegisterVariable/MaintainVariable mit übergeben.Beim ActionHandler hat sich der erste Parameter geändert.Die Funktion GeDefaultProfiles wurde entfernt. Bitte direkt die equivalenten Strings eintragen.Wesentliche Änderungen von Version 2.5 nach Version 2.6Die jeweiligen Set/Get Methoden zu Konfiguration der anderen Module werden im Zuge der Entwicklung zur 3.0konsequent auf die neuen generischen <strong>IP</strong>S_SetProperty/<strong>IP</strong>S_GetProperty Funktionen umgestellt. Die emuliertenKonfigurationsfunktionen werden in einer der 3.x/4.0 Versionen wegfallen.Bestandteile des “SDK”Das WinLIRC Modul mit Quellcode.Ein simpler SOAP Client mit Ausleseroutine für Events (Bitte Hinweise oben beachten!)Automatischer Proxyklassen Generator für alle SubModule von <strong>IP</strong>-<strong>Symcon</strong>.Der Server muss lokal gestartet sein, damit der Generator funktioniert.Changelog2.04Geänderte Funktionen:I<strong>IP</strong>SEventMananger.SetEventCyclicI<strong>IP</strong>SScriptEngine.ExecuteText(Ex) – Zur Zeit noch dummys.2.10Geänderte Funktionen:I<strong>IP</strong>SEventMananger.SetEventScript (Nimmt nun den auszuführenden Text statt der ID des Skriptes)I<strong>IP</strong>SEventMananger.GetEvent (Index: TriggerVariable -> TriggerVariableID)I<strong>IP</strong>SModule.GetStatusVariableIDs -> <strong>IP</strong>S_GetStatusVariableIdentsI<strong>IP</strong>SInstanceManager.GetInstancesByModuleType -> GetInstanceListByModuleTypeI<strong>IP</strong>SInstanceManager.GetInstancesByModuleID -> GetInstanceListByModuleIDNeue Funktionen:I<strong>IP</strong>SInstanceManager.GetInstancesByModuleTypeI<strong>IP</strong>SVariableManager.SetVariableCustomProfileI<strong>IP</strong>SVariableManager.SetVariableCustomActionI<strong>IP</strong>SVariableManager.CreateVariableProfileI<strong>IP</strong>SVariableManager.DeleteVariableProfileI<strong>IP</strong>SVariableManager.SetVariableProfileTextI<strong>IP</strong>SVariableManager.SetVariableProfileValuesI<strong>IP</strong>SVariableManager.SetVariableProfileDigitsI<strong>IP</strong>SVariableManager.SetVariableProfileAssociationI<strong>IP</strong>SVariableManager.SetVariableProfileAssociationsI<strong>IP</strong>SVariableManager.SetVariableProfileIconI<strong>IP</strong>SVariableManager.VariableProfileExistsI<strong>IP</strong>SVariableManager.CheckVariableProfileI<strong>IP</strong>SVariableManager.GetVariableProfileI<strong>IP</strong>SVariableManager.GetVariableProfileListI<strong>IP</strong>SVariableManager.GetVariableProfileListByTypeI<strong>IP</strong>SEventManager.GetEventListByTypeI<strong>IP</strong>SLinkManager.CreateLinkI<strong>IP</strong>SLinkManager.DeleteLink


I<strong>IP</strong>SLinkManager.SetLinkChildIDI<strong>IP</strong>SLinkManager.LinkExistsI<strong>IP</strong>SLinkManager.CheckLinkI<strong>IP</strong>SLinkManager.GetLinkI<strong>IP</strong>SLinkManager.GetLinkListI<strong>IP</strong>SLinkManager.I<strong>IP</strong>SLinkManager.GetLinkListI<strong>IP</strong>SSOAPServer.RemoveSessionFilterI<strong>IP</strong>SSOAPServer.GetSessionFilterEntfernte Funktionen:I<strong>IP</strong>SObjectManager.HasFlagI<strong>IP</strong>SObjectManager.SetFlag2.20Neue Funktionen:I<strong>IP</strong>SObjectManager.GetParent2.30Keine Änderung der vorhandenen Funktionen2.40Keine Änderung der vorhandenen Funktionen2.50Geänderte Funktionen:T<strong>IP</strong>SModuleObject.MaintainVariable (geänderte Parameterreihenfolge!)T<strong>IP</strong>SModuleObject.RegisterVariable (geänderte Parameterreihenfolge!)Neue Funktionen:I<strong>IP</strong>SObjectManager.SetIdentI<strong>IP</strong>SObjectManager.GetObjectIDByIdentEntfernte Funktionen:T<strong>IP</strong>SModuleObject.RegisterActionHandlerI<strong>IP</strong>SModule.StatusVariableExistsI<strong>IP</strong>SModule.GetStatusVariableI<strong>IP</strong>SModule.GetStatusVariablesI<strong>IP</strong>SModule.GetStatusVariableIdentsI<strong>IP</strong>SModule.SetStatusVariableUseActionI<strong>IP</strong>SModule.SetStatusVariableID2.60Geänderte Funktionen:I<strong>IP</strong>SScriptEngine.GetFunctionListNeue Funktionen:I<strong>IP</strong>SLinkManager.SetLinkTargetIDI<strong>IP</strong>SModule.GetPropertyI<strong>IP</strong>SModule.SetPropertyI<strong>IP</strong>SModule.GetConfigurationI<strong>IP</strong>SModule.SetConfigurationI<strong>IP</strong>SModule.GetConfigurationFormI<strong>IP</strong>SModule.ReceiveDataI<strong>IP</strong>SModule.ForwardDataI<strong>IP</strong>SDataHandler.SendDataToParentI<strong>IP</strong>SDataHandler.SendDataToChildrenI<strong>IP</strong>SScriptEngine.FunctionExistsI<strong>IP</strong>SScriptEngine.GetFunctionI<strong>IP</strong>SScriptEngine.GetFunctionsI<strong>IP</strong>SSettings.GetSnapshot


I<strong>IP</strong>SSettings.GetSnapshotChangesI<strong>IP</strong>SSettingsEx.CreateOptionI<strong>IP</strong>SSettingsEx.GetOptionI<strong>IP</strong>SSettingsEx.SetOptionT<strong>IP</strong>SModuleObject.RegisterPropertyT<strong>IP</strong>SModuleObject.RegisterTimerT<strong>IP</strong>SModuleObject.SetTimerIntervalEntfernte Funktionen:I<strong>IP</strong>SLinkManager.SetLinkChildIDI<strong>IP</strong>SObjectManager.RegisterObjectExSonstige Änderungen:TimeStamp innerhalb von T<strong>IP</strong>SMessage ist nun ein Zahl die pro Message inkrementiert wird.MessageIDs wurden geändert; ggf. in der U<strong>IP</strong>STypes.pas überprüfenT<strong>IP</strong>SInstance. ParentID nach ConnectionID umbenanntAlle Profilfunktionen von I<strong>IP</strong>SVariableManager nach I<strong>IP</strong>SProfileManager verschoben.Einige Funktionen von I<strong>IP</strong>SDataHandler nach I<strong>IP</strong>SDataHandlerEx verschoben (GetInstanceChildrenIDs,HasInstanceChildren, GetInstanceParentIDs, GetInstanceParentID, HasInstanceParent).Aus Performancegründen werden die unnötigen <strong>IP</strong>S_TIMERMESSAGE Nachrichten nicht mehr verschickt.T<strong>IP</strong>SLink. LinkChildID nach TargetID umbenannt. LinkChildID bleibt für Rückwärtskompatibilität vorerst erhalten.2.70Sonstige Änderungen:Aufrufe zu ConstructorPreProcoess/DestructorPostProcess können gelöscht werdenTTimerEvent procedure jetzt ohne stdcall; (einfach stdcall; entfernen)SetProperty/GetProperty wird in fast allen Modulen verwendet, wodurch die alten Konfigurationsfunktion überSOAP nicht mehr verfügbar sind (In PHP werden diese emuliert)<strong>Download</strong>sDatei Größe Beschreibung<strong>IP</strong>S2SDK_2.0.rar 483613 bytes <strong>IP</strong>-<strong>Symcon</strong> SDK für Version 2.04<strong>IP</strong>S2SDK_2.1.rar 1015605 bytes <strong>IP</strong>-<strong>Symcon</strong> SDK für Version 2.10<strong>IP</strong>S2SDK_2.2.rar 965552 bytes <strong>IP</strong>-<strong>Symcon</strong> SDK für Version 2.20<strong>IP</strong>S2SDK_2.3.rar 963618 bytes <strong>IP</strong>-<strong>Symcon</strong> SDK für Version 2.30, 2.40<strong>IP</strong>S2SDK_2.5.rar 1005186 bytes <strong>IP</strong>-<strong>Symcon</strong> SDK für Version 2.50<strong>IP</strong>S2SDK_2.6.rar 1355868 bytes <strong>IP</strong>-<strong>Symcon</strong> SDK für Version 2.60<strong>IP</strong>S2SDK_2.7.rar 1067487 bytes <strong>IP</strong>-<strong>Symcon</strong> SDK für Version 2.70CSharpSoapDemo.rar 208315 bytes C# SOAP Demo Applikation (für Version 2.04)


SpezialschalterBenötigt: <strong>IP</strong>-<strong>Symcon</strong> >= 2.6Um einige Funktionen von <strong>IP</strong>-<strong>Symcon</strong> besser kontrollieren zu können, ist es möglich, einige Schalter über dieEinstellungen innerhalb der Tray-Applikation zu verändern.Bitte beachten Sie, dass jegliche Änderungen erst wirksam werden, sobald <strong>IP</strong>-<strong>Symcon</strong> neu gestartet wurde.Folgende Schalter stehen zur Verfügung:OptionLogfileVerboseVariableWatchScriptWatchBeschreibungSofern aktiviert, werden alle Meldungen ins Logfile geschrieben. Sofern deaktiviert, werden alle Meldungenaußer KL_DEBUG ins Logfile geschrieben.Sofern aktiviert, werden Wertänderungen/-aktualisierungen aller Variablen ins Logfile geschrieben. Soferndeaktiviert, werden diese nicht in das Logfile geschrieben.Sofern aktiviert, werden Skriptausführungen im Logfile protokolliert. Sofern deaktiviert, werden keineSkriptausführungen protokolliert. Fehler und Ausgaben (z.B. über echo) werden immer protokolliert.MessageQueueWatch Sofern aktiviert, werden die Verzögerungszeiten der internen Verarbeitungsqueue im Logfile protokolliert.Sofern deaktiviert, werden diese nicht protokolliert.ThreadCountSaveIntervalBackupCountLogfileCountDefault = 10. Gibt die Anzahl der PHP Threads an, die in <strong>IP</strong>-<strong>Symcon</strong> zur Verfügung stehen. Jeder Threadverbraucht ein paar Megabytes an RAM und einen kleinen Anteil der CPU-Last zur Verwaltung. DerMaximalwert kann anhand der Angaben unter Limitationen ermittelt werden.Default = 10. Angabe in Minuten, in der die Settings auf die Festplatte geschrieben werden sollen. BeimBeenden von <strong>IP</strong>-<strong>Symcon</strong> werden die Settings unabhängig von dieser Option geschrieben. Wird der Wert Null(0) angegeben, so werden die Settings nur beim Beenden geschrieben, wovon jedoch dringend abgeraten wird.Default = 25. Anzahl der Backup Settings, die im ‘backup’ Order archiviert werden. Eine Backup Settings wirdjeweils bei jedem Start und kurz nach Mitternacht erstellt. Die Zahl im Dateinamen ist eine UnixTimeStampzum Erstellzeitpunkt. Wird der Wert Null (0) angegeben, so ist die automatische Aufräumfunktion deaktiviert.Default = 25. Anzahl der Logfiles, die im ‘logs’ Ordner archiviert werden. Ein Logfile wird jeweils bei jedemStart und kurz nach Mitternacht erstellt. Die Zahl im Dateinamen ist eine UnixTimeStamp zumErstellzeitpunkt. Wird der Wert Null (0) angegeben, so ist die automatische Aufräumfunktion deaktiviert.


Linux (Wine)<strong>IP</strong>-<strong>Symcon</strong> läuft nicht nativ unter Linux, kann aber mit Wine emuliert werden.Die folgenden Angaben sind ohne Gewähr und werden nicht offiziell unterstützt.Welche Geräte werden unterstützt? Was kann erwartet werden?Im Prinzip ist nicht das Gerät wichtig, sondern die Schnittstelle über die es angeschlossen wird. Manche Geräte (z.B. dasxComfort Gateway) bieten mehrere Varianten, angeschlossen zu werden.Sobald die Schittstelle eingerichetet ist, funktionieren die darunterliegenden Instanzen ohne Probleme.Serielle Schnittstelle (s.u. für Konfiguration)FTDI (wird in Linux wie serielle Schnittstelle behandelt)USBXPress (wird in Linux wie serielle Schnittstelle behandelt)Diverse USB->RS232 Wandler (Die XBee Trägerplatine, USB->RS232, die wir bei den EnOcean TCM’s einbauen,wurde getestet)ClientSocketWWWReaderHomeMatic SocketWAGONormale Module die getestet wurden:MediaPlayer (mit nur 1 Soundkarte wurde getestet)WebServerOut-of-the-Box funktioniert nur der Zugriff über SSL. Wenn kein SSL aktiviert ist, muss Wine mit folgenden Patcheskompiliert werden: TransmitFile PatchesDas WebFront ist standardmäßig auf Port 82 gesetzt, welches nur genutzt werden kann, wenn die ips.exe mitadministrativen Privilegien (z.B. über sudo) gestartet wurde. Falls <strong>IP</strong>-<strong>Symcon</strong> über einen User-Account laufen soll, somuss der WebFront Port auf einen Port >1024 gesetzt werden. Ansonsten quittiert der WebServer mit einerFehlermeldung. (Could not bind socket. Address and port are already in use.)Es funktioniert nicht:HID (), (Hinweis: Beim Eaton Xcomfort Gateway kann die RS232 Schnittstelle benutzt werden. Das benötigte Kabelgibt es bei Moeller zum Kauf.)1-Wire TMEX (Kein TMEX Treiber für Linux. Dort wird OWFS benutzt.)Text-To-Speech (Keine SAPI unter Linux)Somit sollten folgende Komponenten funktionieren (Liste unvollständig):FS20, HMS, FHT, HomeMatic, LCN, KNX/EIB, WAGO, ModBus, ALLNET (alle), UVR1611, EnOcean (alle),Moeller xComfort (alle), XBee, ProJet, TextParser/Cutter, WinLIRC, EZControl…Was wird benötigt?Getestet wurde auf einer Ubuntu 12.04 (Precise Pangolin) Alternate installation.Wine Version: Devel 1.5.10. Die aktuelle Stable sollte aber auch reichen.Zusätzlich muss mit dem winetricks Skript msxml3, gecko, corefonts, volnum und vcrun2008 installiert werden. DieInstallation geschieht per-User, nicht systemweit. Winetrickswinetricks msxml3winetricks geckowinetricks corefontswinetricks volnumwinetricks vcrun2008Wie wird <strong>IP</strong>-<strong>Symcon</strong> installiert?Einfach den Live-Installer herunterladen: <strong>Download</strong>


Starten und in ein Wunschverzeichnis installieren:wine ips_live.exeNach der Installation startet die <strong>IP</strong>-<strong>Symcon</strong> Tray Anwendung und fragt nach Username/Lizenzdatei. Angeben und mitOK bestätigen. Jetzt kann <strong>IP</strong>-<strong>Symcon</strong> auch schon gestartet werden. In den Installationspfad wechseln und <strong>IP</strong>-<strong>Symcon</strong>starten:wineconsole ips.exeWenn der Server gestartet ist, kann die Konsole gestartet werden:wine ips_console.exe /localhostWie kann ich serielle Ports in <strong>IP</strong>-<strong>Symcon</strong> verwenden?Sie müssen einen Symlink auf das Gerät erstellen. Mehr ist nicht nötig. (<strong>IP</strong>-<strong>Symcon</strong> sollte danach neu gestartet werden.)ln -s /dev/usb/ttyUSB0 ~/.wine/dosdevices/com1Es funktioniert etwas nicht! Woran kann es liegen?Der Server startet, aber die Konsole bricht mit einer Fehlermeldung ab.Vergewissern Sie dich, dass msxml3 installiert ist. Wenn unter http://localhost:3773/wsdl/I<strong>IP</strong>SDebugServer eineOleException auftritt, liegt es ganz sicher daran.Es werden keine seriellen Ports angezeigtWurden die Ports im Home Verzeichnis (~/.wine/dosdevices/) entsprechend verlinkt? S.o. für eine Anleitung.Hat der Benutzer die nötigen Rechte, um auf das Gerät zuzugreifen?Können Windows XP Themes im Dasboard verwendet werden?Ja, hier gibt es eine gute Anleitung: KlickHinweiseDie Funktion setlocale aus PHP sollte nicht verwendet werden, da sonst Probleme beim Dezimaltrennzeichenauftreten (setlocale).


DatenaustauschSeit <strong>IP</strong>-<strong>Symcon</strong> 3.0 gibt es eine neue JSON-RPC Schnittstelle, welche für jeden WebServer aktiviert werden kann.Standardmäßig ist die Schnittstelle deaktiviert. Sie finden z.B. den WebServer für Ihr WebFront im Objektbaum unterKern Instanzen -> WebInterface WebFront. Dort können Sie die Optionen "JSON-RPC Schnittstelle aktivieren"anwählen.Es wird dringend empfohlen einen Benutzernamen und ein Passwort zu vergeben, da über die Schittstelle Ihrekomplette <strong>IP</strong>-<strong>Symcon</strong> Konfiguration eingesehen und ggf. verändert werden kann.Für die Funktionsaufrufe können die normalen Befehle der Befehlsreferenz und Modulreferenz verwendet werden.Kernelversion auslesen$rpc = new JSONRPC("http://user:password@127.0.0.1:82/api/");$result = $rpc-><strong>IP</strong>S_GetKernelDir();echo "KernelVersion: ".$result;Skripte starten$rpc = new JSONRPC("http://user:password@127.0.0.1:82/api/");$rpc-><strong>IP</strong>S_RunScript(34956);Variablen auslesen$rpc = new JSONRPC("http://user:password@127.0.0.1:82/api/");echo $rpc->GetValueFormatted(58383);Variablen verändern$rpc = new JSONRPC("http://user:password@127.0.0.1:82/api/");$rpc->SetValue(38809, 18.5);HomeMatic Gerät schalten$rpc = new JSONRPC("http://user:password@127.0.0.1:82/api/");$rpc->HM_WriteValueBoolean(20558, "STATE", false);SOAP SchittstelleBitte verwenden Sie die JSON-RPC Schnittstelle, da diese wesentlich schneller ist und eine Authentifizerung bietet.Außerdem können alle Befehle der Befehlsreferenz und Modulreferenz ohne zusätzliche Modifikationen oderKenntnis der WSDL Beschreibung aufgerufen werdenSeit <strong>IP</strong>-<strong>Symcon</strong> 2.5 wird die benötigte PHP SOAP Extension automatisch installiert.Kernelversion auslesen


$soap = new SoapClient("http://127.0.0.1:3773/wsdl/I<strong>IP</strong>SSimpleKernel");$result = $soap->GetKernelVersion();echo "KernelVersion: ".$result;Skripte starten$soap = new SoapClient("http://127.0.0.1:3773/wsdl/I<strong>IP</strong>SScriptEngine");$result = $soap->ExecuteScript(12345, true);echo base64_decode($result);Variablen verändern$soap = new SoapClient("http://127.0.0.1:3773/wsdl/I<strong>IP</strong>SVariableManager");$soap->WriteVariableFloat(12345, 23.4);FS20 Gerät schalten$soap = new SoapClient("http://127.0.0.1:3773/wsdl/I<strong>IP</strong>SFS20");$id = 12345;$soap->__setSoapHeaders(new SOAPHeader("urn:U<strong>IP</strong>SModuleTypes", 'TIDHeader',array('ID' => $id)));echo $soap->SwitchMode(false);


LimitationenDie nachfolgend beschriebenen Beschränkungen sind aus Gründen der Performance und Sicherheit des Systemerforderlich. Eine Veränderbarkeit dieser ist nicht geplant.LimitationMaximale Anzahlder ObjekteMaximale Größeeiner String-VariableMaximale GrößedesRegisterVariablePuffersMaximale Größedes Cutter PuffersMaximale Anzahlan PHP-ThreadsBeschreibung50000. Der Adressraum von 10000-59999 wird dabei genutzt. Je nach Lizenz/<strong>IP</strong>-<strong>Symcon</strong> Version kann dieserWert geringer sein.Ab 1024kb wird ein Fehler erzeugt und der Inhalt nicht geschriebenen. Aus Performance- und Stabilitätsgründensollten Daten über 8kb anderweitig ausgelagert werden. Die 1024kb Grenze dient nur als Hard-Limit, umkatastrophale Auswirkungen zur Laufzeit durch fehlerhafte Skripte einzudämmen.Eine Warnung wird ab 8kb Größe in das Log geschrieben. Es werden nur die letzten 64kb an Daten im Pufferbehalten. Ältere Daten werden ohne weitere Warnung verworfen.Eine Warnung wird ab 8kb Größe in das Log geschrieben. Es werden nur die letzten 64kb an Daten im Pufferbehalten. Ältere Daten werden ohne weitere Warnung verworfen.Die Standardeinstellung von 10 PHP-Threads ist für fast alle Systeme völlig ausreichend. Sollten dennoch mehrThreads benötigt werden, so sind die Limits je nach installiertem Speicher gestaffelt. Max. 10 Threads bei mind. 1GB, Max. 20 bei mind. 2GB, Max. 30 bei mind. 3GB und Max. 40 bei mind. 4GB.Maximaler Die Standardeinstellung ist 32MB pro PHP-Thread. Maximal kann dieser Wert auf 64M pro Thread in der php.iniSpeicher pro PHP- verändert werden. Konsultieren Sie dafür die PHP-Dokumentation.ThreadAbfrage vonDaten über AC_*FunktionenMaximaleAssoziationen proVariablenprofilEs werden maximal 10000 Zeilen zurückgegeben, unabhängig davon, ob das Limit höher gewählt wurde. Es wirdkeinerlei Warnung ausgegeben. Abfragen sollten entsprechend optimiert werden, so dass auf die aggregiertenDaten zugegriffen werden kann. Das minimiert die Belastung der Datenbank und somit minimiert es auchZugriffszeiten für die WebFront-Visualisierung der einzelnen Zugriffe.Es sind maximal 32 Assoziationen pro Variablenprofil erlaubt. Der Hintergrund ist, dass jede Änderung an denProfilassoziationen an alle WebFronts übertragen werden muss, was bei sehr vielen Assoziationen einen hohenOverhead hat. Außerdem ist dieses Feature nicht für z.B. eine Playlisten-Auswahl konzipiert, da diese das Designund Layout des WebFronts negativ beeinflussen würde.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!