Zufallszahlen via "urandom"
Der erste Ansatz nutzt eine spezielle Datei des Betriebssystems (/dev/urandom), von der Benutzerprogramme Zufallszahlen lesen können. Diese Datei ist eine einheitliche Schnittstelle zu einem systemweiten Zufallsgenerator (weitere Informationen dazu auf Wikipedia).Mittels HEXDUMP wird nun der Inhalt dieser Datei gelesen, in eine Dezimalzahl gewandelt und als String-Variante entsprechend aufgespaltet:
Zufallszahlen auf Basis eines Kongruenzgenerators
Die Kongruenzgeneratoren bilden eine Klasse von Algorithmen, die zufällig aussehende Zahlenfolgen erzeugen. Die dadurch erzeugten Zahlen nennt man Pseudozufallszahlen, da sie deterministisch erzeugt werden und somit nicht wirklich zufällig sind. Kongruenzgeneratoren sind die bekanntesten und meistverwendeten rekursiven arithmetischen Zufallszahlengeneratoren. (Quelle: Wikipedia)Der Vorteil dieses Ansatzes ist der Verzicht auf die Funktion "system.Exec", die u.U. den Betrieb der HomeMatic-Zentrale stören kann.
Zunächst muss eine neue Systemvariable vom Typ "Zahl" angelegt werden, die in unserem Beispiel den Namen "_RANDOM_" erhält. Anschließend erstellt man ein neues Programm (Beispielname: "RANDOM_SET"), dass die eigentliche Zufallszahl in folgendem Skript berechnet:
Das Programm wird über das Zeitmodul in der "Wenn"-Bedingung alle 7 Minuten ausgeführt und erzeugt jeweils eine neue Zahl, die anschließend über die Systemvariable "_RANDOM_" abgefragt und benutzt werden kann.
Abschließend erstellt man ein weiteres Programm (Beispielname: "RANDOM_SEED"), das diesmal aber keine Wenn-Bedingung enthält und somit nur einmalig beim Starten des HomeMatic-Zentrale ausgeführt wird:
Das Skript sorgt für die Initialisierung der Zufahlszahl und nutzt dazu den aktuellen Zeitstempel des Systems.
