Rückkanal für Temperatur und rel. Luftfeuchtigkeit

Die Temperatur Sensoren von dS (u::lux, ds_isens200, FTW06, Thanos etc) melden die Temperatur dem dS Server. Der dS Konfigurator von Symcon hat diese Sensoren ebenfalls implementiert. Man kann für jeden dieser Sensoren einstellen, wie häufig diese Daten upgedatet werden. Diesen Prozess könnte man optimieren, wenn man das Sensorlogfile https://192.168.1xyz/logs/dss/js/system-sensor.log als Register-Variable „anzapfen“ könnte. Dies ist mir aber nicht gelungen. In diesem File werden alle Meldungen der Sensoren sofort protokolliert. Der update wäre dann sofort in ip-Symcon nachgeführt und würde die unnötigen Scans erübrigen.

Ich weiss nicht genau, welche Technik für das updaten der Sensoren verwendet wird. Ich vermute jedoch, wenn man 10 Temperatur Sensoren hat, und diese jede Minute updated, dann laufen im Hintergrund alle 6 Sekunden Skripte aber. Ich schrieb deshalb ein Skript, welches z.B. einmal in der Minute läuft, dann aber gleich alle Sensoren scannt und deren Werte updated. Bitte melden, wenn mein Skript optimiert werden kann.

$Expert_id=59672;//symcon ID for Expert instance;
$ist=DS_MakeRequest($Expert_id, "apartment/getDevices", "");
	$ist=json_decode($ist, true);
		
	foreach ($ist as $value)
	{ 
			
	
			if ($value["id"]=="302ed89f43f02dc0000b6400") 
					{	$sensorcount=$value["sensorInputCount"];
						for ($x = 0; $x <= $sensorcount-1; $x++)
						{	if ($value["sensors"][$x]["type"]==9)
							{	setValue(59253,$value["sensors"][$x]["value"]);}
							if ($value["sensors"][$x]["type"]==13)
							{	setValue(16175,$value["sensors"][$x]["value"]);}
						}
					}
					
			
			else if ($value["id"]=="302ed89f43f06f00000ae3e0") 
					{	$sensorcount=$value["sensorInputCount"];
						for ($x = 0; $x <= $sensorcount-1; $x++)
						{	if ($value["sensors"][$x]["type"]==9)
							{	setValue(39147,$value["sensors"][$x]["value"]);}
							if ($value["sensors"][$x]["type"]==13)
							{	setValue(34846,$value["sensors"][$x]["value"]);}
							if ($value["sensors"][$x]["type"]==11)
							{	setValue(45014,$value["sensors"][$x]["value"]);}
							if ($value["sensors"][$x]["type"]==21)
							{	setValue(34842,$value["sensors"][$x]["value"]);}
						}
					}		
	

			
	}
	

Anmerkungen:

  1. Das Gerät 302ed89f43f02dc0000b6400 ist ein Temperatur und rel. Luftfeuchte Messer. Das Gerät 302ed89f43f06f00000ae3e0 ist ein u::lux und misst noch Co2 gehalt sowie die Lichtstärke.
  2. Für jeden Sensor mit Temp und rel. Luftfeuchte müssen zwei float Variable erstellt werden. Das Skript updated dann diese Variablen und nicht die Variablen, welche vom Configurator erstellt wurden. Diese original Variablen kann ich nicht updaten.