> 4) + ((((~ ord($lowByte)) & 0x0000000f) + 1) / 16)); } else { $result = (ord($highByte) * 16) + ((ord($lowByte) & 0xf0) >> 4) + ((ord($lowByte) & 0x0f) / 16); } return $result; } // ---------------------------------------------------------------------------------------------------------------- function decodeData0507M6($hexData, $byte) { $data = substr($hexData, $byte*2-2,2); switch ($data) { case '00': $msg = 'Brenner ausschalten'; break; case '01': $msg = 'Keine Aktion'; break; case '55': $msg = 'Brauchwasserbereitung'; break; case 'AA': $msg = 'Heizbetrieb'; break; case 'CC': $msg = 'Emissionskontrolle'; break; case 'DD': $msg = 'TÜV-Funktion'; break; case 'EE': $msg = 'Reglerstop-Funktion'; break; case '66': $msg = 'Brauchwasserbereitung bei Reglerstop'; break; case 'BB': $msg = 'Brauchwasserbereitung bei Heizbetrieb'; break; case '44': $msg = 'Reglerstop-Funktion stufiger Betrieb'; break; default : $msg='-'; } return $msg; } // ---------------------------------------------------------------------------------------------------------------- function decodeData0507M7($hexData, $byte) { $data = substr($hexData, $byte*2-2,2); switch ($data) { case '00': $msg = 'Keine Aktion'; break; case '01': $msg = 'Ausschalten Kesselpumpe'; break; case '02': $msg = 'Einschalten Kesselpumpe'; break; case '03': $msg = 'Ausschalten variabler Verbraucher'; break; case '04': $msg = 'Einschalten variabler Verbraucher'; break; default : $msg='-'; } return $msg; } // ---------------------------------------------------------------------------------------------------------------- function storeData($path, $value, $rootId, $order, $dataType) { if ($value===false) { return; // Ersatzwert ... } $variableId = storeDataGetId($path, $rootId, $order, $dataType); switch ($dataType) { case HEATING_DT_DEGREE: case HEATING_DT_PERCENT: case HEATING_DT_PRESSURE: if (GetValue($variableId)<>$value) { SetValueFloat($variableId, $value); } break; default: if (GetValue($variableId)<>$value) { SetValue($variableId, $value); } } } // ---------------------------------------------------------------------------------------------------------------- function storeDataGetId($path, $rootId, $order, $dataType) { $pathList = explode('.',$path); $parentId = $rootId; foreach ($pathList as $idx=>$pathItem) { if ($idx == count($pathList)-1) { $variableId = @IPS_GetVariableIDByName($pathItem, $parentId); if ($variableId === false) { $variableId = storeDataCreateVariable($pathItem, $parentId, $order, $dataType); } } else { $categoryId = @IPS_GetCategoryIDByName($pathItem, $parentId); if ($categoryId === false) { $categoryId = IPS_CreateCategory(); IPS_SetName($categoryId, $pathItem); IPS_SetParent($categoryId, $parentId); } $parentId = $categoryId; } } return $variableId; } // ---------------------------------------------------------------------------------------------------------------- function storeDataCreateVariable($name, $parentId, $order, $dataType) { switch ($dataType) { case HEATING_DT_STRING: $variableId = IPS_CreateVariable(3); break; case HEATING_DT_DEGREE: case HEATING_DT_PRESSURE: case HEATING_DT_PERCENT: $variableId = IPS_CreateVariable(2); storeDataCreateProfile($dataType); break; default: IPSLogger_Err(__file__, 'Unknown Datatype '.$dataType); } IPS_SetName($variableId, $name); IPS_SetParent($variableId, $parentId); IPS_SetPosition($variableId, $order); IPS_SetVariableCustomProfile($variableId, $dataType); return $variableId; } // ---------------------------------------------------------------------------------------------------------------- function storeDataCreateProfile($dataType) { switch ($dataType) { case HEATING_DT_DEGREE: @IPS_CreateVariableProfile($dataType, 1); IPS_SetVariableProfileText($dataType, null, ' °C'); IPS_SetVariableProfileIcon($dataType, 'Temperature'); break; case HEATING_DT_PRESSURE: @IPS_CreateVariableProfile($dataType, 1); IPS_SetVariableProfileText($dataType, null, ' bar'); break; case HEATING_DT_PERCENT: @IPS_CreateVariableProfile($dataType, 1); IPS_SetVariableProfileText($dataType, null, ' %'); break; default: } } // ---------------------------------------------------------------------------------------------------------------- function strToHex ($str) { $result = ''; for ($i = 0; $i < strlen($str); $i++) { $result .= strtoupper(((strlen(dechex(ord($str[$i]))) < 2) ? '0' : '').dechex(ord($str[$i]))); } return $result; } // ---------------------------------------------------------------------------------------------------------------- function hexToStr($hex) { $string=''; for ($i=0; $i < strlen($hex)-1; $i+=2) { $string .= chr(hexdec($hex[$i].$hex[$i+1])); } return $string; } ?>