FHZ, FHT und Telegramme senden

Hallo,

viele beschweren sich, dass die FHT Befehle immer so lange brauchen, bis sie durch den FHZ Buffer durch sind. Ich wollte einfach mal das zeigen, was ich schon immer sagte: Lässt man das System mal ordentlich arbeiten, dass gehen Befehle auch schnell durch. Hier mal ein Auszug aus meiner Logfile:


11.11.2006 12:01:56h > Parents Room : New Temperature pending in Queue: 18 °C
11.11.2006 12:03:05h > Parents Room : Temperature in Room now set on 18 °C
11.11.2006 12:07:10h > Bathroom Parents : Temperature in Room now set on 20 °C
11.11.2006 12:07:11h > Bathroom Parents : Window has been closed
11.11.2006 12:34:57h > Parents Room : New Temperature pending in Queue: 22 °C
11.11.2006 12:35:49h > Parents Room : Temperature in Room now set on 22 °C
11.11.2006 12:37:59h > Bathroom Parents : Window has been opened
11.11.2006 12:39:54h > Bathroom Parents : Temperature in Room now set on 20 °C
11.11.2006 12:39:54h > Bathroom Parents : Window has been closed
11.11.2006 13:01:58h > Bathroom Kids : New Temperature pending in Queue: 20 °C
11.11.2006 13:03:26h > Bathroom Kids : Temperature in Room now set on 20 °C
11.11.2006 15:08:29h > Parents Room : Connection Timeout Designer Terminal
11.11.2006 15:18:29h > Level 1 : Connection Timeout to FHZ
11.11.2006 15:38:29h > Level 1 : Connection Timeout to FHZ
11.11.2006 15:48:29h > Parents Room : Connection Timeout Designer Terminal
11.11.2006 16:06:03h > Bathroom Kids : New Temperature pending in Queue: 21 °C
11.11.2006 16:06:18h > Bathroom Kids : Temperature in Room now set on 21 °C
11.11.2006 16:22:54h > Melodies Room : Window has been opened
11.11.2006 16:31:21h > Piolos Room : Window has been opened
11.11.2006 16:55:05h > Sala : Shutter #1 has been closed
11.11.2006 16:55:05h > Bathroom Kids : Shutter #1 has been closed
11.11.2006 16:55:06h > Kitchen : Shutter #2 has been closed
11.11.2006 17:20:06h > Piolos Room : Shutter #1 has been closed
11.11.2006 17:20:06h > Melodies Room : Shutter #1 has been closed
11.11.2006 17:20:06h > Parents Room : Shutter #1 has been closed
11.11.2006 17:20:07h > Parents Room : Shutter #2 has been closed
11.11.2006 17:48:25h > Bathroom Kids : FHT: No new Update recieved !
11.11.2006 18:07:06h > Bathroom Kids : New Temperature pending in Queue: 23 °C
11.11.2006 18:09:31h > Bathroom Kids : Temperature in Room now set on 23 °C
11.11.2006 18:48:01h > Piolos Room : Temperature in Room now set on 21 °C
11.11.2006 18:48:02h > Piolos Room : Window has been closed
11.11.2006 19:25:47h > Melodies Room : Temperature in Room now set on 22 °C
11.11.2006 19:25:47h > Melodies Room : Window has been closed
11.11.2006 19:37:08h > Melodies Room : New Temperature pending in Queue: 18 °C
11.11.2006 19:37:21h > Melodies Room : Temperature in Room now set on 18 °C
11.11.2006 20:11:09h > Piolos Room : New Temperature pending in Queue: 18 °C
11.11.2006 20:12:44h > Piolos Room : Temperature in Room now set on 18 °C
11.11.2006 20:31:10h > Bathroom Parents : New Temperature pending in Queue: 18 °C
11.11.2006 20:31:34h > Bathroom Parents : Temperature in Room now set on 18 °C
11.11.2006 22:03:13h > KID3 Room : New Temperature pending in Queue: 17 °C
11.11.2006 22:03:33h > KID3 Room : Temperature in Room now set on 17 °C
11.11.2006 22:05:13h > Floor : New Temperature pending in Queue: 16 °C
11.11.2006 22:06:13h > Toilet Visitors : New Temperature pending in Queue: 16 °C
11.11.2006 22:06:38h > Floor : Temperature in Room now set on 16 °C
11.11.2006 22:07:52h > Toilet Visitors : Temperature in Room now set on 16 °C
11.11.2006 22:09:13h > Bathroom Kids : New Temperature pending in Queue: 18 °C
11.11.2006 22:10:10h > Bathroom Kids : Temperature in Room now set on 18 °C
11.11.2006 22:37:13h > Parents Room : New Temperature pending in Queue: 18 °C
11.11.2006 22:38:22h > Parents Room : Temperature in Room now set on 18 °C

