public static function construct($attribute_id, $datatype_id)
 {
     $element = new self();
     $element->setAttributeId($attribute_id);
     $element->setDatatypeId($datatype_id);
     return $element;
 }
 public static function constructSuccess($attribute_id, $datatype_id, $value)
 {
     $record = new self();
     $record->setAttributeId($attribute_id);
     $record->setStatus(ZCLStatus::SUCCESS);
     $record->setDatatypeId($datatype_id);
     $record->setValue($value);
     return $record;
 }
 public static function constructReported($attribute_id, $datatype_id, $minimum_reporting_interval, $maximum_reporting_interval, $reportable_change)
 {
     $frame = new self();
     $frame->setAttributeId($attribute_id);
     $frame->setDirection(self::DIRECTION_SERVER_TO_CLIENT);
     $frame->setDatatypeId($datatype_id);
     $frame->setMinimumReportingInterval($minimum_reporting_interval);
     $frame->setMaximumReportingInterval($maximum_reporting_interval);
     $frame->setReportableChange($reportable_change);
     return $frame;
 }