Migration - Smarthome-Components
Migration - Smarthome-Components Migration - Smarthome-Components
RegisterVariable RegisterVariable stellt eine Datenweiterleitungs- und -verarbeitungsschnittstelle zur Verfügung. Konfiguration Falls Sie ihr Gerät noch nicht eingerichtet haben, folgen sie bitte den Schritten auf dieser Seite: Geräte einbinden Das RegisterVariable Modul verbindet sich nicht automatisch mit einer übergeordneten Instanz. Sie müssen dafür übergeordenete Instanz auswählen oder eine neue erstellen. Sie können auch weitere Splitter hinzufügen (z.B. Cutter), um die 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. Datenverarbeitung Werden von der übergeordneten Instanz (Kommunikationsschnittstelle) neue Daten empfangen, wird das Ziel-Skript der RegisterVariable-Instanz ausgeführt. In diesem stehen die empfangenen Daten über $_IPS[‘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äre Daten in einer normalen String-Variable in IP-Symcon speichert (defekte IP-Symcon-Konfiguration), gibt es die Funktion RegVar_SetBuffer(integer $InstanzID, string $Puffer), die Daten im einen zur RegisterVariable-Instanz gehörigen Puffer speichert. 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 die Kommunikationsschnittstelle senden. Intern wird hierbei die passende Sendefunktion, wie z.B. COMPort_SendText, ausgeführt. Der Puffer wird nach einem Neustart von IP-Symcon gelöscht! Verwenden Sie bitte KEINE VARIABLE als Puffer. Andernfalls kann es zu Instabilitäten innerhalb von IP-Symcon kommen und im schlimmsten Fall eine komplett zerstörte Konfiguration verursachen. Da sich dieses Problem auch inkrementell auf den Backup Ordner auswirken kann, haben Sie dann unter Umständen nicht einmal eine Backup Konfiguration. Nutzen Sie den internen Puffer der Instanz, um Daten zwischenzuspeichern. RegVar_SetBuffer / RegVar_GetBuffer Beispiele Folgendes Beispiel verkettet empfangene Daten und gibt durch ; separierte Datensätze bei Vervollständigung aus: // wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist if ($_IPS['SENDER'] == "RegisterVariable") { // bereits im Puffer der Instanz vorhandene Daten in $data kopieren $data = RegVar_GetBuffer($_IPS['INSTANCE']); // neu empfangene Daten an $data anhängen $data .= $_IPS['VALUE']; // wenn das Trennzeichen ; in $data gefunden worden ist if (strpos($data, ';')) { // $data in durch ; separierte Datensätze zerlegen $datasets = explode(';', $data); // alle nicht durch ; terminierten Datensätze ausgeben for ($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 speichern RegVar_SetBuffer($_IPS['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 ist if ($_IPS['SENDER'] == "RegisterVariable") { } // bereits im Puffer der Instanz vorhandene Daten in $data kopieren $data = RegVar_GetBuffer($_IPS['INSTANCE']); // neu empfangene Daten an $data anhängen $data .= $_IPS['VALUE']; // wenn $data mindestens 16 Zeichen lang ist if (strlen($data) >= 16) { } // $data in Blöcke von bis zu 16 Zeichen zerlegen $datasets = str_split($data, 16); // $data leeren $data = ""; // alle Datensätze durcharbeiten for ($i = 0; $i < count($datasets); $i++) { } // vollständige Datensätze (genau 16 Zeichen lang) ausgeben if (strlen($datasets[$i]) == 16) { } else { } echo "empfangener Datensatz: ".$datasets[$i]."\n"; // Unvollständige Datensätze in $data schreiben $data = $datasets[$i]; // Inhalt von $data im Puffer der RegisterVariable-Instanz speichern RegVar_SetBuffer($_IPS['INSTANCE'], $data); Tipps & Tricks Sie können sich alle übergeben Variable anzeigen lassen
- Seite 265 und 266: LCN_SetRelay boolean LCN_SetRelay (
- Seite 267 und 268: LCN_SetTargetValue boolean LCN_SetT
- Seite 269 und 270: EIB/KNX EIB/KNX steht für ausgerei
- Seite 271 und 272: EIB_DimControl boolean EIB_DimContr
- Seite 273 und 274: EIB_Value boolean EIB_Value ( integ
- Seite 275 und 276: EIB_DriveMove boolean EIB_DriveMove
- Seite 277 und 278: EIB_DriveShutterValue boolean EIB_D
- Seite 279 und 280: EIB_PriorityPosition boolean EIB_Pr
- Seite 281 und 282: S7_WriteBit boolean S7_WriteBit ( i
- Seite 283 und 284: S7_WriteWord boolean S7_WriteWord (
- Seite 285 und 286: S7_WriteShortInt boolean S7_WriteSh
- Seite 287 und 288: S7_WriteInteger boolean S7_WriteInt
- Seite 289 und 290: SPS: Wago, Beckhoff, ABB Speicherpr
- Seite 291 und 292: Es öffnet sich die Konfiguration d
- Seite 293 und 294: Modbus RTU/TCP Erstellen Sie zu all
- Seite 295 und 296: ModBus_WriteRegisterByte boolean Mo
- Seite 297 und 298: ModBus_WriteRegisterDWord boolean M
- Seite 299 und 300: ModBus_WriteRegisterSmallInt boolea
- Seite 301 und 302: ModBus_WriteRegisterReal boolean Mo
- Seite 303 und 304: DMX Lichttechnik DMX (Lichttechnik)
- Seite 305 und 306: DMX_Fade boolean DMX_Fade ( integer
- Seite 307 und 308: DMX_SetBlackout boolean DMX_SetBlac
- Seite 309 und 310: IR Trans Mit Hilfe von Infrarotsign
- Seite 311 und 312: IRT_SendOnce boolean IRT_SendOnce (
- Seite 313 und 314: WinLIRC_SendOnce boolean WinLIRC_Se
- Seite 315: TextParser Der TextParser in IP-Sym
- Seite 319 und 320: RegVar_SetBuffer boolean RegVar_Set
- Seite 321 und 322: Text to Speech Bevor Sie das Text t
- Seite 323 und 324: TTS_GenerateFile boolean TTS_Genera
- Seite 325 und 326: IMAP Benötigt: IP-Symcon >= 2.2 Da
- Seite 327 und 328: IMAP_GetMailEx array IMAP_GetMailEx
- Seite 329 und 330: POP3_GetCachedMails array POP3_GetC
- Seite 331 und 332: SMTP IP-Symcon bietet direkt ein Mo
- Seite 333 und 334: SMTP_SendMailEx boolean SMTP_SendMa
- Seite 335 und 336: SMS_Send boolean SMS_Send ( integer
- Seite 337 und 338: WAC_PlayFile boolean WAC_PlayFile (
- Seite 339 und 340: WAC_Play boolean WAC_Play ( integer
- Seite 341 und 342: WAC_Pause boolean WAC_Pause ( integ
- Seite 343 und 344: WAC_Next boolean WAC_Next ( integer
- Seite 345 und 346: WAC_SetShuffle boolean WAC_SetShuff
- Seite 347 und 348: WAC_SetPosition boolean WAC_SetPosi
- Seite 349 und 350: WAC_GetPlaylistLength integer WAC_G
- Seite 351 und 352: WAC_SetPlaylistPosition boolean WAC
- Seite 353 und 354: Sys_Ping array Sys_Ping ( string $H
- Seite 355 und 356: Sys_GetMemoryInfo array Sys_GetMemo
- Seite 357 und 358: Sys_GetHardDiskInfo array Sys_GetHa
- Seite 359 und 360: Sys_GetSpooler array Sys_GetSpooler
- Seite 361 und 362: Sys_GetURLContent array Sys_GetURLC
- Seite 363 und 364: Shutter Control Um das IP-Symcon Sh
- Seite 365 und 366: } break; } break; case SC_DIRECTION
RegisterVariable<br />
RegisterVariable stellt eine Datenweiterleitungs- und -verarbeitungsschnittstelle zur Verfügung.<br />
Konfiguration<br />
Falls Sie ihr Gerät noch nicht eingerichtet haben, folgen sie bitte den Schritten auf dieser Seite: Geräte einbinden<br />
Das RegisterVariable Modul verbindet sich nicht automatisch mit einer übergeordneten Instanz. Sie müssen dafür<br />
übergeordenete Instanz auswählen oder eine neue erstellen. Sie können auch weitere Splitter hinzufügen (z.B. Cutter), um<br />
die ankommenden Daten vor der Auswertung direkt synchronisieren zu lassen.<br />
Die Ausführung der Skripte erfolgt seriell. Das Bedeutet, dass Sie ihre Skripte nicht mit Semaphoren schützen müssen.<br />
Datenverarbeitung<br />
Werden von der übergeordneten Instanz (Kommunikationsschnittstelle) neue Daten empfangen, wird das Ziel-Skript der<br />
RegisterVariable-Instanz ausgeführt. In diesem stehen die empfangenen Daten über $_IPS[‘VALUE’] zur Verfügung.<br />
Es gibt Datenquellen, bei denen erst mehrere empfangene Datensendungen eine sinnvolle Auswertung ermöglichen.<br />
Daher müssen die empfangenen Daten zwischengespeichert werden. Da Probleme auftreten können, wenn man binäre<br />
Daten in einer normalen String-Variable in IP-Symcon speichert (defekte IP-Symcon-Konfiguration), gibt es die Funktion<br />
RegVar_SetBuffer(integer $InstanzID, string $Puffer), die Daten im einen zur RegisterVariable-Instanz gehörigen Puffer<br />
speichert. Die im Puffer gespeicherten Daten lassen sich mit der Funktion RegVar_GetBuffer(integer $InstanzID)<br />
auslesen. Mit der Funktion RegVar_SendText(integer $InstanzID, string $Text) lassen sich Datenstrings über die<br />
Kommunikationsschnittstelle senden. Intern wird hierbei die passende Sendefunktion, wie z.B. COMPort_SendText,<br />
ausgeführt.<br />
Der Puffer wird nach einem Neustart von IP-Symcon gelöscht!<br />
Verwenden Sie bitte KEINE VARIABLE als Puffer. Andernfalls kann es zu Instabilitäten innerhalb von IP-Symcon<br />
kommen und im schlimmsten Fall eine komplett zerstörte Konfiguration verursachen. Da sich dieses Problem auch<br />
inkrementell auf den Backup Ordner auswirken kann, haben Sie dann unter Umständen nicht einmal eine Backup<br />
Konfiguration. Nutzen Sie den internen Puffer der Instanz, um Daten zwischenzuspeichern.<br />
RegVar_SetBuffer / RegVar_GetBuffer<br />
Beispiele<br />
Folgendes Beispiel verkettet empfangene Daten und gibt durch ; separierte Datensätze bei Vervollständigung aus:<br />
// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist<br />
if ($_IPS['SENDER'] == "RegisterVariable")<br />
{<br />
// bereits im Puffer der Instanz vorhandene Daten in $data kopieren<br />
$data = RegVar_GetBuffer($_IPS['INSTANCE']);<br />
// neu empfangene Daten an $data anhängen<br />
$data .= $_IPS['VALUE'];<br />
// wenn das Trennzeichen ; in $data gefunden worden ist<br />
if (strpos($data, ';'))<br />
{<br />
// $data in durch ; separierte Datensätze zerlegen<br />
$datasets = explode(';', $data);<br />
// alle nicht durch ; terminierten Datensätze ausgeben<br />
for ($i = 0; $i < count($datasets) - 1; $i++)<br />
{<br />
}<br />
echo "empfangener Datensatz: ".$datasets[$i]."\n";<br />
// $data auf den Inhalt des letzten (unvollständigen) Datensatzes setzen