Man beachte immer die kurze Zeiten, die FHT Telegramme brauchen, bis sie vom ‚Status Pending‘ durch sind um am FHT angekommen sind. Die Zeiten liefen (fast) immer im Sekunden-Bereich bis hin zu 2 Minuten maximal.
Ich wollte mal zeigen , man soll nicht immer direkt meckern und sagen, mit dem Buffer stimmt was nicht, oder was auch immer.

mfG Franz

Wenn FHT-Befehle in der Queue hängen bleiben, kann das auch an schlechtem Empfang von den FHTs liegen. Die FHT-Empfänger sind nur während eines kurzen Zeitschlitzes aktiv, um Batteriestrom zu sparen. Die FHZ muss darauf synchronisieren, was sie aber nur kann, wenn die FHTs gelegentlich was senden.

Ich hatte kürzlich einen FHT, der ziemlich weit weg von der FHZ war, bei dem die Befehle nur schleppend durchgingen. Nachdem die FHZ nun besser positioniert ist, klappt das wieder schneller.

Hier übrigens meine Ersatz-FHT-Funktionen iFHT_SetTemperature bzw. iFHT_SetMode. Beide Funktionen werden exakt so wie die Originale ohne ‚i‘ aufgerufen und senden nur dann an die FHTs wenn sich der Mode- oder Temperaturwert ändert. IaW unnötiger Traffic wird vermieden.

Ich würde mich freuen, wenn ihr die Funktionen mal testen und eure Erfahrungen schildern würdet.


function iFHT_SetMode($id, $mode) {
   require_once ("../web/base/xmlparser.ips.php");

   //parse instance settings
   $xmldata=IPS_GetInstanceSettings($id);
   $xml     = new IPS_XMLParser();
   $array = $xml->GetArray( $xmldata );

   // get variables
   $TargetModeVar = $array['ID']['Settings']['TargetModeVar'];
   $TargetIPSModeVar = $array['ID']['Settings']['TargetIPSModeVar'];

   // get variable update times
   $ModeUpdate = IPS_GetUpdateTime($TargetModeVar);
   $IPSModeUpdate = IPS_GetUpdateTime($TargetIPSModeVar);

   // if Target newer than IPSTarget take that for comparision
   if ($ModeUpdate > $IPSModeUpdate) {
      $TargetMode = GetValueInteger ($TargetModeVar);
   }
   else {
      $TargetMode = GetValueInteger ($TargetIPSModeVar);
   }

   if ($mode == $TargetMode) {
      return false;
   }
   else {
      return FHT_SetMode($id, $mode);
   }
}

function iFHT_SetTemperature($id, $temperature) {
   require_once ("../web/base/xmlparser.ips.php");
   //parse instance settings
   $xmldata=IPS_GetInstanceSettings($id);
   $xml     = new IPS_XMLParser();
   $array = $xml->GetArray( $xmldata );

   // get variables
   $TargetTempVar = $array['ID']['Settings']['TargetTempVar'];
   $TargetIPSTempVar = $array['ID']['Settings']['TargetIPSTempVar'];

   // get variable update times
   $TempUpdate = IPS_GetUpdateTime($TargetTempVar);
   $IPSTempUpdate = IPS_GetUpdateTime($TargetIPSTempVar);

   // if Target newer than IPSTarget take that for comparision
   if ($TempUpdate > $IPSTempUpdate) {
      $TargetTemp = GetValueFloat ($TargetTempVar);
   }
   else {
      $TargetTemp = GetValueFloat ($TargetIPSTempVar);
   }
   // round temperature to nearest half degree
   $temperature = round($temperature * 2.0, 0)/2.0;
   
   if ($temperature == $TargetTemp) {
      return false;
   }
   else {
      return FHT_SetTemperature($id, $temperature);
   }
}

Das kann mir nicht passieren, da ich ja nach Program (Parameter-Datei) die Temperaturen anpassen, und auch nur gesendet wird, falls eine Änderung anliegt.
Ausserdem habe ich diese Sicherung auch schon eingebaut im Manuelbetrieb per Designer, sowohl für Target Temp als auch für Target Mode !

mfG Franz